我有多个要处理的输入媒体文件。每个文件的输入音频流都以 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
您所提到的。