🎬 DaVinci Resolve на Linux: чаму H.264, H.265, AAC не працуюць і як гэта вырашыць
Сёння правёў пару гадзін, разбіраючыся з кодэкамі ў DaVinci Resolve на Linux. Дзялюся вынікамі, бо можа, камусьці зэканоміць час.
Праблема
Імпартуеш MP4 у Resolve і ён альбо не бачыць файл, альбо адмаўляецца з ім нармальна працаваць. Тое самае з AAC-аўдыё. Усё гэта праз ліцэнзійныя абмежаванні.
H.264, H.265 і AAC — гэта запатэнтаваныя кодэкі. На Windows і macOS кампаніі Microsoft і Apple плацяць за іх ліцэнзіі на ўзроўні АС. На Linux не плаціць ніхто. Blackmagic не захацела ўключаць уласныя дэкодары ў Linux-версію Resolve, таму падтрымкі проста няма.
FFmpeg і VLC на Linux усё роўна іх прайграюць праз open-source рэалізацыі ў шэрай прававой зоне (рэвёрс-інжэнерныя libx264, libx265, libfaac). Але камерцыйны софт кшталту Resolve на такі рызыку не ідзе.
Хто зарабляе
Галоўны бенефіцыяр гэтых відэакодакаў арганізацыя MPEG-LA, якая збірае патэнтныя зборы ад імя дзясяткаў кампаній-уладальнікаў патэнтаў. Сярод іх Apple, Microsoft, Sony, Panasonic, Dolby, Ericsson, Fujitsu і многія іншыя. За H.265 дадаткова зарабляе яшчэ адна арганізацыя — HEVC Advance, і менавіта таму з H.265 ўсё яшчэ складаней: там два асобныя пулы патэнтаў, і ліцэнзаванне яшчэ больш заблытанае.
Канкрэтных лічбаў MPEG-LA публічна не раскрывае, але вядома, што вытворцы прылад, стрымінгавыя сэрвісы і распрацоўшчыкі софта плацяць штогод мільёны долараў.
H.264 з'явіўся ў 2003 годзе і быў тэхнічна выдатным на той момант. Значна лепшы за папярэдні MPEG-2. Яго прынялі ўсе адразу: вытворцы камер, тэлефонаў, браўзеры, YouTube. Калі нешта становіцца стандартам, то яго вельмі цяжка выцесніць нават праз 20 гадоў, бо ўсё жалеза і софт ужо зроблены пад яго.
H.265 стаў яго лагічным спадкаемцам у 2013 годзе. Удвая лепшы па сціскальнасці. Але менавіта тут патэнтная жадоба кампаній зыграла супраць іх саміх: занадта высокія і заблытаныя зборы прымусілі індустрыю шукаць альтэрнатыву. Гэта стала галоўнай прычынай таго, чаму Google, Netflix і іншыя велізарныя кампаніі аб'ядналіся і стварылі AV1. Каб пазбавіцца ад залежнасці ад MPEG-LA назаўсёды.
AV1 — гэта адзін з найсучаснейшых відэакодэкаў, распрацаваны кансорцыумам Alliance for Open Media (куды ўваходзяць Google, Apple, Microsoft, Netflix, Amazon і інш.) і выпушчаны ў 2018 годзе.
AV1 дае прыкладна на 30–50% меншы памер файла пры той жа якасці ў параўнанні з H.264, і на 20–30% меншы чым H.265. Менавіта таму YouTube, Netflix і Twitch пераходзяць на яго для стрымінгу — эканомія на трафіку каласальная. Асабліва добра відаць на складаных сцэнах: цёмных, з шумам, з тонкімі дэталямі. H.264 у такіх месцах дае блокавыя артэфакты, AV1 трымаецца значна лепш.
Рашэнне нашай праблемы
Канвертаваць зыходнікі ў AV1 + FLAC у MKV перад імпартам у Resolve. Гэтыя кодэкі бясплатныя і адкрытыя, а таму Resolve працуе з імі без праблем на любой платформе.
Для канвертацыі зрабіў некалькі ітэрацый і напісаў (Claude 4.6 Sonnet зразумела ж, а не я) bash-скрыпт на аснове FFmpeg. Ён:
- паказвае спіс MP4-файлаў у папцы;
- дае выбраць, якія канвертаваць;
- выкарыстоўвае NVIDIA NVENC для хуткага GPU-кадавання.
ffmpeg -i input.mp4 -c:v av1_nvenc -cq 20 -c:a flac output.mkvПараўнанне памеру: 16 МБ (H.264) → ~30 МБ (AV1) замест 515 МБ (ProRes) 🎉
#!/bin/bash
FOLDER="${1:-.}"
OUTPUT_DIR="$FOLDER/transcoded"
shopt -s nullglob
files=("$FOLDER"/*.mp4)
if [ ${#files[@]} -eq 0 ]; then
echo "No MP4 files found in: $FOLDER"
exit 1
fi
echo "Found the following MP4 files:"
for i in "${!files[@]}"; do
filename=$(basename "${files[$i]}")
echo " $((i+1)): $filename"
done
echo ""
echo "Enter numbers to convert (e.g. 1 3 4), or 'a' for all:"
read -r selection
if [[ "$selection" == "a" || "$selection" == "A" ]]; then
selected=("${files[@]}")
else
selected=()
for num in $selection; do
idx=$((num - 1))
if [[ $idx -ge 0 && $idx -lt ${#files[@]} ]]; then
selected+=("${files[$idx]}")
else
echo " ⚠ Skipping invalid number: $num"
fi
done
fi
if [ ${#selected[@]} -eq 0 ]; then
echo "No files selected. Aborting."
exit 1
fi
mkdir -p "$OUTPUT_DIR"
echo ""
echo "Transcoding ${#selected[@]} file(s) to NVENC AV1 MKV..."
echo ""
for f in "${selected[@]}"; do
filename=$(basename "$f" .mp4)
output="$OUTPUT_DIR/${filename}.mkv"
echo "▶ $filename.mp4 → ${filename}.mkv"
ffmpeg -i "$f" \
-c:v av1_nvenc -cq 20 \
-c:a flac \
-y "$output" \
-loglevel warning -stats
if [ $? -eq 0 ]; then
echo " ✓ Done"
else
echo " ✗ Failed: $filename"
fi
echo ""
done
echo "All done! Transcoded files saved to: $OUTPUT_DIR"Як выкарыстоўваць:
- Захавай тэкст вышэй у файл transcode_for_resolve.sh або адразу загрузі сабе файл.
- Зрабі яго выкананым: адкрый тэрмінал у той жа папцы і напішы:
chmod +x transcode_for_resolve.sh- Запусці скрыпт, перадаўшы шлях да папкі з відэа:
./transcode_for_resolve.sh /home/user/Videos/myprojectАбо проста кінь скрыпт у папку з відэа і запусці без аргументаў:
./transcode_for_resolve.sh- Скрыпт пакажа спіс файлаў, увядзі нумары праз прабел або "a" для ўсіх.
Гатовыя файлы з'явяцца ў падпапцы transcoded.

Выснова наступная
Linux + DaVinci Resolve = трэба ведаць абыходныя шляхі. Але як толькі разбярэшся, ўсё працуе выдатна. Галоўнае правіла: выкарыстоўвай адкрытыя кодэкі (AV1, FLAC, ProRes) і пазбягай H.264/H.265/AAC у рабочым флоў.

Выхад гэтага тэксту спансіравалі:
Магнаты: mova.how, Dzmitry Sudnik, himik94, Alexey Gulev, Aleś, aliaksei, Jaŭhien Baranoŭski, VentelD, Marmol, Ivan Yanchuk, Vozhyk, Hieorhij Puhačoŭ, Aliaksei Adamovich, riderXIII, Siarhei Mukhin, Aliaksandr Tsitkou, Aleś Karoza, а таксама патроны: Randomname, Aliaksey Kandratsenka, Alena Н., Aliaksiej Homza, Nicolai Grodzitski, Піля, Aliaksandr Limantau, Tsimafei Akudovich, Mikita, Hvedar, Maateusz, Kri69, GM, Heorhi Raik, Mikita, Kiryl, Aliaksandr Smirnou, Aleś z-pad Miensku, Taćciana, Georgij Smirnov, Ant, Ina Reichspalm
Падтрымаць