プログラム初心者なので不備不足があったら申し訳ございません。
使用バージョン:
DavinciResolve19
Python3.12
結論
- そもそも内部スクリプトやコンソール実行時は、Resolveオブジェクトを取得する必要はない
- つまり
resolve = GetResolve()
やresolve = dvr_script.scriptapp("Resolve")
を書かなくていい - いきなり
fusion = resolve.Fusion()
と記述してもFusionオブジェクトが取得できる - あえて記述したいなら
resolve = app.GetResolve()
が使える
- つまり
問題
- DavinciResolve無償版でスクリプトを動かそうとしたが、最初のResolveオブジェクトの取得がうまくいかなかった。
- 中身が
None
のResolveオブジェクトが返ってきてしまう。
そのため、たとえば下のコードではfusion = resolve.Fusion()
が通らない。
- 中身が
公式ドキュメントのサンプルコード
import DaVinciResolveScript as dvr_script
resolve = dvr_script.scriptapp("Resolve")
fusion = resolve.Fusion()
projectManager = resolve.GetProjectManager()
projectManager.CreateProject("Hello World")
- 有償版(DavinciResolveStudio)では、環境設定から外部スクリプトの使用許可を「ローカル」以上にすることで解決できるようだが、無料版にその設定項目はない。
解決
- 内部スクリプトやコンソールから実行する場合は、最初からResolveオブジェクトが使える状態で置いてあるようなので、そのまま呼び出して使用することができる。改めて取得する必要はない。
- 以下のようにResolveオブジェクト取得の行を無効化すれば問題なく実行できるはず。
公式ドキュメントのサンプルコード:Resolveオブジェクト取得の行を無効化
import DaVinciResolveScript as dvr_script
#resolve = dvr_script.scriptapp("Resolve")
fusion = resolve.Fusion()
projectManager = resolve.GetProjectManager()
projectManager.CreateProject("Hello World")
- もしResolveオブジェクト取得の行を記載する必要がある場合は、代替として
app.GetResolve()
が使える。
公式ドキュメントのサンプルコード:Resolveオブジェクト取得の行を代替
import DaVinciResolveScript as dvr_script
resolve = app.GetResolve()
fusion = resolve.Fusion()
projectManager = resolve.GetProjectManager()
projectManager.CreateProject("Hello World")
取り急ぎ以上です。