У меня есть несколько входных медиа-файлов, которые я хочу обработать. Входной аудиопоток каждого файла кодируется в ac-3 с 5.1-канальной разметкой (сзади или сбоку) со скоростью 384 кбит / с.

Задача состоит в том, чтобы целевой медиафайл содержал микшированный аудиопоток, преобразованный в формат 2,1 канала (со скоростью 192 кбит / с) в формате aac!

Я использую ffmpeg для всего процесса и могу достичь цели, используя следующие параметры:

ffmpeg -i infile.mp4 -vn -c:a aac -b:a 192k -filter_complex "pan=2.1|FL<c0+c2+c4|FR<c1+c2+c5|LFE=c2" outfile.m4a

Полученный аудиофайл имеет следующие свойства:

Stream #0:0: Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 2.1, fltp, 192 kb/s (default)

Тем не мение(!) если я вместо этого использую libfdk_aac , я получаю стереофайл и канал LFE удаляется:

Stream #0:0: Audio: aac (libfdk_aac) (mp4a / 0x6134706D), 48000 Hz, stereo, s16, 192 kb/s (default)

Как мне кодировать аудиопоток, используя libfdk_aac, не отбрасывая канал LFE?

Результат одинаков при использовании автоматического сопоставления каналов. Следующая команда создает аудиопоток 2.1 при использовании aac вместо libfdk_aac качестве опции аудиокодека:

ffmpeg -y -i infile.mp4 -vn -c:a aac -b:a 192k -af pan=2.1 test.m4a

Ради этих вопросов я пренебрегаю всеми свойствами исходного видеоматериала, поскольку я убежден, что это не важно для ответа на вопрос.

1 ответ1

0

libfdk_aac не поддерживает формат канала 2.1:

$ ffmpeg -h encoder=libfdk_aac
[...]
Encoder libfdk_aac [Fraunhofer FDK AAC]:
    Supported channel layouts: mono stereo 3.0 4.0 5.0 5.1 7.1(wide) 7.1

Вам придется использовать поддерживаемый макет или использовать другой кодировщик, например -c:a aac как вы упомянули.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .