DaVinci Resolve18.6でマーカーをYoutube向けチャプターとして出力する方法(edlファイル→Pythonスクリプト)
当サイトではアフィリエイト広告を利用しています
Insta360x3を使い始めてからDaVinci Resolveで撮影した動画の切り貼りをしている中、Youtubeに投稿するにあたりチャプターを作成したいと考えました。
DaVinci ResolveでYoutubeに直接アップロードするのであれば自動でマーカーをチャプターにすることができるのですが、テキストとして出力することはそのままではできません。
今回はマーカーをedlファイルとして書き出し、それをPythonスクリプトで抽出することでチャプター名と時刻をテキストとすることができました。
環境
- Windows 10
- DaVinci Resolve 18.6 (無償版)
DaVinci Resolve API
DaVinci ResolveにはAPIがあり、情報は少ないもののLua、Python2、Python3で記述ができます。
Luaであれば特に設定は必要なく、Pythonであれば環境変数などの設定をすることで利用ができるようで、C:\ProgramData\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting\Readme.txt
に使い方が記載されています。
私はLuaに疎くPythonで記述を試みたのですが、環境変数の設定を行っても正常にPythonスクリプトが動作せず、APIによる直接の操作をあきらめました。環境変数の設定を行っても以下のスクリプトで戻り値がNone
となってしまったので。
import DaVinciResolveScript as dvr_script
resolve = dvr_script.scriptapp("Resolve")
edlファイルのエクスポート
API操作をあきらめて、マーカーの名前と時刻をいったん外部にエクスポートできないか試したところ、以下の方法でedlファイルとして出力できました。
まず、Edit画面においてマーカーを設定して名前をつけておきます。その後、同じくEdit画面で以下の手順を行います。
1. 開始タイムコードの設定
- メディアプールタブからTimeline 1に対して右クリック
- 「タイムライン」を選択
- 「開始タイムコードを設定」を選択
01:00:00:00
→00:00:00:00
に変更する。
これでマーカーの時刻が0スタートになりYoutubeと同期できます。
2. マーカーのエクスポート
- メディアプールタブからTimeline 1に対して右クリック
- 「タイムライン」を選択
- 「書き出し」を選択
- 「タイムラインマーカーからedl」を選択
- edlファイルを保存する
これで、例えば以下のような要素を持つedlファイルが取得できます。4つの自国のうち1つ目がマーカーの開始時刻で、|M:
に続くのがマーカー名となっているようです。
002 001 V C 00:00:05:00 00:00:05:01 00:00:05:00 00:00:05:01
|C:ResolveColorBlue |M:GPSログ |D:1
Pythonスクリプトによる抽出・変換
以下のように正規表現を使ってマーカー時刻とマーカー名を抽出します。
EDL_FILE = "data/Timeline 1.edl"
CH_FILE = "data/TimeLine 1.txt"
import re
# ?使って最短マッチング
# hh:mm:ssが欲しいので4つ目のmsecはグループから外す
pattern = r"^.+?(?P<time>\d{2}:\d{2}:\d{2}):\d{2}.+?\|M:(?P<text>.+?)\s+\|D:.+?$"
repat = re.compile(pattern, re.MULTILINE | re.DOTALL)
chap_list = []
with open(EDL_FILE, encoding="utf-8") as f:
s = f.read()
for m in repat.finditer(s):
chap_list.append((m.group("time"), m.group("text")))
# 書き込み
print(chap_list)
with open(CH_FILE, "w", encoding="utf-8") as f:
for ch in chap_list:
f.write(f"{ch[0]} {ch[1]}\n")
これでテキストファイルとして以下のように時刻とマーカー名を出力できます。あとはこれをYoutube動画の概要に貼り付けてやればスキップができるようになります。
00:00:00 タイトル
00:00:05 GPSログ
00:00:19 平井大橋出発
00:02:29 斜め上前方から撮影
00:04:27 左斜め下後方から撮影
...
01:00:49 左斜め下後方から撮影
01:01:20 右肩に担いで後方から撮影
01:03:55 右後方下から撮影
01:04:28 右肩に担いで後方から撮影
01:19:04 浮間舟渡到着
動画例
以下の動画のチャプターリストは上記手順で出力したものになります。
まとめ
- DaVinci ResolveでマーカーをYoutubeのチャプターに変換
- APIでは上手くいかず、edlのエクスポートとPythonによる変換を行った
- 正常にマーカーの時刻とテキストを出力することができた