見出し画像

DaVinci Resolve レンダリング終了時にメール通知

割引あり

DaVinci Resolve と Pythonを用いて、レンダリング終了時に通知を送ることができます。
とりあえずWindowsで動作確認はしています。Macは持っていないので…

今回はレンダリング・監視・メール送信をするスクリプトを作りましたが、DaVinciでは他に様々な処理をPythonのコードベースで行えます。
操作できる項目は、マニュアルにも載っています。ぜひそちらもご参照ください。


前提条件

有償版のDaVinci Resolveを使用している


準備 (所要時間)

  1. DaVinci Resolve の環境設定 (2分)

  2. Pythonをインストール (5分)

  3. OSの環境変数を設定 (8分)

  4. (必要に応じて)送信用のGmailアカウントを作成

  5. アプリパスワード取得 (3分)

  6. 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行目を削除

変更したら保存し、下記ディレクトリに保存

C:\ProgramData\Blackmagic Design\DaVinci Resolve\Fusion\Scripts\Utility

続いて、下記ディレクトリを開く

C:/ProgramData/Blackmagic Design/DaVinci Resolve/Support/Developer/Scripting/Modules

DaVinciResolveScript.py をコピーし、

C:\ProgramData\Blackmagic Design\DaVinci Resolve\Fusion\Scripts\Utility

に保存。
その際、ファイル名をSETUP.pyとリネーム
こんな感じになればOK

SETUP.pyを開き、1~3行目を次のように変更
2行目だけ変わっています

import sys
import importlib 
import os

これで準備完了です


つかってみる

DaVinciで通常通り編集、レンダーキューに追加する
ここまでは通常通りの編集

レンダリングの際は、、、
ワークスペース -> コンソールを開くと、こんなウィンドウが表示される

ワークスペース -> スクリプト -> SEND_MAIL
をクリックすると、レンダリングが開始する

レンダリング開始時刻がコンソール上に表示され、
→開始通知メールを送信
→レンダリング終了待機
→終了後、再度メール通知を送信
と処理が続く

レンダリング中のコンソール画面
メールが届く様子

下記も参考にさせていただきました
ありがとうございました


コードの説明

ここから先は

1,451字

この記事が気に入ったらサポートをしてみませんか?