Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DVR Bridge

Графическая утилита для Linux, которая готовит видео с iPhone к монтажу в бесплатном DaVinci Resolve и превращает экспорт из Resolve обратно в файл, который iPhone примет в галерею. Под капотом — ffmpeg/ffprobe.

Скриншот DVR Bridge

Зачем это нужно

Бесплатная версия DaVinci Resolve под Linux не умеет ни декодировать, ни кодировать H.264 и HEVC — то есть не открывает ролики с iPhone и не может экспортировать в «телефонный» формат. Рабочая схема:

iPhone .mov (H.264/HEVC) ──► DNxHR .mov ──► монтаж в Resolve ──► DNxHR .mov ──► H.264/HEVC .mov ──► галерея iPhone
                    Apple → DVR                                           DVR → Apple

DVR Bridge делает обе стрелки и по дороге обходит типичные грабли:

  • в .mov с iPhone кроме видео и AAC лежат трек apac (пространственное аудио, ffmpeg его не декодирует) и служебные mebx — они отбрасываются, иначе транскод падает;
  • вертикальное видео хранится как 3840×2160 с флагом поворота — программа показывает, что на выходе будет 2160×3840, чтобы вы выставили такой же размер таймлайна в Resolve;
  • Resolve при экспорте теряет дату съёмки и геометку — их можно перенести из оригинала, и ролик ляжет в галерею iPhone на своё место, а не в конец ленты;
  • трек таймкода tmcd из экспорта Resolve убирается.

Возможности

  • Два режима: Apple → DVR и DVR → Apple.
  • Выбор исходника и места сохранения через системный диалог (xdg-desktop-portal: KDE, GNOME и др.).
  • Проверка входного файла до старта через ffprobe: контейнер, кодек под выбранный режим, поворот и итоговое разрешение, SDR/HDR, Dolby Vision, Apple-метаданные, аудио, отбрасываемые потоки, свободное место под DNxHR. При любой ошибке кнопка «Старт» неактивна; если выбран не тот режим — предложит переключить.
  • Защита оригиналов: выходной путь не может совпадать с исходником, существующий файл перезаписывается только после явной галочки.
  • HDR (HLG) → DNxHR HQX 10 бит; обратно — HEVC Main10 + HLG через NVENC. Для HDR-исходника кодек не выбирается молча — нужно выбрать самому.
  • Прогресс со скоростью, отмена, полный журнал ffmpeg (ошибки подсвечены), предпросмотр и копирование команды ffmpeg. Недописанный файл после ошибки или отмены удаляется.
  • После завершения — сводка по результату (кодек, разрешение, fps, число кадров, дата/GPS).
  • Консольный режим для скриптов и проверки.

Требования

  • Linux (Wayland или X11)
  • ffmpeg и ffprobe в PATH с кодировщиками dnxhd, libx264; для HDR-ветки — hevc_nvenc и видеокарта NVIDIA
  • fc-match (fontconfig) — для символов, которых нет во встроенных шрифтах egui
  • Rust 1.81+ для сборки

На атомарных дистрибутивах (Bazzite, Silverblue) ffmpeg без перезагрузки ставится через Homebrew: brew install ffmpeg.

Сборка и установка

git clone https://github.com/messiahlap/dvr-bridge.git
cd dvr-bridge
cargo build --release

install -Dm755 target/release/dvr-bridge ~/.local/bin/dvr-bridge
install -Dm644 packaging/dvr-bridge.desktop ~/.local/share/applications/dvr-bridge.desktop
update-desktop-database ~/.local/share/applications

GTK для сборки не нужен: диалоги работают через xdg-desktop-portal.

Использование

Графический интерфейс

  1. Запустите DVR Bridge из меню или dvr-bridge [ФАЙЛ]. Также доступно «Открыть с помощью» в файловом менеджере; экспорт из Resolve (DNxHR/ProRes) автоматически включает режим DVR → Apple.
  2. Выберите режим, исходный файл и, при необходимости, место сохранения (по умолчанию — папка «Загрузки», имя <исходник>_dnx.mov или <исходник>_iphone.mov).
  3. В режиме DVR → Apple укажите «Оригинал с iPhone», чтобы перенести дату съёмки и геометку.
  4. Убедитесь, что в проверке нет красных пунктов, и нажмите «Старт».

Рабочий процесс с Resolve

  1. Apple → DVR для исходника с iPhone.
  2. В Resolve: Project Settings → Master Settings → Timeline Resolution — то разрешение, что показала проверка (для вертикального видео 2160 × 3840), и та же частота кадров.
  3. Монтаж, стабилизация и т.д.
  4. Deliver: формат QuickTime, кодек DNxHR HQ (или HQX для 10 бит), аудио Linear PCM.
  5. DVR → Apple для экспорта, с оригиналом в поле «Оригинал с iPhone».
  6. Передайте файл на телефон через iCloud Drive / «Файлы» → «Сохранить видео». Мессенджеры пережимают видео, если отправлять не как файл.

Консольный режим

# только проверка и вывод команды ffmpeg
dvr-bridge --check apple ~/Загрузки/IMG_5974.mov

# проверка и конвертация
dvr-bridge --check dvr "Timeline 1.mov" --meta IMG_5974.mov -o final.mov --run
Параметр Назначение
apple / dvr режим Apple → DVR или DVR → Apple
--meta ФАЙЛ оригинал с iPhone, из которого берутся дата и GPS
-o ФАЙЛ выходной файл
--overwrite разрешить перезапись существующего файла
--run выполнить конвертацию, а не только проверку

Код возврата: 0 — успех, 1 — проверка не пройдена или ffmpeg завершился с ошибкой, 2 — неверные аргументы. Для HDR-исходника в режиме DVR → Apple консоль отказывается работать: кодек нужно выбрать в GUI.

Какие команды выполняются

Apple → DVR (SDR):

ffmpeg -i IN.mov -map 0:<видео> -map 0:<аудио> \
  -c:v dnxhd -profile:v dnxhr_hq -pix_fmt yuv422p \
  -vf setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709 \
  -c:a pcm_s16le OUT_dnx.mov

Для HLG/PQ или 10-битного исходника: dnxhr_hqx, yuv422p10le и цветовые теги исходника.

DVR → Apple (H.264):

ffmpeg -i EDIT.mov -i ORIGINAL.mov -map 0:<видео> -map 0:<аудио> \
  -c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p -tag:v avc1 \
  -vf setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709 \
  -c:a aac -b:a 192k -write_tmcd 0 \
  -map_metadata 1 -movflags +use_metadata_tags+faststart OUT_iphone.mov

DVR → Apple (HEVC HLG): -c:v hevc_nvenc -preset p7 -tune hq -profile:v main10 -pix_fmt p010le -rc vbr -cq 18 -b:v 0 -tag:v hvc1 с тегами BT.2020/HLG.

Точная команда для выбранного файла видна в разделе «Команда ffmpeg» перед запуском.

Технические заметки

  • Цветовые теги ставятся через setparams. В ffmpeg 8 опции -color_primaries/-color_trc/-colorspace перебиваются свойствами кадров исходника, и, например, HEVC с явно указанным HLG выходил с меткой bt709. Фильтр setparams размечает сами кадры без пересчёта цвета.
  • Метаданные Apple (com.apple.quicktime.creationdate, location.ISO6709, model и др.) пишутся как mdta-ключи через -movflags +use_metadata_tags. Галерея iOS надёжно читает их только из .mov, поэтому при выборе .mp4 программа предупреждает.
  • H.264 High @ L5.1, yuv420p, avc1 — ровно то, что пишет сам iPhone, так что результат принимается галереей без перекодирования на телефоне.
  • Оценка размера DNxHR: HQ/HQX ≈ 875 Мбит/с для UHD 30p, то есть около 110 МБ на секунду видео.

Ограничения

  • Dolby Vision RPU при переводе в DNxHR теряется, остаётся HLG-основа.
  • H.264 не хранит HDR; тонмаппинга HDR → SDR в программе нет.
  • HEVC-ветка требует NVENC (NVIDIA).
  • Resolve не автоматизируется — монтаж и экспорт делаются вручную.

Структура проекта

src/main.rs   интерфейс (eframe/egui), консольный режим, тесты
src/probe.rs  разбор вывода ffprobe и проверки под режим
src/job.rs    сборка аргументов ffmpeg, запуск, прогресс, отмена
packaging/    .desktop-файл

Тесты: cargo test.

Лицензия

MIT

About

GUI-конвертер видео с iPhone (H.264/HEVC) ⇄ DaVinci Resolve (DNxHR) для Linux поверх ffmpeg

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages