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

Как перевести таймкод в кадры через 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 и показаны в рабочем примере.

Возвращает

Возвращаемое значение нужно проверять перед следующим шагом автоматизации.

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

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

1

Подключение к Resolve

Пример начинает работу с подключения к запущенному DaVinci Resolve через официальный Python-модуль.

2

Проверка проекта

Перед вызовами Media Pool, Timeline или Render Queue код проверяет наличие открытого проекта.

3

Вызов метода API

Основной блок выполняет задачу статьи: как перевести таймкод в кадры через python для davinci resolve.

4

Проверка результата

После вызова 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