Как подключиться к DaVinci Resolve через Python API
Базовый вход в Resolve Scripting API: импорт модуля, scriptapp("Resolve") и проверка активного проекта
Разбираем рабочий стартовый шаблон для Python-скрипта: как найти модуль DaVinciResolveScript, получить объект Resolve, проверить версию программы, Project Manager и текущий проект.
API
Resolve Scripting API
Язык
Python
Resolve
19–20+
Требуется
Запущенный Resolve
Синтаксис
resolve = dvr.scriptapp("Resolve")Параметры
- • "Resolve" — имя приложения, к которому подключается DaVinciResolveScript.
Возвращает
Объект Resolve или None, если приложение недоступно для Scripting API.
import os
import sys
from pathlib import Path
def import_resolve_module():
try:
import DaVinciResolveScript as dvr
return dvr
except ImportError:
search_paths = [
os.environ.get("RESOLVE_SCRIPT_API", ""),
os.environ.get("RESOLVE_MODULES", ""),
r"C:\\ProgramData\\Blackmagic Design\\DaVinci Resolve\\Support\\Developer\\Scripting\\Modules",
"/opt/resolve/Developer/Scripting/Modules",
"/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules",
str(Path.home() / "Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules"),
]
for path in search_paths:
if path and os.path.isdir(path) and path not in sys.path:
sys.path.append(path)
import DaVinciResolveScript as dvr
return dvr
dvr = import_resolve_module()
resolve = dvr.scriptapp("Resolve")
if not resolve:
raise RuntimeError("DaVinci Resolve не найден. Запустите Resolve и проверьте доступ к Scripting API.")
print("Resolve version:", resolve.GetVersionString())
project_manager = resolve.GetProjectManager()
project = project_manager.GetCurrentProject()
if not project:
raise RuntimeError("Откройте проект DaVinci Resolve перед запуском скрипта.")
print("Current project:", project.GetName())Документация
Что делает скрипт
Сначала код подключает официальный Python-модуль Resolve Scripting API. Затем через scriptapp("Resolve") получает главный объект приложения, выводит версию Resolve и переходит к Project Manager. В конце скрипт проверяет, открыт ли проект. Это нормальная безопасная точка входа: если Resolve не запущен или проект не открыт, ошибка появляется сразу, а не в середине импорта или рендера.
Почему нужен поиск модуля
На разных системах модуль DaVinciResolveScript может не попадать в стандартный Python path. Поэтому пример сначала пробует обычный импорт, а затем добавляет типовые папки Windows, Linux и macOS. Такой подход повторяет практический bridge-подход: скрипт не привязан к одному компьютеру и проще переносится между рабочими станциями.
Как использовать дальше
Этот блок можно ставить в начало почти любой интеграции: создание проекта, импорт файлов в Media Pool, создание Timeline, чтение FPS, перебор клипов и запуск Render Queue. После получения project уже можно вызывать project.GetMediaPool(), project.GetCurrentTimeline() и методы Deliver page.
Практическая основа
Код показывает базовую схему подключения к Resolve Scripting API: импорт модуля, получение объекта Resolve, проверку текущего проекта и чтение активной Timeline. Такой блок удобно использовать как стартовую часть собственных скриптов автоматизации.
Разбор примера
Подключаем модуль
Скрипт сначала пробует импортировать DaVinciResolveScript напрямую, а затем добавляет стандартные папки модулей Resolve для Windows, Linux и macOS.
Получаем объект Resolve
scriptapp("Resolve") возвращает главный объект приложения. Если объект не получен, дальнейшие вызовы API выполнять нельзя.
Проверяем версию
GetVersionString() нужен для быстрой диагностики: если версия выводится, Python действительно видит запущенный Resolve.
Переходим к проекту
Через GetProjectManager() и GetCurrentProject() скрипт проверяет, что пользователь открыл проект перед запуском автоматизации.
Особенности Resolve API
- DaVinci Resolve должен быть запущен до вызова scriptapp("Resolve").
- Если импорт модуля падает, проверьте путь к Developer/Scripting/Modules.
- GetCurrentProject() возвращает None, если проект не открыт.
- Для запуска из внешнего Python используйте ту же разрядность и окружение, где доступен модуль Resolve.
Частые ошибки
DaVinciResolveScript не импортируется
Причина: Python не видит папку Developer/Scripting/Modules.
Решение: Проверьте RESOLVE_SCRIPT_API, RESOLVE_MODULES или добавьте стандартный путь Resolve в sys.path.
resolve равен None
Причина: DaVinci Resolve не запущен или Scripting API недоступен текущему процессу.
Решение: Запустите Resolve, откройте проект и повторите запуск тем же Python-окружением.
project равен None
Причина: Resolve открыт, но активный проект не выбран.
Решение: Откройте нужный проект вручную или загрузите его через Project Manager.
Следующий шаг
После подключения обычно получают Project Manager и текущий проект.
Связанные статьи API
Старт
Как проверить доступность Resolve Scripting API
Рабочий диагностический скрипт помогает быстро понять, где проблема: Python не видит модуль, Resolve не запущен, scriptapp не возвращает объект или проект не открыт.
Проекты
Как получить текущий проект DaVinci Resolve через Python
Показываем рабочий способ получить открытый проект Resolve и активный Timeline. Этот код нужен перед импортом медиа, чтением настроек таймлайна, экспортом аудио и запуском рендера.
Проекты
Как создать проект DaVinci Resolve через Python API
Рабочий пример показывает, как через Project Manager создать проект, не плодить дубликаты и загрузить существующий проект, если CreateProject не создал новый.

