Davinci Resolve Scripting APIことはじめ

windowsでやりました。(1/14 末尾に追記。macでもやりました。)

資料

  • C:\ProgramData\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting\README.txt

ここにREADMEファイルがあります。Changelogとしての有志の過去ログもあります。

見やすくしたページはこちらになります。

extremraym.com

ここに沿ってやっていきます。

環境変数

RESOLVE_SCRIPT_API="%PROGRAMDATA%\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting"
RESOLVE_SCRIPT_LIB="C:\Program Files\Blackmagic Design\DaVinci Resolve\fusionscript.dll"
PYTHONPATH="%PYTHONPATH%;%RESOLVE_SCRIPT_API%\Modules"

Windowsの環境変数はこうです。ただPYTHONPATHが%RESOLVE_SCRIPT_API%をうまく解決しなかったので

PYTHONPATH=C:\ProgramData\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting\Modules

としました。(環境変数のロード順が問題になってると思うんだけど、Windows11で環境変数の順番変えるのどうやるんだろう?)

実行環境

ファイルを

  • C:\Users\ユーザー\AppData\Roaming\Blackmagic Design\DaVinci Resolve\Support\Fusion\Scripts\Utility\test.py

に配置すると以下の画像の位置に配置されます。「test」を選択するとスクリプトが実行されます。

また、「Console」を選択すると以下のコンソール画面が表示されます。

scriptからprintなどしてデバッグしたいときはここにprintの結果やエラーログが出ます。 上は

print("Hello Davinci.")

とした結果です。

スクリプトの書き方

ドキュメントには

#!/usr/bin/env python
import DaVinciResolveScript as dvr_script
resolve = dvr_script.scriptapp("Resolve")
fusion = resolve.Fusion()
projectManager = resolve.GetProjectManager()
projectManager.CreateProject("Hello World")

と書かれているが、dvr_script.scriptapp("Resolve")がどうもオブジェクトを取得できていない様子。

仕方ないので

  • C:\ProgramData\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting\Examples\python_get_resolve.py

を取ってきてtest.pyと同じ場所に置き、以下のようにしました。

from python_get_resolve import GetResolve
resolve = app.GetResolve()
resolve.OpenPage("Edit") # Editモードを選択

ここから始められると思います。

外部から実行する

Claude Codeのようなコーディングエージェントが外部からスクリプトを実行するにはどうすればよいか。

マニュアルには「External scripting using」の設定をすればできる、とあるが、この設定はDavinci Resolve Studio(つまり有料版)でないと表示されないようだ。

davmemos.hatenablog.com

大規模なものを作るときは購入を考えよう。


Macでもやりました

基本的には上記ドキュメントの通りなんですが、MacOS Tahoe 26.2 の環境でDavinci Resolve 19だとドキュメント記載の場所にBlackmagic Designのフォルダが見つかりませんでした。仕方ないので現時点最新のDavinci Resolve20を入れるとフォルダが出てきたのでこれで進めることにしました。

また、所定の場所にスクリプトをおいてもDavinciが認識してくれませんでした。それについては以下で解決しました。

note.com