Как импортировать файлы в Media Pool через Python API
ImportMedia, проверка путей и получение Media Pool из текущего проекта
Разбираем рабочий импорт файлов в Media Pool DaVinci Resolve. Пример проверяет проект, существование файлов, вызывает ImportMedia и выводит имена импортированных MediaPoolItem.
API
Resolve Scripting API
Язык
Python
Resolve
19–20+
Требуется
Запущенный Resolve
Синтаксис
result = api_method()Параметры
- • Параметры зависят от конкретного метода Resolve Scripting API и показаны в рабочем примере.
Возвращает
Возвращаемое значение нужно проверять перед следующим шагом автоматизации.
import os
import sys
from pathlib import Path
def import_resolve_module():
try:
import DaVinciResolveScript as dvr
return dvr
except ImportError:
search_paths = [
os.environ.get("RESOLVE_SCRIPT_API", ""),
os.environ.get("RESOLVE_MODULES", ""),
r"C:\\ProgramData\\Blackmagic Design\\DaVinci Resolve\\Support\\Developer\\Scripting\\Modules",
"/opt/resolve/Developer/Scripting/Modules",
"/Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules",
str(Path.home() / "Library/Application Support/Blackmagic Design/DaVinci Resolve/Developer/Scripting/Modules"),
]
for path in search_paths:
if path and os.path.isdir(path) and path not in sys.path:
sys.path.append(path)
import DaVinciResolveScript as dvr
return dvr
dvr = import_resolve_module()
media_files = [
r"D:\\Resolve\\source\\clip_01.mp4",
r"D:\\Resolve\\source\\clip_02.mp4",
]
existing_files = [path for path in media_files if os.path.isfile(path)]
if not existing_files:
raise RuntimeError("Не найден ни один файл для импорта")
resolve = dvr.scriptapp("Resolve")
if not resolve:
raise RuntimeError("Resolve API недоступен")
project = resolve.GetProjectManager().GetCurrentProject()
if not project:
raise RuntimeError("Нет открытого проекта")
media_pool = project.GetMediaPool()
clips = media_pool.ImportMedia(existing_files)
if not clips:
raise RuntimeError("ImportMedia вернул пустой результат")
for clip in clips:
print("Imported:", clip.GetName())Документация
Как работает ImportMedia
Метод ImportMedia() вызывается у Media Pool и принимает список путей к файлам. В ответ Resolve возвращает список MediaPoolItem. Эти объекты уже можно использовать для добавления на Timeline, чтения clip property или дальнейшей организации внутри Media Pool.
Почему сначала проверяются файлы
Resolve не обязан красиво объяснять, почему импорт не состоялся. Поэтому перед вызовом ImportMedia лучше проверить пути на стороне Python. Если список пустой, скрипт останавливается понятной ошибкой, а не передаёт в API несуществующие файлы.
Что возвращает MediaPoolItem
Каждый импортированный клип имеет методы вроде GetName() и GetClipProperty(). Этого достаточно для практической проверки импорта: можно вывести имя, проверить путь, затем передать клип в AppendToTimeline или использовать его при создании Timeline.
Практический сценарий
Такой код подходит для импорта заранее подготовленного набора файлов: исходников съёмки, аудио, графики или тестовых клипов. Он выполняет технический импорт заранее подготовленного списка файлов и возвращает MediaPoolItem для дальнейшей работы.
Разбор примера
Подключение к Resolve
Пример начинает работу с подключения к запущенному DaVinci Resolve через официальный Python-модуль.
Проверка проекта
Перед вызовами Media Pool, Timeline или Render Queue код проверяет наличие открытого проекта.
Вызов метода API
Основной блок выполняет задачу статьи: как импортировать файлы в media pool через python api.
Проверка результата
После вызова API результат проверяется, чтобы скрипт не продолжал работу с пустым объектом или не созданной задачей.
Особенности Resolve API
- Передавайте в ImportMedia абсолютные пути — так меньше проблем с рабочей папкой Python.
- ImportMedia может вернуть меньше клипов, чем было путей, если часть файлов не поддерживается.
- После импорта клипы ещё не обязательно находятся на Timeline.
- Для добавления на Timeline используйте AppendToTimeline или CreateTimelineFromClips.
Частые ошибки
Resolve API недоступен
Причина: Приложение не запущено или Python не видит DaVinciResolveScript.
Решение: Запустите Resolve и проверьте путь к Developer/Scripting/Modules.
Метод вернул None или False
Причина: В Resolve нет нужного проекта, Timeline, клипов, preset или доступа к папке.
Решение: Проверьте входные данные и добавьте явную проверку результата после каждого важного вызова API.
Скрипт работает только на одной машине
Причина: Пути к файлам или папкам Resolve зашиты под конкретную систему.
Решение: Вынесите пути в переменные и добавьте стандартные пути Windows, Linux и macOS.
Следующий шаг
Следующий шаг зависит от задачи: импорт медиа, создание Timeline или запуск рендера.
Связанные статьи API
Media Pool
Как импортировать папку и добавить клипы на Timeline
Рабочий пример берёт видеофайлы из папки, сортирует их по имени, импортирует в Media Pool, создаёт Timeline при необходимости и добавляет клипы на монтажную последовательность.
Timeline
Как создать Timeline в DaVinci Resolve через Python
Показываем два рабочих варианта: создать пустой Timeline или создать Timeline сразу из импортированных клипов Media Pool.
Timeline
Как перебрать клипы Timeline через Python API
Рабочий пример проходит по всем видео- и аудиодорожкам активного Timeline, получает TimelineItem и выводит имя, старт и конец каждого клипа.

