← Все статьи DaVinci Resolve API
DaVinci Resolve APIНовичокСтарт

Как проверить доступность Resolve Scripting API

Диагностика импорта DaVinciResolveScript, прямого подключения к Resolve и запасной вариант через Fusion

Рабочий диагностический скрипт помогает быстро понять, где проблема: Python не видит модуль, Resolve не запущен, scriptapp не возвращает объект или проект не открыт.

API

Resolve Scripting API

Язык

Python

Resolve

19–20+

Требуется

Запущенный Resolve

Синтаксис

fusion = dvr.scriptapp("Fusion")
resolve = fusion.GetResolve()

Параметры

  • "Fusion" — дополнительный объект приложения, который может вернуть Resolve через GetResolve().

Возвращает

Объект Resolve, если прямое или Fusion-подключение успешно.

Полный рабочий пример Pythonкод можно использовать как основу скрипта
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()

print("Python:", sys.executable)
print("Module:", getattr(dvr, "__file__", "unknown"))

resolve = dvr.scriptapp("Resolve")

if not resolve:
    fusion = dvr.scriptapp("Fusion")
    if fusion:
        resolve = fusion.GetResolve()

if not resolve:
    raise RuntimeError("Resolve API object is unavailable")

print("Product:", resolve.GetProductName())
print("Version:", resolve.GetVersionString())

Документация

Что проверяет диагностика

Скрипт выводит путь к Python, путь к модулю DaVinciResolveScript и пробует получить объект Resolve. Это позволяет отделить проблему окружения от ошибки прикладного кода. Если модуль импортируется, но resolve не появляется, значит Python уже настроен, а проблема находится в соединении с запущенным приложением.

Зачем нужен Fusion запасной вариант

В некоторых конфигурациях объект Resolve можно получить через Fusion object: scriptapp("Fusion") и fusion.GetResolve(). Это обычный резервный способ получить объект Resolve, который встречается в практических интеграциях с Resolve Scripting API.

Как читать результат

Если скрипт напечатал название продукта и версию, API доступен. Если ошибка возникает на импорте, нужно проверить папки Developer/Scripting/Modules. Если импорт прошёл, но объект Resolve не получен, проверьте, открыт ли DaVinci Resolve и разрешено ли выполнение скриптов.

Когда запускать

Диагностику удобно держать отдельным файлом и запускать перед настройкой новой машины, переносом проекта, обновлением Resolve или переходом на другой Python. Она не меняет проект, не импортирует файлы и не запускает рендер.

Разбор примера

1

Печатаем окружение

sys.executable и путь к модулю помогают понять, каким Python запускается скрипт и откуда импортирован Resolve API.

2

Пробуем прямое подключение

Первый рабочий вариант — dvr.scriptapp("Resolve"). Именно его обычно используют в production-скриптах.

3

Проверяем Fusion-путь

Если прямой объект не вернулся, скрипт пробует получить Resolve через Fusion. Это полезно на некоторых установках Resolve.

4

Фиксируем результат

GetProductName() и GetVersionString() подтверждают, что получен настоящий объект приложения, а не пустой результат.

Особенности Resolve API

  • Запускайте диагностику тем же Python, которым будут запускаться рабочие скрипты.
  • Запасной вариант через Fusion нужен только если прямой scriptapp("Resolve") не дал объект.
  • GetProductName() и GetVersionString() безопасны: они только читают информацию приложения.
  • Если Resolve закрыт, рабочий объект обычно не возвращается.

Частые ошибки

Модуль найден, но объект Resolve недоступен

Причина: Python настроен, но соединение с приложением не установлено.

Решение: Запустите Resolve до запуска скрипта и проверьте права/окружение.

Fusion тоже не возвращает Resolve

Причина: Resolve не запущен или API недоступен в текущей конфигурации.

Решение: Перезапустите Resolve и выполните диагностический файл из того же окружения, где будет основной скрипт.

Работает один Python, но не другой

Причина: Разные интерпретаторы имеют разные sys.path и переменные окружения.

Решение: Зафиксируйте один Python для всех скриптов и настройте пути именно в нём.

Следующий шаг

Если диагностика прошла, можно переходить к созданию проекта или импорту медиа.

Связанные статьи API