Урок по DaVinci Resolve API

DaVinci Resolve API: настройка Python и первый скрипт

Официальный README Blackmagic полезен, но написан как техническая памятка. В этом уроке разложим его по-человечески: что нужно установить, где лежит API, как подключить Python и как запустить первый скрипт, который обращается к DaVinci Resolve.

Шаг 1
Подготовить окружение

Python, путь к SDK и библиотека Fusion Script.

Шаг 2
Подключиться к Resolve

Запустить программу и получить объект Resolve.

Шаг 3
Создать первый проект

Проверить, что API реально отвечает.

Что такое DaVinci Resolve API

DaVinci Resolve API — это интерфейс для управления Resolve через скрипты. Через него можно работать с проектами, медиапулом, таймлайнами, клипами, маркерами, рендером, Fusion-композициями и частью AI-функций Studio.

В официальном SDK Blackmagic есть сам README, модуль DaVinciResolve.py для подключения из Python и папка с примерами. README не заменяет справочник по каждому методу, но отлично подходит как стартовый урок по настройке.

Что нужно перед стартом

Для работы со скриптами DaVinci Resolve должен быть установлен и запущен. Также нужен один из языков:

  • Python 3.6+ 64-bit — самый удобный вариант для внешних скриптов.
  • Lua 5.1 — подходит для сценариев в стиле Fusion.
  • Python 2.7 64-bit — старый вариант, использовать его в новых проектах уже не стоит.

В настройках Resolve можно ограничить запуск скриптов только консолью или разрешить доступ из локальной сети. Сетевой доступ включайте осознанно: скрипты получают возможность управлять Resolve извне.

Где лежит официальный SDK

Чтобы внешний Python увидел модуль DaVinci Resolve, нужно знать три пути: папку API, библиотеку Fusion Script и путь к Python-модулям. В официальном README они разделены по системам.

Windows

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\"

macOS

RESOLVE_SCRIPT_API="/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting"
RESOLVE_SCRIPT_LIB="/Applications/DaVinci Resolve/DaVinci Resolve.app/Contents/Libraries/Fusion/fusionscript.so"
PYTHONPATH="$PYTHONPATH:$RESOLVE_SCRIPT_API/Modules/"

Linux

RESOLVE_SCRIPT_API="/opt/resolve/Developer/Scripting"
RESOLVE_SCRIPT_LIB="/opt/resolve/libs/Fusion/fusionscript.so"
PYTHONPATH="$PYTHONPATH:$RESOLVE_SCRIPT_API/Modules/"

На некоторых ISO-установках Linux путь может отличаться: вместо /opt/resolve иногда используется /home/resolve.

Первый Python-скрипт

Самый простой тест — получить объект Resolve, обратиться к Project Manager и создать новый проект. Перед запуском убедитесь, что DaVinci Resolve уже открыт.

#!/usr/bin/env python
import DaVinciResolveScript as dvr_script

resolve = dvr_script.scriptapp("Resolve")
fusion = resolve.Fusion()
project_manager = resolve.GetProjectManager()
project_manager.CreateProject("Hello World")

Если проект Hello World создался, значит Python видит модуль, Resolve отвечает, а базовое подключение к API работает.

Где хранить пользовательские скрипты

Resolve при запуске сканирует специальные папки Fusion Scripts и показывает найденные скрипты в меню Workspace → Scripts. Скрипт можно положить в общую папку для всех пользователей или в папку конкретного пользователя.

  • Utility — скрипт доступен на всех страницах Resolve.
  • Comp или Tool — скрипт доступен во Fusion.
  • Edit, Color, Deliver и другие папки — скрипт привязан к конкретной странице.

Основные пути

Windows, все пользователи:
%PROGRAMDATA%\Blackmagic Design\DaVinci Resolve\Fusion\Scripts

Windows, текущий пользователь:
%APPDATA%\Roaming\Blackmagic Design\DaVinci Resolve\Support\Fusion\Scripts

Linux, текущий пользователь:
$HOME/.local/share/DaVinciResolve/Fusion/Scripts

macOS, текущий пользователь:
/Users/<UserName>/Library/Application Support/Blackmagic Design/DaVinci Resolve/Fusion/Scripts

Запуск через Console

Для быстрых проверок удобно использовать консоль внутри Fusion Page. Она позволяет выполнять простые команды, смотреть свойства объектов и быстро проверять, что возвращает тот или иной метод.

Но для нормальной автоматизации удобнее писать отдельные Python-файлы во внешнем редакторе: так проще хранить код, переиспользовать функции и подключать свои библиотеки.

Headless-режим: запуск без интерфейса

DaVinci Resolve можно запустить без графического интерфейса через параметр -nogui. Интерфейс при этом не открывается, но API продолжает работать. Это полезно для серверных сценариев, автоматического рендера и пайплайнов, где Resolve выступает как обработчик проектов.

resolve -nogui

Как устроена объектная модель

Главная идея API простая: сначала получаем объект Resolve, потом через него добираемся до нужной части программы. Базовая цепочка выглядит так:

Resolve
  ├─ Fusion()
  ├─ GetMediaStorage()
  └─ GetProjectManager()
        └─ GetCurrentProject()
              ├─ GetMediaPool()
              ├─ GetCurrentTimeline()
              └─ AddRenderJob()

В справочнике API уже имеет смысл отдельно разбирать классы Resolve, ProjectManager, Project, MediaPool, Timeline и TimelineItem. Этот урок нужен именно для первого входа: чтобы скрипты запустились и стало понятно, откуда начинается работа.

Что дальше изучать

После настройки API логично двигаться по практическим задачам:

  • создание проекта через ProjectManager;
  • импорт медиа через MediaStorage и MediaPool;
  • создание таймлайна и добавление клипов;
  • работа с маркерами, цветами клипов и метаданными;
  • настройка рендера и запуск очереди;
  • автоматизация Fusion-композиций и генераторов.

Так README Blackmagic превращается не в сухой справочник, а в нормальный стартовый урок, после которого можно переходить к полноценной энциклопедии API и рабочим примерам.