DaVinci Resolve レンダリング終了時にメール通知
DaVinci Resolve と Pythonを用いて、レンダリング終了時に通知を送ることができます。
とりあえずWindowsで動作確認はしています。Macは持っていないので…
今回はレンダリング・監視・メール送信をするスクリプトを作りましたが、DaVinciでは他に様々な処理をPythonのコードベースで行えます。
操作できる項目は、マニュアルにも載っています。ぜひそちらもご参照ください。
前提条件
有償版のDaVinci Resolveを使用している
準備 (所要時間)
DaVinci Resolve の環境設定 (2分)
Pythonをインストール (5分)
OSの環境変数を設定 (8分)
(必要に応じて)送信用のGmailアカウントを作成
アプリパスワード取得 (3分)
Pythonソース設定など (10分)
DaVinci Resolve の環境設定
左上、DaVinci Resolve -> 環境設定 をクリック
一般 -> 外部スクリプトに使用 を "ローカル" に変更
DaVinciを閉じ、ソフト再起動で反映される
Pythonをインストール
Python 3.6以上をインストール
(動作確認は3.11でしています)
Python公式サイト
Python 3.12 をダウンロード(画面中央)
赤線部に注意してインストール
インストールしたらWindowsを再起動
OSの環境変数を設定
コマンドプロンプトで"where python"と入力し、Enter
where python
インストールしたPythonの場所をコピー
(この場合は、"C:\Program Files\Python311\python.exe")
コントロールパネルから、「環境変数を編集」を開く
PYTHONPATHを新規登録
同様に、RESOLVE_SCRIPT_API / RESOLVE_SCRIPT_LIBも新規登録
RESOLVE_SCRIPT_API
C:/ProgramData/Blackmagic Design/DaVinci Resolve/Support/Developer/Scripting
RESOLVE_SCRIPT_LIB
C:\Program Files\Blackmagic Design\DaVinci Resolve\fusionscript.dll
終わったらOKを押してウィンドウを閉じる
→Windows再起動
(必要に応じて)送信用のGmailアカウントを作成
Gmailを持っていない場合、Pythonのコードにアカウントのパスワードを記述するのに抵抗がある場合は、これ用のアカウントを取得してください。
アプリパスワード取得
取得したら、アプリパスワードを取得する
Googleアカウントを開く
https://myaccount.google.com/
"アプリ パスワード"と検索
適当な名前でパスワードを取得し、コピーして控えておく
Pythonソース設定など
下記のPythonコードコピー
Visual Studio, メモ帳等で開く
import SETUP
import time
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from datetime import datetime
def SEND_MAIL(subject, body):
global sender_email, password, receiver_email
message = MIMEMultipart()
message["From"] = sender_email
message["To"] = receiver_email
message["Subject"] = subject
message.attach(MIMEText(body, "plain"))
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as server:
server.login(sender_email, password)
server.send_message(message)
# メール送信初期設定
sender_email = "送信用のメールアドレスを設定"
password = "取得したアプリパスワードを貼り付け (スペースも含める)"
receiver_email = "通知を送りたいメールアドレスを入力"
# DaVinci設定
resolve = SETUP.scriptapp("Resolve")
projectManager = resolve.GetProjectManager()
project = projectManager.GetCurrentProject()
# レンダリング開始
Time = datetime.now()
Time = Time.strftime("%Y-%m-%d %H:%M:%S")
Time = str(Time)
# ---レンダリング開始時のメールを送信しない場合は、下3行を削除---
subject = "♪レンダリング開始♪ | " + Time
body = "レンダリングを開始しました\n終了後、メールで通知が届きます"
SEND_MAIL(subject, body)
# ---レンダリング開始時のメールを送信しない場合は、上3行を削除---
print(Time + "\nStart rendering...")
project.StartRendering(isInteractiveMode = False)
# レンダリング監視
status = True
while status:
status = project.IsRenderingInProgress()
time.sleep(1)
# 完了メール送信
Time = datetime.now()
Time = Time.strftime("%Y-%m-%d %H:%M:%S")
Time = str(Time)
subject = "♪レンダリング完了♪ | " + Time
body = "レンダリングが完了しました"
SEND_MAIL(subject, body)
print(Time + "\nRendering finished")
21~23行目を自分の情報に変更
21: メール送信元のアドレスを設定
22: 21のメアドのアプリパスワードを入力
23: 通知を送信したいメアドを入力
レンダリング”開始時”のメールを送信しない場合は、36~39行目を削除
変更したら保存し、下記ディレクトリに保存
続いて、下記ディレクトリを開く
DaVinciResolveScript.py をコピーし、
に保存。
その際、ファイル名をSETUP.pyとリネーム
こんな感じになればOK
SETUP.pyを開き、1~3行目を次のように変更
2行目だけ変わっています
import sys
import importlib
import os
これで準備完了です
つかってみる
DaVinciで通常通り編集、レンダーキューに追加する
ここまでは通常通りの編集
レンダリングの際は、、、
ワークスペース -> コンソールを開くと、こんなウィンドウが表示される
ワークスペース -> スクリプト -> SEND_MAIL
をクリックすると、レンダリングが開始する
レンダリング開始時刻がコンソール上に表示され、
→開始通知メールを送信
→レンダリング終了待機
→終了後、再度メール通知を送信
と処理が続く
下記も参考にさせていただきました
ありがとうございました
コードの説明
ここから先は
この記事が気に入ったらサポートをしてみませんか?