2.1 使用 ffmpeg 和 libfdk_aac 进行缩混

2.1 使用 ffmpeg 和 libfdk_aac 进行缩混

我有多个要处理的输入媒体文件。每个文件的输入音频流都以 ac-3 编码,采用 5.1 声道布局(后声道或侧声道),速率为 384kbps。

目标是使目标媒体文件包含转换为 2.1 声道布局(192kbps)的 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 通道?

使用自动通道映射时结果相同。以下命令在使用aac而不是libfdk_aac作为音频编解码器选项时会产生 2.1 音频流:

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

为了这个问题,我忽略了源视频材料的所有属性,因为我确信这对问题的答案并不重要。

答案1

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您所提到的。

相关内容