notby.NET Logo

Конвертация MP4/AAC в MOV/PCM для Davinci Resolve (Linux)

Если добавлять видеофайлы в формате MP4 в Davinci Resolve работающий в Linux, то не будет отображать и воспроизводить звук из видеофайлов. И сразу возникает несколько вопросом: “Почему нет звука на ролике в Davinci Resolve?”, “Из-за чего в Davinci Resolve отсутствует звук в Linux?”, “Почему Davinci Resolve воспроизводит звук в Windows, но не воспроизводит в Linux?” и аналогичные вопросы…

Отсутствие звука в роликах происходит из-за того что внутри медиаконтейнера MP4 звук находится в AAC аудиокодеке, но по лицензионным правам его невозможно воспроизводить в Davinci Resolve работающий в операционных системах Linux. Для этого необходимо во всех роликах конвертировать звук из аудиокодек AAC в PCM или любой другой который поддерживаемый Davinci Resolve. Так как медиаконтейнер MP4 не поддерживает другие аудиокодеки, необходимо будет конвертировать в медиаконтейнер MOV или другой.

1. Установка ffmpeg

Для любых действий с видео, аудио файлами идеально подходит утилита ffmpeg. Она позволяет перепаковать из MP4 медиаконтейнера в MOV с сохранением видеокодека, но конвертировать только аудиокодек. 

Устанавливаем ffmpeg в Debian/Ubuntu

apt install ffmpeg

Устанавливаем ffmpeg в Arch Linux

pacman -S ffmpeg

В других Linux дистрибутивах происходит установка аналогично или через свой пакетный менеджер. Также можно установить через установщик пакетов графической рабочей среды.

2. Конвертация MP4/AAC в MOV/PCM при помощи ffmpeg

Открываем консольный терминал из того места где лежит видеофайл.

Конвертируем ролик из MP4 в MOV

ffmpeg -i "old_video.MP4" -vcodec copy -acodec pcm_s24le "new_video.MOV"

Где old_video.MP4 – имя оригинальной файла, new_video.MOV – имя нового файла в формате MOV.

Параметр -vcodec copy означает что видеокодек останется без изменений, то есть видео будет скопировано без конвертации и изменений.

Параметр -acodec pcm_s24le конвертирует звук в аудиокодек PCM 24 бита.

Аудиокодек pcm_s24le (PCM 24 бит) не ухудшит качество звука аудиокодека AAC и он даже избыточен почти во всех случаях. Можно использовать аудиокодек pcm_s16le (PCM 16 бит), тогда конечный файл будет весить немного меньше.

В консоли Debian выполнена команда конвертации ролика из MP4 в MOV при помощи ffmpeg. Видеокодек скопирован без изменений, аудиокодек изменен на PCM 24 бита.

Если файлов немного, можно вручную конвертировать.

3. Скрипт конвертации MP4/AAC в MOV/MP4

Когда файлов очень много, необходимо использовать скрипт для автоматизации конвертации.

Создаем файл convert-for-davinci.sh (имя скрипта может быть любым) следующего содержимого:

#!/bin/bash

# Конфигурация
extension="mov" # Расширение нового файла (медиаконтейнер)
prefix="" # Префикс к новому файлу, есть необходимо
replace="0" # Перезаписывать файл? 0 — нет, 1 — да

for i
do
	echo "Processing $i"
	filename=$(basename -- "$i") # Получаем имя оригинального файла
	filename="${filename%.*}" # Обрезаем расширение файла

	# Проверяем существует ли файл с таким именем
	if [ -f "${filename}${prefix}.${extension}" ]  && ! [ ${replace} = 1 ]; then
		echo "${filename}${prefix}.${extension} already exists." # Выводим сообщение, что файл существует
		continue # Передаем управление в начало цикла, конвертацию не делаем
	fi

	# Выполняем кодирование звука в аудиокодека PCM (pcm_s24le), при этом сохраняем видеокодек без изменений
	ffmpeg -y -i "$i" -stats -hide_banner -loglevel 0 -vcodec copy -acodec pcm_s24le "${filename}${prefix}.${extension}"
done

Сохраняем файл.

4. Конвертация MP4/AAC в MOV/PCM при помощи скрипта

Копируем скрипт в каталог где находятся видеофайлы которые необходимо конвертировать и открываем консоль.

Разрешаем исполнение скрипта

chmod +x convert-for-davinci.sh

где convert-for-davinci.sh – имя созданного/скопированного скрипта.

Используем следующею команду, чтобы конвертировать все файлы в каталоге

./convert-for-davinci.sh *

Можно конвертировать видеофайлы только с определенным расширением, указав например только файлы MP4 (*.MP4 – расширение файлов для конвертации)

./convert-for-davinci.sh *.MP4

Обрати внимание, что в Linux регистр букв в именах файлов имеет значение. Файл example.MP4 и example.mp4, это два разных файла.

В консоли Debian выполнен скрипт convert-for-davinci.sh с указанием расширения файлов для конвертации. Все видеофайлы с расширением MP4 успешно конвертированы в MOV медиаконтейнер.

Все файлы успешно конвертированы, можно их добавлять в Davinci Resolve и пользоватся.