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

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

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

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

API

Resolve Scripting API

Язык

Python

Resolve

19–20+

Требуется

Запущенный Resolve

Синтаксис

result = api_method()

Параметры

  • Параметры зависят от конкретного метода Resolve Scripting API и показаны в рабочем примере.

Возвращает

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

Полный рабочий пример Pythonкод можно использовать как основу скрипта
def frames_to_tc(frame: int, fps: float) -> str:
    fps_i = max(1, int(round(fps)))
    total = int(round(frame))
    ff = total % fps_i
    seconds = total // fps_i
    hh = seconds // 3600
    mm = (seconds % 3600) // 60
    ss = seconds % 60
    return f"{hh:02d}:{mm:02d}:{ss:02d}:{ff:02d}"


fps = 24.0
frame = 1875
print(frames_to_tc(frame, fps))  # 00:01:18:03

Документация

Что делает функция

Resolve часто работает с позициями Timeline в кадрах, но часть методов принимает таймкод. Функция frames_to_tc переводит целое число кадров в строку HH:MM:SS:FF с учетом FPS Timeline. Это небольшой, но важный технический кирпич для автоматизации.

Почему не использовать секунды

Секунды удобны для человека, но при монтаже точность задается кадрами. Если переводить через float-секунды, легко получить смещение на один кадр. Поэтому сначала считается целое количество кадров, а уже затем собирается таймкод.

Где применяется

Этот формат используется перед SetCurrentTimecode, SetInOutPoints и при выводе диагностической информации о позиции клипа. Та же идея используется в реальных bridge-модулях для перехода к нужному кадру и настройки диапазона рендера.

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

1

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

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

2

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

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

3

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

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

4

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

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

Особенности Resolve API

  • FPS лучше брать из активного Timeline через GetSetting("timelineFrameRate").
  • Для дробных FPS Resolve может требовать особую drop-frame логику, но для стандартных 24/25/30/50/60 такой формат работает предсказуемо.
  • Номер кадра должен быть уже приведен к системе координат текущего Timeline.
  • Функция ничего не меняет в проекте и безопасна для тестирования.

Частые ошибки

Resolve API недоступен

Причина: Приложение не запущено или Python не видит DaVinciResolveScript.

Решение: Запустите Resolve и проверьте путь к Developer/Scripting/Modules.

Метод вернул None или False

Причина: В Resolve нет нужного проекта, Timeline, клипов, preset или доступа к папке.

Решение: Проверьте входные данные и добавьте явную проверку результата после каждого важного вызова API.

Скрипт работает только на одной машине

Причина: Пути к файлам или папкам Resolve зашиты под конкретную систему.

Решение: Вынесите пути в переменные и добавьте стандартные пути Windows, Linux и macOS.

Следующий шаг

Следующий шаг зависит от задачи: импорт медиа, создание Timeline или запуск рендера.

Связанные статьи API