Графическая утилита для Linux, которая готовит видео с iPhone к монтажу в бесплатном DaVinci Resolve и превращает экспорт из Resolve обратно в файл, который iPhone примет в галерею. Под капотом — ffmpeg/ffprobe.
Бесплатная версия 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и видеокарта NVIDIAfc-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/applicationsGTK для сборки не нужен: диалоги работают через xdg-desktop-portal.
- Запустите DVR Bridge из меню или
dvr-bridge [ФАЙЛ]. Также доступно «Открыть с помощью» в файловом менеджере; экспорт из Resolve (DNxHR/ProRes) автоматически включает режим DVR → Apple. - Выберите режим, исходный файл и, при необходимости, место сохранения (по умолчанию — папка «Загрузки», имя
<исходник>_dnx.movили<исходник>_iphone.mov). - В режиме DVR → Apple укажите «Оригинал с iPhone», чтобы перенести дату съёмки и геометку.
- Убедитесь, что в проверке нет красных пунктов, и нажмите «Старт».
- Apple → DVR для исходника с iPhone.
- В Resolve: Project Settings → Master Settings → Timeline Resolution — то разрешение, что показала проверка (для вертикального видео
2160 × 3840), и та же частота кадров. - Монтаж, стабилизация и т.д.
- Deliver: формат QuickTime, кодек DNxHR HQ (или HQX для 10 бит), аудио Linear PCM.
- DVR → Apple для экспорта, с оригиналом в поле «Оригинал с iPhone».
- Передайте файл на телефон через 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.movDVR → 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.
