Как настроить MOV H.265 рендер через DaVinci Resolve API
SetRenderSettings для TargetDir, CustomName, Format, AudioCodec и VideoCodec
Показываем рабочий блок настройки MOV + H.265/HEVC: папка вывода, имя файла, видео, аудио AAC, bitrate и выбор подходящего названия кодека.
API
Resolve Scripting API
Язык
Python
Resolve
19–20+
Требуется
Запущенный Resolve
Синтаксис
result = api_method()Параметры
- • Параметры зависят от конкретного метода Resolve 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",
"/opt/BlackmagicDesign/DaVinciResolve/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
def safe_call(obj, name, *args, **kwargs):
try:
fn = getattr(obj, name, None)
if callable(fn):
return fn(*args, **kwargs)
except Exception:
return None
return None
def get_project_and_timeline():
dvr = import_resolve_module()
resolve = dvr.scriptapp("Resolve")
if not resolve:
raise RuntimeError("DaVinci Resolve API недоступен")
project_manager = resolve.GetProjectManager()
project = project_manager.GetCurrentProject() if project_manager else None
if not project:
raise RuntimeError("Нет открытого проекта DaVinci Resolve")
timeline = project.GetCurrentTimeline()
if not timeline:
raise RuntimeError("Нет активного Timeline")
return resolve, project, timeline
def apply_mov_hevc_settings(project, target_dir: str, base_name: str) -> None:
Path(target_dir).expanduser().mkdir(parents=True, exist_ok=True)
project.SetRenderSettings({
"TargetDir": str(Path(target_dir).expanduser()),
"CustomName": base_name,
"ExportVideo": True,
"ExportAudio": True,
"IndividualClips": False,
"UniqueFilenames": True,
"Format": "mov",
"AudioCodec": "AAC",
"AudioBitrate": 320000,
"AudioSampleRate": 48000,
"AudioBitDepth": 16,
})
for codec in ["H.265", "H265", "HEVC", "H.265 Master", "H.265 Main10"]:
if safe_call(project, "SetRenderSettings", {"VideoCodec": codec}):
break
safe_call(project, "SetRenderSettings", {"Quality": "Restrict to", "VideoBitrate": 30000})
resolve, project, timeline = get_project_and_timeline()
apply_mov_hevc_settings(project, r"D:\\renders", "resolve_hevc_export")
job_id = project.AddRenderJob()
print("Render job created:", job_id)
Документация
Что делает пример
Скрипт задает общие настройки вывода, затем последовательно пробует несколько названий H.265/HEVC, потому что конкретная строка кодека может отличаться между сборками Resolve и установленными кодеками.
Почему настройки разбиты на несколько вызовов
Некоторые параметры Resolve принимает надежнее отдельными SetRenderSettings. Сначала задается контейнер, аудио и имя файла, затем видео кодек, затем ограничение bitrate.
Когда использовать
Этот блок удобно вызывать перед AddRenderJob, если нужно программно собрать render job без ручного выбора preset на Deliver page.
Разбор примера
Подключение к Resolve
Пример начинает работу с подключения к запущенному DaVinci Resolve через официальный Python-модуль.
Проверка проекта
Перед вызовами Media Pool, Timeline или Render Queue код проверяет наличие открытого проекта.
Вызов метода API
Основной блок выполняет задачу статьи: как настроить mov h.265 рендер через davinci resolve api.
Проверка результата
После вызова API результат проверяется, чтобы скрипт не продолжал работу с пустым объектом или не созданной задачей.
Особенности Resolve API
- Доступность H.265 зависит от версии Resolve и системы.
- Если кодек не применился, Resolve может использовать текущие настройки Deliver page.
- TargetDir должен быть доступен для записи.
- Для MP4 замените Format на подходящее значение и проверьте кодек в вашей версии Resolve.
Частые ошибки
Resolve API недоступен
Причина: Приложение не запущено или Python не видит DaVinciResolveScript.
Решение: Запустите Resolve и проверьте путь к Developer/Scripting/Modules.
Метод вернул None или False
Причина: В Resolve нет нужного проекта, Timeline, клипов, preset или доступа к папке.
Решение: Проверьте входные данные и добавьте явную проверку результата после каждого важного вызова API.
Скрипт работает только на одной машине
Причина: Пути к файлам или папкам Resolve зашиты под конкретную систему.
Решение: Вынесите пути в переменные и добавьте стандартные пути Windows, Linux и macOS.
Следующий шаг
Следующий шаг зависит от задачи: импорт медиа, создание Timeline или запуск рендера.
Связанные статьи API
Render
Как запустить рендер всего Timeline через Python API
Рабочий пример полного рендера активного Timeline: очистить очередь, выбрать Entire Timeline, задать папку вывода, создать render job и запустить только новую задачу.
Render
Как получить список Render Presets через DaVinci Resolve Python API
Разбираем безопасный способ получить доступные render presets, выбрать подходящий preset и загрузить его перед созданием Render Job.
Render
Как определить разрешение исходников на V1 через DaVinci Resolve API
Показываем рабочий способ пройти по клипам V1, получить MediaPoolItem, прочитать свойства клипа и определить исходное разрешение для настройки проекта или рендера.

