ВИДЕОМОНТАЖЁРDAVINCI RESOLVE · ВИДЕО · AI
К материалам API

SCRIPTING / AUTOMATION

DaVinci Resolve API

Один скрипт.
Меньше рутины.

Превратите повторяющиеся монтажные задачи в Python-скрипты. Подключение к Resolve, работа с медиа и таймлайнами, управление рендером — по одному понятному шагу.

Понять объект. Проверить результат. Автоматизировать задачу.

PYTHON → RESOLVEИНТЕРАКТИВНАЯ МОДЕЛЬ
inspect_project.pyPYTHON / READ ONLY
manager = resolve.GetProjectManager()
project = manager.GetCurrentProject()
if project:
    print(project.GetName())
Структура объектов Resolve: Project связан с MediaPool, Timeline и собственными методами рендера.
ProjectManager → Project

Начать с текущего проекта.

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

Фрагмент: resolve — уже проверенный объект приложения.К статье

Модель меняет объяснение, а не ваш проект. Без подключения к Resolve и выполнения Python.

ДВА СПОСОБА РАБОТЫ

Написать скрипт.
Или подключить ассистента.

Разные способы поставить задачу — с одной необходимостью понимать и проверять результат.

01 / API & PYTHON

Повторяемый скрипт

Объекты, методы и примеры для точной автоматизации.

Перейти в библиотеку
02 / MCP & AI

Ассистент с инструментами

Разобраться в MCP, подключить клиент и проверить первый запрос без правок.

MCP в DaVinci Resolve

БИБЛИОТЕКА ПРАКТИЧЕСКИХ ЗАДАЧ

От метода
к рабочему скрипту.

Ищите по задаче, объекту или названию метода. Подключение, проекты, Media Pool, структура таймлайна, аудио и рендер — с кодом и объяснениями в статьях.

Показано материалов50 / 50

ПодключениеНовичок

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

Настройка внешнего Python для Resolve Studio: официальный модуль, пути Windows/macOS/Linux, проверка продукта и версии. Без открытия проекта, скрытых повторов и установки случайного пакета из pip.

scriptapp("Resolve")GetProductName()GetVersionString()
Разобрать задачу
ПодключениеНовичок

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

Диагностика Python, официального модуля, объекта Resolve и текущего проекта. Разделяем ошибку загрузки и подключения; формируем локальный JSON-отчёт без имён проектов по умолчанию.

sys.executable / pointer_bitsscriptapp("Resolve")GetProjectManager()
Разобрать задачу
ПроектыНовичок

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

Получаем Project Manager, проверяем текущий проект по имени и ID, читаем число таймлайнов и активный Timeline. Пустой таймлайн допускается; автоматическая загрузка и создание проекта исключены.

GetProjectManager()GetCurrentProject()GetName() / GetUniqueId()
Разобрать задачу
ПроектыНовичок

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

Контролируемый CreateProject в локальной Project Library: проверка имени, библиотеки и папки, отдельный --apply, остановка при открытом проекте и проверка сохранения. Без скрытого LoadProject и автоматического удаления.

GetCurrentDatabase()GetCurrentFolder() / GetProjectListInCurrentFolder()CreateProject(name)
Разобрать задачу
Media PoolНовичок

Импорт файлов в Media Pool через Python API

ImportMedia без скрытых пропусков: абсолютные пути, выбранная папка, план, проверка результата и частичного импорта. Полный Python-пример для Resolve Studio.

GetMediaPool()GetCurrentFolder()ImportMedia([paths])
Разобрать задачу
Media PoolСредний

Импорт папки и добавление клипов на Timeline через API

Управляемая сборка папки в Resolve: фильтр расширений, естественный порядок имён, отдельные import/append и сверка пустого тестового таймлайна. Python-код и проверки.

ImportMedia([paths])GetClipList()AppendToTimeline([items])
Разобрать задачу
TimelineНовичок

Как создать таймлайн через Python API

CreateEmptyTimeline и CreateTimelineFromClips: когда нужен каждый метод, как подготовить план и проверить созданный объект. Исполняемый пример создаёт только пустой тестовый таймлайн после явного подтверждения.

CreateEmptyTimeline(name)CreateTimelineFromClips(name, [clips])GetTimelineByIndex(index)
Разобрать задачу
TimelineНовичок

Как прочитать FPS таймлайна через API

Читаем timelineFrameRate у Timeline и Project раздельно, сохраняем исходную строку, разбираем дробные значения и пометку DF. Не подставляем частоту при ошибке и не угадываем временную базу.

GetSetting("timelineFrameRate")GetSetting("timelineFrameRate")parse_rate(raw)
Разобрать задачу
TimelineСредний

Как перебрать клипы таймлайна через Python

Последовательный обход video, audio и subtitle без пропуска пустых состояний и ошибок. Индексы дорожек, ID вхождений, дробные границы и проверка согласованности двух чтений.

GetTrackCount(trackType)GetItemListInTrack(trackType, index)GetUniqueId()
Разобрать задачу
РендерСредний

Как управлять очередью рендера через Python

Разбираем запуск рендера по точному JobId: чтение очереди, создание, запуск, ожидание и проверка файла. Без запасного запуска всех заданий и скрытой очистки.

GetRenderJobList()StartRendering([job_id], False)GetRenderJobStatus(job_id)
Разобрать задачу
TimelineНовичок

Как перевести кадры в таймкод

Кадры → HH:MM:SS:FF или HH:MM:SS;FF: точная частота, NDF/DF, начало таймлайна и обратная проверка. Полный Python-пример и интерактивный калькулятор без подключения к Resolve.

Clock(rate, mode)frames_to_timecode(frames, clock)offset_to_timecode(offset, start, clock)
Разобрать задачу
TimelineНовичок

Как перевести таймкод в кадры

Строгий разбор NDF/DF: допустимые поля, пропущенные номера, целые кадры и смещение относительно начала таймлайна. Без float, подстановки 0 и угадывания перехода через полночь.

re.fullmatch(pattern, timecode)timecode_to_frames(tc, clock)timecode_to_offset(tc, start, clock)
Разобрать задачу
TimelineСредний

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

SetCurrentTimecode без запасных методов: план перемещения, offset от начала, проверка проекта и таймлайна, явный --apply и сверка результата. Поддержка NDF/DF в пределах выбранного timebase.

GetCurrentPage()GetCurrentTimecode()SetCurrentTimecode(timecode)
Разобрать задачу
TimelineСредний

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

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

GetTrackCount(trackType)GetIsTrackLocked(trackType, index)GetIsTrackEnabled(trackType, index)
Разобрать задачу
РендерНовичок

Как получить список Render Presets

Читаем точные имена пресетов вывода через GetRenderPresetList: пустой список, ошибка и неоднозначность — разные результаты. Без изменения Deliver и без зависимости от открытого таймлайна.

GetRenderPresetList()GetUniqueId()list_presets(resolve, project_id)
Разобрать задачу
РендерСредний

Как очистить Render Queue без удаления чужих заданий

Выборочная очистка завершённых, ошибочных и отменённых Render Jobs по явным ID. Предварительный план, проверка соседних записей и остановка при частичном исходе.

GetRenderJobList()GetRenderJobStatus(job_id)DeleteRenderJob(job_id)
Разобрать задачу
Другие задачиСредний

Диапазон рендера по клипам V1

Получаем границы включённых клипов V1, отдельно считаем промежутки и переводим диапазон в настройки Deliver. Без очистки очереди, смены таймкода и выдуманных методов.

GetItemListInTrackGetStartGetStartFrame
Разобрать задачу
РендерСредний

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

Обход V1 с точными ID, сырым свойством Resolution и явными неизвестными значениями. Смешанные размеры, отключённые клипы и генераторы не превращаются в случайно выбранное разрешение рендера.

GetItemListInTrack("video", 1)GetMediaPoolItem()GetClipProperty("Resolution")
Разобрать задачу
Другие задачиСредний

Экспорт аудио таймлайна в WAV

Подготовим audio-only экспорт через фактический каталог WAV-кодеков. Разберём частоту, битность, каналы и проверку файла, не удаляя чужие задания из очереди.

GetAudioRenderFormatsGetAudioRenderCodecsSetRenderSettings
Разобрать задачу
TimelineПродвинутый

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

Удаление клипа в Resolve по ID вхождения: проверка связей, запрет скрытой разблокировки и явный non-ripple. План, один вызов и сравнение структуры.

GetUniqueId()GetLinkedItems()GetType()
Разобрать задачу
TimelineСредний

AppendToTimeline: добавление клипов через Python API

Как добавить существующие клипы в Timeline: объекты и ID, порядок, режим плана, проверка результата. Разбор clipInfo, mediaType и границ кадров без догадок.

AppendToTimeline([MediaPoolItem, ...])AppendToTimeline([{clipInfo}, ...])GetItemListInTrack(type, index)
Разобрать задачу
TimelineСредний

Как получить стартовый кадр таймлайна

GetStartFrame: чтение начала таймлайна, перевод абсолютной координаты в offset и независимая проверка стартовой метки. Без GetStart на другом объекте, усечения float и fallback 0.

GetStartFrame()GetEndFrame()GetStartTimecode()
Разобрать задачу
TimelineСредний

Как прочитать стартовый таймкод таймлайна

GetStartTimecode без угадывания timelineStartTimecode: исходная метка, FPS и start_frame раздельно. Необязательный строгий разбор NDF/DF с явной частотой и без изменения начала проекта.

GetStartTimecode()GetSetting("timelineFrameRate")GetStartFrame()
Разобрать задачу
TimelineПродвинутый

Разрез клипа через Python: границы Resolve API

Что доступно для split в Resolve API 21.1: точный выбор клипа, план двух интервалов и проверка документации. Без скрытых горячих клавиш и выдуманного SplitClip.

GetStart(True), GetEnd(True)GetDuration(True)GetLeftOffset(True), GetRightOffset(True)
Разобрать задачу
TimelineСредний

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

Собираем проект, таймлайн, дорожки и вхождения в версионированную карту. Сохраняем пустые дорожки, сырые границы и состояния enabled; проверяем повторное чтение и явно показываем неполные поля.

GetTrackCount(trackType)GetItemListInTrack(trackType, index)GetStart(True) / GetEnd(True) / GetDuration(True)
Разобрать задачу
TimelineПродвинутый

Обрезка TimelineItem: точный план и границы API

План укорочения клипа в Resolve: целые кадры, исключительная правая граница, handles и отличие от source In/Out. Без неподтверждённых SetStart и SetEnd.

GetStart(True), GetEnd(True)GetDuration(True)GetLeftOffset(True), GetRightOffset(True)
Разобрать задачу
Другие задачиПродвинутый

Рендер всего таймлайна через API

Выбираем всю длину через SelectAllFrames, сохраняем монтажные метки и отделяем подготовку от запуска. Проверяем поздние клипы, звук, режим Single clip и готовый результат.

GetCurrentRenderModeSetRenderSettingsAddRenderJob
Разобрать задачу
РендерПродвинутый

MOV и H.265: выбрать реальные параметры API

Узнаём доступные форматы и кодеки Resolve, выбираем точный H.265 ID для MOV и сверяем текущую пару. Без перебора псевдонимов, скрытой смены режима и автоматического создания Render Job.

GetRenderFormats()GetRenderCodecs("mov")SetCurrentRenderFormatAndCodec(format, codec)
Разобрать задачу
РендерПродвинутый

Разрешение по V1: проект или рендер

Выбираем конкретный размер из прочитанной V1 и применяем его отдельно к выводу или настройкам проекта. Без автоматического максимума, частичного «успеха» и одновременной смены двух областей.

SetRenderSettings({"FormatWidth": w, "FormatHeight": h})SetSettings({"timelineResolutionWidth": str(w), "timelineResolutionHeight": str(h)})GetSettings()
Разобрать задачу
Media PoolСредний

GetClipProperty: свойства исходника через Python API

Получение свойств Media Pool без обязательного Timeline: полный словарь, ID, FPS без округления, ошибки отдельных элементов и явно ограниченный JSON-отчёт.

GetClipList()GetClipProperty()GetClipProperty(propertyName)
Разобрать задачу
РендерСредний

Как загрузить один точный Render Preset

Явная загрузка одного пресета через LoadRenderPreset: точное имя, актуальный каталог, план и отдельная проверка Deliver. Без выбора по подстроке, перебора альтернатив и заявления о полной проверке по одному True.

GetRenderPresetList()LoadRenderPreset(presetName)GetCurrentRenderFormatAndCodec() / GetCurrentRenderMode()
Разобрать задачу
РендерСредний

Render Settings: точные ключи и проверяемый запрос

Подготовка SetRenderSettings через ограниченный JSON: правильные ключи, строгие типы, существующая папка и просмотр плана. Без неизвестных полей, создания каталогов, скрытой смены кодека и запуска рендера.

SetRenderSettings(settings)FormatWidth / FormatHeightTargetDir / CustomName
Разобрать задачу
РендерСредний

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

Один AddRenderJob из вручную проверенных настроек Deliver: предварительный план, точный таймлайн, сохранение JobId и проверка изменения очереди без автоматического запуска.

GetCurrentTimeline()AddRenderJob()GetRenderJobList()
Разобрать задачу
РендерПродвинутый

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

Запускаем одно существующее локальное задание Ready через StartRendering([job_id], False). Проверяем цель и очередь; принятый запуск отделяем от готового файла.

GetRenderJobStatus(job_id)IsRenderingInProgress()StartRendering([job_id], False)
Разобрать задачу
РендерСредний

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

GetRenderJobStatus для существующего JobId: различаем Ready, Rendering, Complete, ошибку, отмену и неизвестность. Процент и общий флаг активности не подменяют результат задания.

GetRenderJobStatus(job_id)IsRenderingInProgress()
Разобрать задачу
РендерСредний

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

Наблюдаем один JobId с монотонным временем, интервалом и лимитом опросов. Тайм-аут, отмена, ошибка, пропавшее задание и Complete получают разные результаты.

GetRenderJobStatus(job_id)
Разобрать задачу
РендерСредний

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

Один StopRendering с явно подтверждённой общей областью. Проверяем проект и активные задания, не принимаем None за неуспех и не обещаем откат файлов.

StopRendering()IsRenderingInProgress()GetRenderJobStatus(job_id)
Разобрать задачу
РендерПродвинутый

Как удалить один Render Job из очереди

Один DeleteRenderJob по точному ID: свободная очередь, план, проверка исчезновения цели и сохранения соседей. Без предварительной остановки и перебора типов аргумента.

DeleteRenderJob(job_id)GetRenderJobList()IsRenderingInProgress()
Разобрать задачу
Другие задачиСредний

In/Out Range для рендера через API

Задаём явный диапазон [начало, конец), учитываем ненулевую базу и включающий MarkOut. Никакого fallback FPS, преобразования ошибки в ноль или скрытого изменения монтажных меток.

GetStartFrameGetMarkInOutSetRenderSettings
Разобрать задачу
Другие задачиПродвинутый

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

Собираем предыдущие методы в управляемый процесс с отдельными контрольными точками. Каждая команда делает один этап; неизвестный исход не запускает весь пайплайн повторно.

SetRenderSettingsAddRenderJobStartRendering
Разобрать задачу
TimelineНовичок

Количество аудиодорожек через Resolve API

GetTrackCount для аудио: пустые и отключённые дорожки, индексы, форматы и повторная сверка. Без подмены ошибки нулём и смешения дорожек с каналами.

GetTrackCount("audio")GetTrackName("audio", index)GetTrackSubType("audio", index)
Разобрать задачу
TimelineСредний

Как добавить недостающую аудиодорожку

AddTrack для аудио: существующий индекс без изменений, явный mono/stereo/многоканальный формат и только одна следующая дорожка. План, подтверждение и сверка.

GetTrackCount("audio")AddTrack("audio", "stereo")GetItemListInTrack("audio", n + 1)
Разобрать задачу
Другие задачиСредний

Добавить аудиофайл на таймлайн через API

Разделяем импорт и монтажную правку, задаём точный MediaPoolItem, дорожку и recordFrame. Без автосоздания дорожек, подмены каналов и предположения, что таймлайн начинается с нуля.

ImportMediaAppendToTimelineGetTrackSubType
Разобрать задачу
Media PoolСредний

ImportMedia: сопоставление клипов по пути

Надёжная карта файлов и MediaPoolItem: без lower(), zip по ответу и подстановки по имени. Явные коллизии, частичный импорт и отдельный read-existing режим.

ImportMedia([paths])GetClipProperty()
Разобрать задачу
TimelineНовичок

Как перевести секунды в кадры таймлайна

Секунды → offset → координата API: Fraction, 24000/1001 и 30000/1001, exact/floor/ceil/nearest, ошибка округления и необязательная привязка к открытому Timeline. Отрицательные значения не обнуляются.

Fraction(seconds_text)seconds_to_frames(seconds, clock, rounding)seconds_at_timeline(resolve, ...)
Разобрать задачу
TimelineСредний

Как узнать дорожку конкретного клипа

Используем GetTrackTypeAndIndex(), проверяем диапазон индекса через обход таймлайна и сверяем ответ с местом получения объекта. Без выдуманных GetTrackIndex или подмены MediaPoolItem.

GetTrackTypeAndIndex()GetTrackCount(trackType)GetItemListInTrack(trackType, index)
Разобрать задачу
TimelineСредний

Путь исходного файла у TimelineItem через Python API

Как прочитать File Path у клипов выбранной дорожки: TimelineItem, MediaPoolItem, пустые и отсутствующие пути, offline media и необязательная проверка файла.

GetTrackCount(trackType)GetItemListInTrack(type, index)GetMediaPoolItem()
Разобрать задачу
TimelineСредний

Как добавить недостающую видеодорожку

AddTrack для видео: как проверить V-индекс и добавить одну следующую дорожку без импорта, разблокировки, перестановки и бесконечного цикла ensure.

GetTrackCount("video")AddTrack("video")GetItemListInTrack("video", n + 1)
Разобрать задачу
TimelineСредний

Как экспортировать карту таймлайна в JSON

Версионированная схема, UTF-8, проверка полноты, запрет перезаписи и чтение записанных байтов. Разделяем отчёт о структуре и настоящий резервный формат монтажа.

collect_map(resolve)json.dumps(..., allow_nan=False)Path.open("xb")
Разобрать задачу
TimelineПродвинутый

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

Вычитаем объединение диапазонов V2 из каждого клипа V1, учитываем отключение и дробные границы. Отдельно разбираем прозрачность, переходы и другие случаи, где такой расчёт не определяет видимость.

GetIsTrackEnabled("video", index)GetClipEnabled()GetStart(True) / GetEnd(True) / GetDuration(True)
Разобрать задачу

ЗА ПРЕДЕЛАМИ ОДНОГО СКРИПТА

Свяжите задачу с рабочим процессом.