見出し画像

【DaVinci Resolve API】メディアプール内のText+のクリップ名を取得する方法

まえがき

お久しぶりです。火注ゆかなです。
去年あたりからZennに移行しようかなとか考えつつ、まっっっったく作業進んでませんし、なんならDaVinciResolveからも離れてました。
AC6が面白いのが悪い

今回の内容は非常に短いのですが、おそらく「Text+クリップでの字幕配置をスクリプトで自動化しよう」と考えた際にひっかかりやすい部分です。
私もだいぶ苦労した記憶があります。

丁度同じように引っかかった方を助けたところなので、備忘録も兼ねて記事にしておきます。




Text+などのクリップ名取得方法

GetName()では取得できない

メディアプール内のクリップ名は通常はMediaPoolItem.GetName()で取得できますが、Text+クリップのように元ファイルを持たない場合は取得できないこともあります。
実行すると「Fusion Title」のようにエフェクトの分類が返されるので、他のクリップと見分けられないんですね。

タイムラインは名前を取得できて、Text+クリップは種類しかわからない
GetName()で返却される情報(エフェクト分類)

自作マクロテンプレートなんかも「Fusion Generator」と返ってくるので、エフェクト一覧から選択できるテンプレートはGetNameだと識別できないと考えて良いでしょう。

「エフェクト」から選んだものは自作マクロでも識別不可


GetClipProperty('Clip Name')で取得できる

Text+クリップのように元ファイルを持たない場合でも、MediaPoolItem.GetClipProperty('Clip Name')で取得できます。

Text+クリップでもクリップ名が取得できた
# Python3での実行例
project = resolve.GetProjectManager().GetCurrentProject()
pool = project.GetMediaPool()
itemlist = pool.GetCurrentFolder().GetClipList()
print(itemlist[0].GetClipProperty('Clip Name'))


ちなみにGetClipProperty()は引数なしで実行すると、クリップの全プロパティ名とその値を格納した辞書型を返却します。

引数なしで実行した場合

これが例えば動画クリップの場合、FPSやファイルの絶対パス、音声のサンプリングレートなどの情報も含まれたりします。
目的のプロパティがわかっているならプロパティ名を指定した方が良いですが、自動化するのに使えそうなプロパティを探したり、デバッグしたい時にはGetClipProperty()を引数なしで実行するのが良いでしょう。


あとがき

このやり方に気付いたの、半年以上前だから思い出すのに時間がかかりました。自作スクリプトを読み直す羽目になりましたし。
やっぱり新しい知見はすぐまとめておいた方が良いですね。

その内、DaVinciResolveで自動化スクリプトを作成したいときはどこで情報を漁るべきかとか、オブジェクトの構造関係がどうなってるのかとか、その辺を動画にするのも良いかもしれません。

それでは、今回の記事も皆様のお役に立てば幸いです。

サポートしていただけるとその分の価値を提供できてるんだなって励みになります。