FIX звука в *MOV и *MP4 для DaVinci Resolve Linux
Если вы работаете в программе для монтажа видео «DaVinci Resolve» под управлением операционной системы Linux, например Ubuntu, то вы наверняка заметили и быть может были разочарованы тем, что при импорте видео формата MP4 или MOV, в программу «DaVinci Resolve» изображение есть, а вот звука нет. Это обусловлено тем, что «DaVinci Resolve» не поддерживает аудиоданные формата «MPEG-4 AAC» вшитые внутри видеофайлов формата MP4 и MOV. Почему так происходит? Это касается проблем лицензирования кодека для DaVinci в Linux, а в Windows таких проблем нет, но внутренние проблемы компании BM нас мало интересуют.
Решение есть , которое работает очень быстро, это sh скрипт, он вам поможет. Как им пользоваться я расписал ниже. Буквально одной командой из терминала, массово и разом все видеофайлы что лежат в ваше папке, перекодируется в нужный нам формат. На выходе после обработки появятся копии, исправленные файлы *_fix.mov внутри которых будет изменена аудиодорожка из «MPEG-4 AAC» в «PCM WAV» без сжатия, да, размер из-за этого немного увеличится, но это пустяки. Такие обработанные файлы легко и просто прочитаются монтажной программой «DaVinci Resolve» (и не только ей), будет вам и картинка и звук, максимальная совместимость в среде Linux. Не нужно ставить какие-то левые перекодировщики, не нужно заморачиваться конвертированием через плеер VLC и долго жать, при этом теряя в качестве. Одна команда сделает свою волшебную и полезную работу.
Главное преимущество в том, что обработка займёт крайне мало времени, ведь видеоданные ни коим образом не затрагиваются, следовательно — качество изображения вообще не изменится , обрабатывается ТОЛЬКО аудиодорожка внутри видеофайлов.
Вот так выглядит процесс пакетной обработки видеофайлов, где преобразуется аудиодорожка в нужный нам формат.
ПРИСТУПАЕМ К ОБРАБОТКЕ
Для начала проверим исходное видео, будь то MP4 или MOV. Если посмотреть свойства этих файлов, то мы должны увидеть, что аудиоданные сжаты кодеком “MPEG-4 AAC”, это значит что в ДаВинчи мы увидим видеоряд но не услышим звука, будет пустая аудиодорожка. Подготовим файлы, сложим их куда-нибудь в папку в удобное место в вашей системе. Если у вас один видеофайл, то это хорошо, если у вас их целая пачка, то ещё лучше, скрипт схавает их все разом.
Или создайте файл формата *sh дайте ему имя «coder.sh»
скопируйте этот код и вставьте в файл «coder.sh», сохраните.
Для того чтобы скрипт работал, в вашей Linux системе должен быть установлен кодек “ ffmpeg «. Обычно он не установлен по умолчанию. Чтобы установить, откройте терминал, введите команду:
sudo apt-get install ffmpeg
Нажмите Enter, ведите пароль если он у вас есть, и кодек установится. Больше его устанавливать не нужно.
Поместите скрипт » coder.sh » в папку, где лежат ваши видео, будь-то *mp4 файлы (например скачанные с Youtube) или файлы формата *mov
Вам нужно ввести простую команду: » sh coder.sh *» — без кавычек и нажмите Enter.
DaVinci Resolve and MP4 under Linux
If you try to import mp4 file to DaVinci Resolve under Linux, you will be greeted with audio-only experience if you’re lucky or nothing at all if you’re not. Unless you’re paying customer of DaVinci Resolve Studion, MP4 and AAC are not supported at all.
Conversion to an intermediate format is needed and good old ffmpeg can help here:
Terminalffmpeg -i input.mp4 \
-c:v dnxhd -profile:v dnxhr_hq -pix_fmt yuv422p \
-c:a pcm_s16le \
-f mov output.mov
Here I use DNxHR with HQ settings. Even this will generate file that’s much bigger than source. How much bigger depends on the source, but don’t be surprised to see it grow 16-fold or even higher.
Smaller alternative can be MPEG4 format but with a drop in quality even at its best settings:
Terminalffmpeg -i input.mp4 \
-c:v mpeg4 -qscale:v 1 \
-c:a pcm_s16le \
-f mov output.mov
These files can now be used as input to Resolve and editing can commence.
Once done with rendering a conversion to MP4 might be in order again. For this I use settings discussed on Video StackExchange. While the original discussion was for YouTube, I find their recommendations quite good as a starting point:
Terminalffmpeg -i render.mov \
-c:v libx264 -pix_fmt yuv420p -crf 16 \
-force_key_frames 'expr:gte(t,n_forced/2)' -bf 2 \
-vf yadif -use_editlist 0 \
-movflags +faststart \
-c:a aac -q:a 1 \
-ac 2 -ar 48000 \
-f mp4 out.mp4
Mind you, all my cameras use YUV 4:2:0 and I don’t do any major editing so increasing YUV to 4:2:2 or even 4:4:4 makes no sense nor does increase to 10-bit resolution. Depending on which equipment you have, your mileage may vary.
Transcoding MP4’s for use with DaVinci Resolve on Linux
DaVinci Resolve is very picky when it comes to container formats, video and audio codecs — especially in the Linux version. The first step after reviewing my FPV footage (and deleting what I will definitely not use) is converting it into a format that resolve can handle.
My main cameras are a GoPro Session 5 on my five inch rigs and a Caddx Turtle V2 on all smaller rigs and my brushless HD whoops. But this guide will basically work with any source material you have problems opening in DaVinci Resolve.
In case of the GoPro Session 5 we get a MP4 container with H.264 encoded video and Mpeg-4 AAC encoded audio. In case of the Caddx Turtle we get also a MP4 container with H.264 encoded image but this time Raw 16-bit PCM audio (I don’t care for the audio of the turtle at all — in fact I even de-soldered the mic of mine, because I simply can not stand it).
Resolve does not like this at all — neither the container nor the video codec. In case of the GoPro footage not even the audio codec. Therefore I am transcoding it with FFmpeg (a multi-media converter and more) to something more “Resolve friendly”:
ffmpeg -i GOPROxxx.MP4 -vcodec mjpeg -q:v 2 -acodec pcm_s16be -q:a 0 -f mov OUTxxx.mov
This converts the source footage into a mov container with mjpeg encoded video and PCM encoded audio.
The -q:v n parameter is responsible for quality where n can be anything from 2 — 32. 2 being lossless and resulting in the biggest file size. I use 2 here in order to keep the highest quality possible. When setting the q:v option to 3, the resulting file is only have the size of the one encoded with 2 and I can not see the difference, still I do not want to risk it and keep the highest quality possible.
I prefer to let YouTube or Instagram ruin the quality, until then I want to provide the best quality possible — maybe one day they will re-encode my source footage with better quality and I want to provide them with a source file with which their conversion might improve.
I chose mjpeg as codec since it is the easiest format for editing software to handel — every frame is encoded as separate jpeg, no keyframes needed. It does not result in the smallest file size — but conversion is rather fast, with around 200fps of full HD footage. Keep in mind that your mileage here might vary depending on the specs of your computer.