DaVinci Resolve API

Автоматизация DaVinci Resolve через Python API

Практический раздел по Resolve Scripting API: подключение к программе, импорт медиа, создание Timeline, работа с клипами и запуск рендера из Python.

ResolveProjectMediaPoolTimelineRender

Python automation pipeline

01

Python Script

GetResolve()
02

Project Manager

Create / Open project
03

Media Pool

ImportMedia(files)
04

Timeline

CreateTimeline()
05

Render Queue

StartRender()

Практические страницы

DaVinci Resolve API на реальных задачах

Подключение к Resolve, импорт медиа, создание таймлайна, работа с клипами и запуск рендера через Python.

НовичокСтарт

Как подключиться к DaVinci Resolve через Python API

Базовый вход в Resolve Scripting API: импорт модуля, scriptapp("Resolve") и проверка активного проекта

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

DaVinciResolveScriptscriptapp("Resolve")GetVersionString()
Открыть статью →
НовичокСтарт

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

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

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

scriptapp("Resolve")scriptapp("Fusion")GetResolve()
Открыть статью →
НовичокПроекты

Как получить текущий проект DaVinci Resolve через Python

Project Manager, Current Project и проверка активного Timeline перед автоматизацией

Показываем рабочий способ получить открытый проект Resolve и активный Timeline. Этот код нужен перед импортом медиа, чтением настроек таймлайна, экспортом аудио и запуском рендера.

GetProjectManager()GetCurrentProject()GetName()
Открыть статью →
НовичокПроекты

Как создать проект DaVinci Resolve через Python API

CreateProject, проверка текущего проекта и загрузка существующего проекта по имени

Рабочий пример показывает, как через Project Manager создать проект, не плодить дубликаты и загрузить существующий проект, если CreateProject не создал новый.

GetProjectManager()GetCurrentProject()CreateProject()
Открыть статью →
НовичокMedia Pool

Как импортировать файлы в Media Pool через Python API

ImportMedia, проверка путей и получение Media Pool из текущего проекта

Разбираем рабочий импорт файлов в Media Pool DaVinci Resolve. Пример проверяет проект, существование файлов, вызывает ImportMedia и выводит имена импортированных MediaPoolItem.

GetMediaPool()ImportMedia()GetName()
Открыть статью →
СреднийMedia Pool

Как импортировать папку и добавить клипы на Timeline

Сканирование папки, ImportMedia и AppendToTimeline в правильном порядке

Рабочий пример берёт видеофайлы из папки, сортирует их по имени, импортирует в Media Pool, создаёт Timeline при необходимости и добавляет клипы на монтажную последовательность.

ImportMedia()CreateEmptyTimeline()GetCurrentTimeline()
Открыть статью →
НовичокTimeline

Как создать Timeline в DaVinci Resolve через Python

CreateEmptyTimeline, CreateTimelineFromClips и проверка текущей последовательности

Показываем два рабочих варианта: создать пустой Timeline или создать Timeline сразу из импортированных клипов Media Pool.

CreateEmptyTimeline()CreateTimelineFromClips()GetCurrentTimeline()
Открыть статью →
НовичокTimeline

Как получить FPS Timeline через DaVinci Resolve Python API

timeline.GetSetting("timelineFrameRate") и запасной вариант на настройки проекта

Рабочий пример читает FPS активного Timeline, корректно приводит строковое значение к float и использует настройки проекта как запасной источник.

GetCurrentTimeline()timeline.GetSetting()project.GetSetting()
Открыть статью →
СреднийTimeline

Как перебрать клипы Timeline через Python API

GetTrackCount и GetItemListInTrack для видео- и аудиодорожек

Рабочий пример проходит по всем видео- и аудиодорожкам активного Timeline, получает TimelineItem и выводит имя, старт и конец каждого клипа.

GetTrackCount()GetItemListInTrack()GetName()
Открыть статью →
СреднийRender

Как запустить рендер в DaVinci Resolve через Python API

Render Preset, SetRenderSettings, AddRenderJob и StartRendering

Показываем рабочий запуск Render Queue из Python: выбор доступного preset, настройка папки и имени файла, создание render job, запуск свежей задачи и ожидание завершения.

LoadRenderPreset()SetRenderRange()SetRenderSettings()
Открыть статью →
НовичокTimeline

Как перевести кадры в таймкод DaVinci Resolve через Python

Практическая функция frames_to_tc для SetCurrentTimecode, In/Out Range и точной работы с Timeline

Разбираем безопасное преобразование номера кадра в таймкод HH:MM:SS:FF. Такой код нужен перед перемещением playhead, установкой In/Out Range и любыми операциями, где Resolve API ожидает timecode, а не секунды.

frames_to_tc()GetSetting()SetCurrentTimecode()
Открыть статью →
НовичокTimeline

Как перевести таймкод в кадры через Python для DaVinci Resolve

Обратное преобразование HH:MM:SS:FF в frame index для точных расчетов Timeline

Показываем рабочую функцию parse_tc_to_frames: как превратить таймкод Resolve в номер кадра, чтобы сравнивать диапазоны, считать длительность и синхронизировать операции Timeline API.

parse_tc_to_frames()GetStartTimecode()GetSetting()
Открыть статью →
СреднийTimeline

Как переместить playhead в DaVinci Resolve через Python API

SetCurrentTimecode, SetCurrentFrame и безопасный переход к нужному кадру Timeline

Разбираем рабочий способ поставить playhead на конкретный кадр: сначала через SetCurrentTimecode, затем через SetCurrentFrame, если метод доступен в текущей версии Resolve.

SetCurrentTimecode()SetCurrentFrame()GetSetting()
Открыть статью →
СреднийTimeline

Как разблокировать дорожки Timeline через DaVinci Resolve Python API

GetTrackCount, SetTrackLock и SetTrackEnable для видео- и аудиодорожек

Показываем рабочий служебный скрипт: пройти по всем видео- и аудиодорожкам активного Timeline, снять блокировку и включить дорожки перед дальнейшими операциями.

GetTrackCount()SetTrackLock()SetTrackEnable()
Открыть статью →
НовичокRender

Как получить список Render Presets через DaVinci Resolve Python API

GetRenderPresetList и LoadRenderPreset для подготовки рендера из Python

Разбираем безопасный способ получить доступные render presets, выбрать подходящий preset и загрузить его перед созданием Render Job.

GetRenderPresetList()LoadRenderPreset()
Открыть статью →
СреднийRender

Как очистить Render Queue в DaVinci Resolve через Python API

GetRenderJobs, GetRenderJobList, DeleteRenderJob и безопасная подготовка очереди перед новым рендером

Показываем рабочий подход к очистке очереди рендера: получить список задач, извлечь job id и удалить старые Render Jobs перед созданием новой задачи.

StopRendering()GetRenderJobs()GetRenderJobList()
Открыть статью →
СреднийRender

Как задать диапазон рендера по клипам V1 через DaVinci Resolve API

GetItemListInTrack, SetInOutPoints и SetRenderRange для рендера только рабочей области Timeline

Разбираем рабочий способ найти общий диапазон клипов на видеодорожке V1, поставить In/Out Points и переключить Render Range на In/Out Range.

GetItemListInTrack()GetStart()GetEnd()
Открыть статью →
СреднийRender

Как определить разрешение исходников на V1 через DaVinci Resolve API

GetMediaPoolItem, GetClipProperty и выбор максимального разрешения клипов основной видеодорожки

Показываем рабочий способ пройти по клипам V1, получить MediaPoolItem, прочитать свойства клипа и определить исходное разрешение для настройки проекта или рендера.

GetItemListInTrack()GetMediaPoolItem()GetClipProperty()
Открыть статью →
СреднийAudio

Как экспортировать аудио Timeline в WAV через DaVinci Resolve Python API

Deliver page, SetCurrentRenderFormatAndCodec, SetRenderSettings и аудио-only Render Job

Разбираем рабочий экспорт звука активного Timeline в WAV: переключение на Deliver, очистка очереди, настройки LinearPCM, создание Render Job и ожидание файла.

OpenPage()SetCurrentRenderFormatAndCodec()SetRenderSettings()
Открыть статью →
ПродвинутыйTimeline

Как удалить клипы с Timeline через DaVinci Resolve Python API

DeleteClips, поиск TimelineItem и безопасное удаление выбранных элементов

Показываем техническую часть удаления клипов: как найти элементы на активном Timeline и передать нужные TimelineItem в DeleteClips.

GetItemListInTrack()GetStart()GetEnd()
Открыть статью →
СреднийMedia Pool

Как добавить клипы на Timeline через AppendToTimeline

Импорт файлов в Media Pool и последовательное добавление клипов на активный Timeline

Разбираем рабочий вариант добавления клипов: импортируем файлы через ImportMedia, сопоставляем MediaPoolItem с исходными путями и добавляем клипы на Timeline через AppendToTimeline.

GetMediaPool()ImportMedia()GetClipProperty()
Открыть статью →
СреднийTimeline

Как получить стартовый кадр Timeline в DaVinci Resolve API

GetStartFrame, GetStart и безопасное определение базового кадра Timeline

Показываем, как получить стартовый кадр Timeline через GetStartFrame и аккуратно обработать версии Resolve, где доступен только другой вариант чтения позиции.

GetCurrentTimeline()GetStartFrame()GetStart()
Открыть статью →
СреднийTimeline

Как прочитать стартовый таймкод Timeline через Python API

timelineStartTimecode, GetStartTimecode и перевод таймкода в кадры

Рабочий пример чтения стартового таймкода Timeline: получаем timelineStartTimecode из настроек, используем GetStartTimecode как запасной вариант и переводим значение в кадры.

GetSetting()GetStartTimecode()parse_tc_to_frames()
Открыть статью →
ПродвинутыйTimeline

Как разрезать клип в DaVinci Resolve через Python

SetCurrentTimecode, поиск клипа под кадром и split через горячую клавишу Resolve

Показываем практический способ разрезания клипа: найти элементы Timeline, которые пересекают нужный кадр, поставить playhead и выполнить штатный split в интерфейсе Resolve.

GetItemListInTrack()GetStart()GetEnd()
Открыть статью →
СреднийTimeline

Как собрать карту клипов Timeline через DaVinci Resolve API

GetTrackCount, GetItemListInTrack, GetStart, GetEnd и связь с MediaPoolItem

Создаем техническую карту Timeline: дорожка, тип медиа, имя клипа, старт, конец, длительность и путь к исходному файлу через MediaPoolItem.

GetTrackCount()GetItemListInTrack()GetMediaPoolItem()
Открыть статью →
ПродвинутыйTimeline

Как обрезать TimelineItem через DaVinci Resolve Python API

SetStart, SetEnd, SetLeftOffset и SetRightOffset для технического trim клипа

Показываем безопасный пример trim: найти первый видеоклип, получить его границы и попробовать укоротить элемент через доступные методы TimelineItem.

GetItemListInTrack()GetStart()GetEnd()
Открыть статью →
ПродвинутыйRender

Как запустить рендер всего Timeline через Python API

SetRenderRange Entire Timeline, SetRenderSettings, AddRenderJob и StartRendering

Рабочий пример полного рендера активного Timeline: очистить очередь, выбрать Entire Timeline, задать папку вывода, создать render job и запустить только новую задачу.

StopRendering()GetRenderJobs()DeleteRenderJob()
Открыть статью →
ПродвинутыйRender

Как настроить MOV H.265 рендер через DaVinci Resolve API

SetRenderSettings для TargetDir, CustomName, Format, AudioCodec и VideoCodec

Показываем рабочий блок настройки MOV + H.265/HEVC: папка вывода, имя файла, видео, аудио AAC, bitrate и выбор подходящего названия кодека.

SetRenderSettings()AddRenderJob()
Открыть статью →
ПродвинутыйRender

Как выставить разрешение рендера по клипам V1 через API

GetMediaPoolItem, GetClipProperty, SetSetting и ResolutionWidth/ResolutionHeight

Разбираем практический способ определить максимальное исходное разрешение клипов на V1 и передать его в настройки проекта и рендера.

GetItemListInTrack()GetMediaPoolItem()GetClipProperty()
Открыть статью →
СреднийMedia Pool

Как получить свойства исходника через MediaPoolItem.GetClipProperty

Связь TimelineItem с MediaPoolItem и чтение File Path, Resolution, FPS и Codec

Разбираем рабочий способ получить свойства исходного файла из клипа на Timeline: через GetMediaPoolItem и GetClipProperty.

GetMediaPoolItem()GetClipProperty()GetTrackCount()
Открыть статью →
СреднийRender

Как загрузить Render Preset через DaVinci Resolve Python API

LoadRenderPreset, выбор подходящего пресета и безопасная проверка результата перед AddRenderJob

Рабочий пример показывает, как получить список пресетов, выбрать H.265/HEVC или другой подходящий вариант и загрузить его перед настройкой Render Settings.

GetRenderPresetList()LoadRenderPreset()SetRenderSettings()
Открыть статью →
СреднийRender

Как настроить Render Settings через DaVinci Resolve Python API

TargetDir, CustomName, Format, Codec, AudioCodec и базовые параметры финального экспорта

Разбираем рабочий шаблон SetRenderSettings для MOV H.265/HEVC с аудио AAC: папка вывода, имя файла, видео, аудио и битрейт.

SetRenderSettings()LoadRenderPreset()GetCurrentTimeline()
Открыть статью →
СреднийRender

Как создать Render Job через DaVinci Resolve Python API

AddRenderJob после настройки пресета, диапазона и параметров экспорта

Показываем правильный порядок действий: загрузить пресет, задать настройки рендера, выбрать диапазон и только затем добавить задание в Render Queue.

SetRenderSettings()SetRenderRange()AddRenderJob()
Открыть статью →
ПродвинутыйRender

Как запустить один Render Job через DaVinci Resolve Python API

StartRendering с конкретным job id без запуска старых заданий из очереди

Рабочий пример показывает, как запускать только свежий Render Job и не трогать старые задания, которые могли остаться в Render Queue.

StartRendering()AddRenderJob()GetRenderJobs()
Открыть статью →
СреднийRender

Как получить статус Render Job через DaVinci Resolve Python API

GetRenderJobStatus, JobStatus и проверка результата после завершения экспорта

Разбираем рабочий способ прочитать статус задания рендера по job id и корректно обработать результат Complete, Failed или пустой статус.

GetRenderJobStatus()IsRenderingInProgress()StartRendering()
Открыть статью →
СреднийRender

Как дождаться завершения рендера через DaVinci Resolve Python API

IsRenderingInProgress, цикл ожидания и финальная проверка Render Job

Показываем безопасный цикл ожидания рендера: скрипт не завершается раньше времени и после окончания читает статус Render Job.

IsRenderingInProgress()GetRenderJobStatus()StartRendering()
Открыть статью →
СреднийRender

Как остановить рендер через DaVinci Resolve Python API

StopRendering перед очисткой очереди или аварийным завершением автоматизации

Разбираем безопасный вызов StopRendering и проверку IsRenderingInProgress, чтобы остановить активный экспорт перед изменением Render Queue.

StopRendering()IsRenderingInProgress()GetRenderJobs()
Открыть статью →
ПродвинутыйRender

Как удалить Render Job из очереди через DaVinci Resolve Python API

DeleteRenderJob, разные форматы job id и аккуратная очистка одного задания

Показываем практический способ удалить конкретное задание из Render Queue, учитывая что Resolve может возвращать job id строкой, числом или словарем.

GetRenderJobs()GetRenderJobList()DeleteRenderJob()
Открыть статью →
СреднийRender

Как задать In/Out Range для рендера через DaVinci Resolve Python API

SetInOutPoints, SetRenderRange и перевод кадров в таймкод для Deliver page

Рабочий пример показывает, как превратить диапазон кадров в таймкоды, выставить In/Out Points на Timeline и переключить рендер на In/Out Range.

SetInOutPoints()SetRenderRange()ClearInOutPoints()
Открыть статью →
ПродвинутыйRender

Полный пайплайн рендера DaVinci Resolve через Python API

Project, Timeline, очистка очереди, настройки MOV H.265, AddRenderJob, StartRendering и проверка файла

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

GetCurrentProject()GetCurrentTimeline()SetRenderSettings()
Открыть статью →
НовичокAudio

Как получить количество аудиодорожек Timeline через Python API

GetTrackCount("audio") для проверки структуры Timeline перед вставкой музыки, SFX или экспорта звука

Разбираем безопасный способ узнать количество аудиодорожек в активном Timeline DaVinci Resolve и использовать это значение перед добавлением новых audio clips.

GetCurrentTimeline()GetTrackCount()
Открыть статью →
СреднийAudio

Как создать недостающую аудиодорожку через Resolve API

Проверка GetTrackCount и добавление дорожек через AddTrack("audio")

Рабочий шаблон показывает, как убедиться, что в Timeline существует аудиодорожка с нужным номером, и добавить недостающие дорожки через Python API.

GetTrackCount()AddTrack()
Открыть статью →
СреднийAudio

Как добавить аудиофайл на Timeline через Python API

ImportMedia и AppendToTimeline с mediaType 2, recordFrame и trackIndex

Показываем рабочий шаблон вставки аудиофайла на конкретную аудиодорожку DaVinci Resolve через Media Pool и Timeline API.

GetMediaPool()ImportMedia()AppendToTimeline()
Открыть статью →
СреднийMedia Pool

Как импортировать несколько файлов и сопоставить MediaPoolItem по пути

ImportMedia, GetClipProperty и безопасная карта path → MediaPoolItem

Разбираем практический шаблон из интеграций Resolve API: импортировать список файлов и построить словарь, который позволяет быстро найти MediaPoolItem по исходному пути.

GetMediaPool()ImportMedia()GetClipProperty()
Открыть статью →
НовичокTimeline

Как перевести секунды в кадры Timeline для Resolve API

FPS, базовый кадр Timeline и расчет recordFrame для AppendToTimeline

Показываем простой рабочий конвертер секунд в абсолютный кадр Timeline, который нужен при вставке аудио, титров и медиа по времени.

GetSetting()GetStartFrame()GetStartTimecode()
Открыть статью →
СреднийTimeline

Как узнать тип и номер дорожки TimelineItem через Python API

GetMediaType и GetTrackIndex для аудио, видео и титров на Timeline

Рабочий пример показывает, как получить media type и track index у TimelineItem, чтобы корректно группировать клипы по дорожкам.

GetItemListInTrack()GetMediaType()GetTrackIndex()
Открыть статью →
СреднийMedia Pool

Как получить путь исходного файла у клипа Timeline через Python API

GetMediaPoolItem и GetClipProperty для связи TimelineItem с исходным медиа

Разбираем рабочий способ получить MediaPoolItem из TimelineItem и прочитать File Path через GetClipProperty.

GetMediaPoolItem()GetClipProperty()GetName()
Открыть статью →
СреднийTimeline

Как создать недостающую видеодорожку через Resolve API

GetTrackCount("video") и AddTrack("video") перед вставкой клипов на V2 или V3

Показываем безопасный шаблон подготовки Timeline: проверить количество видеодорожек и добавить недостающие через AddTrack.

GetTrackCount()AddTrack()
Открыть статью →
СреднийTimeline

Как экспортировать карту клипов Timeline в JSON через Python API

GetTrackCount, GetItemListInTrack, GetStart, GetEnd и сериализация структуры Timeline

Практический пример показывает, как собрать техническую техническую карту Timeline: дорожка, имя клипа, старт, конец, длительность и путь исходного файла.

GetTrackCount()GetItemListInTrack()GetStart()
Открыть статью →
ПродвинутыйTimeline

Как рассчитать видимые участки V1 с учетом перекрытий V2

GetItemListInTrack, интервалы клипов и геометрия Timeline по дорожкам Timeline

Показываем технический расчет видимых сегментов клипов V1, если часть основного видео перекрыта клипами на V2.

GetItemListInTrack()GetStart()GetEnd()
Открыть статью →