書き出しするとき、YouTube 設定でマーカーをチャプターにしてくれる機能がある。書き出したあとに再生成とかしたいので、どこかから普通にテキストとして書き出して欲しいが、たぶんできない? ので他の方法でなんとかした。

  1. マーカーのあるタイムラインを選択して右クリック
    • [タイムライン] → [書き出し] → [タイムラインマーカーからEDL…] を選択して保存
  2. 以下のスクリプトを実行する
#!/usr/bin/env ruby

TC_POS = 0
TARGET_COLOR = "ResolveColorBlue"

chapters = []
tc = nil
while l = gets
    l.chomp!
    case l
    when /(\d\d):(\d\d):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d):(\d\d) (\d\d):(\d\d):(\d\d):(\d\d)/
        tc = Regexp.last_match.captures.each_slice(4).to_a[TC_POS].map(&:to_i)
    when / \|C:(.+?) \|M:(.+?) \|/
        color, name, *_ = *Regexp.last_match.captures
        if color == TARGET_COLOR
            chapters << {
                name: name,
                color: color,
                tc: tc,
            }
        end
    end
end


remove_hh = chapters.map {|c| c[:tc][0] }.uniq.size == 1

chapters.each do |c|
    c[:tc].pop # frame
    if remove_hh
        puts "%02d:%02d %s" % [ *c[:tc][1..], c[:name] ]
    else
        puts "%02d:%02d:%02d %s" % [ *c[:tc], c[:name] ]
    end
end
  1. トップ
  2. tech
  3. DaVinci Resolve のマーカーから YouTube のチャプターを書き出した後に生成する