DaVinci Resolveで動画撮影時のISOや焦点距離などのメタデータを画像で出力する方法を説明します。
目次
撮影時の設定を動画に表示させたい
↑こんな感じで、撮影時の設定を動画に表示する方法です。
SUMIZOONさんのページでこれの作り方を紹介されてまして、最初はこの通りやろうとしたのですが、BRAWだとどうもうまく行かないようなので別の方法で実現させました。
ただ、いろいろとツール入れたりコマンド叩いたりと難易度は高めです。
この記事の前提
- Windows 11(MacでもPythonとかうまく設定できればいけると思いますが…)
- DaVinci Resolve Studio 18(無償版だとスクリプトが使えないようです)
- BRAWのみ
おおまかな実現方法
どうやって実現しているか大まかに書くと…
- DaVinci ResolveのAPIをPythonで操作してBRAWのメタデータを取得
- PythonのPillowモジュールでPNG画像を生成
- 手動でタイムラインにできた画像を重ねる
こんな感じで実現します。
注意点としてはBRAWにしか対応していないので、他のH.265とかの動画ファイルではほとんどの情報が出力されません(FPSぐらいはでたかな?)。DaVinci Resolveの機能を使っているのでDaVinci Resolveが取得できるメタ情報しか取得できないという理由です。
お約束
お約束ではありますが今回の方法を試される場合は自己責任でお願いいたします。
今回ファイル操作を行う作業になります。何らかの原因でデータの消失がないとも言えません。利用する際には素材のバックアップをした上で行ってください。
Chocolateyのインストール
DaVinci Resolveを自動操縦するためにプログラミング言語のPython開発環境をインストールしますが、なぜか公式サイトにあるインストーラーでインストールしてもDaVinci ResolveがPythonを認識できないので Chocolatey
というパッケージ管理ソフトでインストールします。
そんなわけでChocolatey自体をまずインストールしないといけません。
https://chocolatey.org/install
サイトにアクセスして Now run the following command
の横のクリップボードアイコンを押してこのコマンドをコピーします。
そしてWindowキー + X、そしてAを押して管理者モードでWindows PowerShellを起動します。
空いているところで右クリックするとコマンドがぱらぱらーと入るはずです。Enter押すとChocolateyのインストールが行われます。
Pythonのインストール
次にPythonをインストールします。同じ画面で以下のコマンドを入力してEnterを押します。もしかしたら一度この画面を閉じて再度 Windows + X、そのあとAを押して開き直さないとだめかもしれません。
choco install -y python3
文字がつらつら出てきて
PS C:\Windows\System32>
という表示で止まっていたらインストールは終わっています。
この画面は閉じてOKです。
ちなみにDaVinci Resolve 18からPythonのバージョン3.10にも対応するようになりました。
環境変数の設定
次にDaVinci Resolveを操作する為のモジュールをPython側が認識できるように環境変数を設定します。
ここから辺からはDaVinci Resolveをインストールした先にある C:\ProgramData\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting\README.txt
に説明が書いてあります。それをちょっと楽できるようにアレンジしたやり方を書いていきます。
今度はWindows + X
を押してI
を押して、通常のユーザーモードでPowerShellを開きます。
以下3行をまとめてコピーして、また空いているところで右クリックして貼り付けます。警告が出てきますが、改行含めて貼り付けるとコマンドが実行されてしまうので、このような表示が出ます。
強制的に貼り付け
で3行のコマンドが順次実行されます。最後の一行でEnter押し忘れると最後の行だけ実行されてない場合があるので念のために1回Enter押しておいたがよいでしょう。
[Environment]::SetEnvironmentVariable('RESOLVE_SCRIPT_API','%PROGRAMDATA%\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting', 'User')
[Environment]::SetEnvironmentVariable('RESOLVE_SCRIPT_LIB','C:\Program Files\Blackmagic Design\DaVinci Resolve\fusionscript.dll', 'User')
[Environment]::SetEnvironmentVariable('PYTHONPATH','%PYTHONPATH%;C:\ProgramData\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting\Modules', 'User')
必要Pythonモジュールのインストール
次に今回のメタデータの画像を生成するために使うPillowというPythonから呼び出して使うモジュールをインストールします。以下の内容をコピーしてPowerShellで右クリックしてEnter押します。
pip install Pillow
DaVinci Resolveの環境設定
用意するスクリプトをDaVinci Resolveで認識できるようにDaVinci Resolveの環境設定を変更します。
DaVinci Resolveを起動してシステム
> 一般
の中の 外部スクリプトに使用
を ローカル
にします。
スクリプトを作成(2022-08-20変更)
C:\ProgramData\Blackmagic Design\DaVinci Resolve\Fusion\Scripts\Comp
または %APPDATA%\Blackmagic Design\DaVinci Resolve\Support\Fusion\Scripts\Comp
に create-metag.py
という名前でテキストファイルを作ってください。そして以下の内容を貼り付けて保存してください。
これでやっと準備完了です。DaVinci Resolveを起動している場合は一度閉じて、再度立ち上げ直してください。
注意点
実行方法の説明の前に注意点です。
今回のスクリプトはメディアプールで開いているビンに登録されているクリップに対して、同名で拡張子だけがpngにしたファイルを作ります。ファイルの作成先はクリップのファイルと同じフォルダになります。もし既に同名のpngファイルがあれは上書しますので、そこだけはご注意ください。
最初は実験に使う素材だけが入ったフォルダを作って、それをメディアプールに入れてこれからの操作を試すことをお勧めします。
実行方法(2022-08-11変更)
DaVinci Resolveを起動したら メディアページ
を表示します。メタデータの画像を出力したいクリップをどれか一つのビンに登録します。今回のスクリプトはビンに入っているすべてのクリップに対して画像を作成します。
ここから画像ファイルを作っていきます。前項に書いたように同名のファイルがあると上書きしますのでご注意ください。
メニューの ワークスペース
> スクリプト
> Comp
> create-metag
を選びます。メディアプールに自動的に作成した画像が登録されます。元の画像は動画と同じフォルダにあります。
これらをタイムラインに並べてみます。
このスクリプトは固定で900×400のサイズで画像生成してますので、適当に縮小させたり透過させてください。
こんな感じで。一つ設定したらエディットページでctrl + Cでコピーして、alt + Vで他の画像にも属性を適用するとよいでしょう。
撮影時の情報を振り返るのは勉強になる
こんな感じで撮影時の絞りとか焦点距離とか使っているレンズが確認できると、自分が撮った動画を振り返るのにとても便利です。「おっ、今のはバシっとしていい感じだったぞ」とか言うときに「なるほど結構しっかり絞ってるな」とメタデータを見ればわかるので、こういうときはこういう設定で取ればいいなとか、逆にイマイチな場合もこうすれば良かったなみたいなのがわかります。これは結構勉強になりますので、撮影する人にはお勧めしたいです。
DaVinci ResolveをPythonで操作して出来ること
このようにしてPythonでDaVinci Resolveを操作する環境ができれば、他にもいろんな自動化の道が開けてくると思います。Pythonから何が出来るかはさきほども紹介したようにインストール先のREADMEの下の方に一覧があるのでそれをみてみるとよいと思います。
C:\ProgramData\Blackmagic Design\DaVinci Resolve\Support\Developer\Scripting\README.txt
Macは /Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/README.txt
ただですね…残念ながらスタイビライザーを掛けるというのはできなさそうです。全部のクリップにスタビライザー掛けるといのうが自動で出来れば良かったんですが…。
この出来ることもDaVinci Resolveのバージョンアップ毎に少しずつ増えては来ているので、いずれは出来るようになることを期待して待っておこうと思います。
ちなみに他にもいくつか役に立たない(笑)スクリプトを作ってますので、気になる方は参考に覗いてみてください。
https://github.com/a-tak/DavinciScripts
それではA-takでした。