Как перевести таймкод в кадры через Python для DaVinci Resolve
Обратное преобразование HH:MM:SS:FF в frame index для точных расчетов Timeline
Показываем рабочую функцию parse_tc_to_frames: как превратить таймкод Resolve в номер кадра, чтобы сравнивать диапазоны, считать длительность и синхронизировать операции Timeline API.
API
Resolve Scripting API
Язык
Python
Resolve
19–20+
Требуется
Запущенный Resolve
Синтаксис
result = api_method()Параметры
- • Параметры зависят от конкретного метода Resolve Scripting API и показаны в рабочем примере.
Возвращает
Возвращаемое значение нужно проверять перед следующим шагом автоматизации.
def parse_tc_to_frames(tc: str, fps: float) -> int:
try:
hh, mm, ss, ff = [int(part) for part in str(tc).split(":")]
return int(round(((hh * 3600) + (mm * 60) + ss) * fps + ff))
except Exception:
return 0
fps = 24.0
timecode = "00:01:18:03"
print(parse_tc_to_frames(timecode, fps)) # 1875Документация
Что делает пример
Функция разбирает строку таймкода на часы, минуты, секунды и кадры. Затем переводит все значение в общий номер кадра с учетом FPS. Такой формат проще использовать в расчетах, чем строковый timecode.
Почему нужен единый формат
TimelineItem.GetStart() и GetEnd() обычно возвращают кадры. А стартовый таймкод Timeline может приходить строкой. Чтобы не смешивать разные единицы измерения, таймкод переводится в кадры и дальше все считается одинаково.
Практическая роль
Обратное преобразование полезно при чтении timelineStartTimecode, поиске смещений Timeline и подготовке диапазонов для рендера или анализа клипов. Это базовая техническая математика для Resolve API, которая помогает точно сопоставлять кадры и таймкод.
Разбор примера
Подключение к Resolve
Пример начинает работу с подключения к запущенному DaVinci Resolve через официальный Python-модуль.
Проверка проекта
Перед вызовами Media Pool, Timeline или Render Queue код проверяет наличие открытого проекта.
Вызов метода API
Основной блок выполняет задачу статьи: как перевести таймкод в кадры через python для davinci resolve.
Проверка результата
После вызова API результат проверяется, чтобы скрипт не продолжал работу с пустым объектом или не созданной задачей.
Особенности Resolve API
- Функция ожидает формат HH:MM:SS:FF.
- Для нестандартных drop-frame таймкодов нужна отдельная обработка.
- При ошибке пример возвращает 0, чтобы вызывающий код мог безопасно обработать отсутствие таймкода.
- FPS берите из Timeline или Project Settings, а не зашивайте в код.
Частые ошибки
Resolve API недоступен
Причина: Приложение не запущено или Python не видит DaVinciResolveScript.
Решение: Запустите Resolve и проверьте путь к Developer/Scripting/Modules.
Метод вернул None или False
Причина: В Resolve нет нужного проекта, Timeline, клипов, preset или доступа к папке.
Решение: Проверьте входные данные и добавьте явную проверку результата после каждого важного вызова API.
Скрипт работает только на одной машине
Причина: Пути к файлам или папкам Resolve зашиты под конкретную систему.
Решение: Вынесите пути в переменные и добавьте стандартные пути Windows, Linux и macOS.
Следующий шаг
Следующий шаг зависит от задачи: импорт медиа, создание Timeline или запуск рендера.
Связанные статьи API
Timeline
Как перевести кадры в таймкод DaVinci Resolve через Python
Разбираем безопасное преобразование номера кадра в таймкод HH:MM:SS:FF. Такой код нужен перед перемещением playhead, установкой In/Out Range и любыми операциями, где Resolve API ожидает timecode, а не секунды.
Timeline
Как получить FPS Timeline через DaVinci Resolve Python API
Рабочий пример читает FPS активного Timeline, корректно приводит строковое значение к float и использует настройки проекта как запасной источник.
Timeline
Как переместить playhead в DaVinci Resolve через Python API
Разбираем рабочий способ поставить playhead на конкретный кадр: сначала через SetCurrentTimecode, затем через SetCurrentFrame, если метод доступен в текущей версии Resolve.

