ffmpeg 选项:-acodec libfaac -ab 192k 生成 150kbit 文件?

ffmpeg 选项:-acodec libfaac -ab 192k 生成 150kbit 文件?

当我使用 ffmpeg 转换音频文件时,使用以下选项

-acodec libfaac -ab 192k 

并使用

ffmpeg -i 

然后获取音频文件信息,它告诉我

bitrate: 152 kb/s

为什么会这样?我是不是漏掉了什么?如果我想转换一个比特率为 192kb 的文件,转换后应该会得到 192 kbit,不是吗?

或者:那么我如何获得 192 kbit 速率?

答案1

现在 Linux 上有更好的 aac 编码器,例如 NeroAacEnc 或 fdkaac,但如果您仍然热衷于使用 faac,有一个补丁意味着 faac 可以以 192k 的比特率进行编码,而且比特率还要高得多。Handbrake 以前使用过这个补丁并将其托管在他们的网站上,但开发人员现在已经放弃了对 faac 的支持,我现在在这里托管这个补丁:

http://www.andrews-corner.org/patches/A00-bitrates.patch

修补 Faac,然后使用以下方法编译 FFmpeg--启用-libfaac您可以使用 Faac 获得高比特率 aac 文件。以下是使用修补后的 faac 进行编码的示例,直接使用 faac 进行编码:

andrew@skamandros~/media$ faac -b 192 -o test.m4a test.wav 
Freeware Advanced Audio Coder
FAAC 1.28

Average bitrate: 192 kbps
Quantization quality: 100
Bandwidth: 20872 Hz
Object type: Low Complexity(MPEG-4) + M/S
Container format: MPEG-4 File Format (MP4)
Encoding test.wav to test.m4a
   frame          | bitrate | elapsed/estim | play/CPU | ETA
11720/11720 (100%)|  192.0  |   21.7/21.7   |   12.52x | 0.0  

andrew@skamandros~/media$ 

而且它也能与 FFmpeg 配合使用。但现在肯定有更好的 aac 编码器……

参考:

答案2

我无法提供进一步的解释,但有几个地方(例如[1]) 提到:

请注意,最大平均比特率(-ab 在 libfaac 上下文中指定的值)为 152 kbit/s。将此值设置得更高将被忽略,并将使用 152 kbit/s。

答案3

对于高比特率和低比特率,您必须指定不同的截止频率。如果没有截止频率,此示例将导致最大比特率为 166kbit/s(+ 2kbit/s 多路复用开销):

ffmpeg.exe -y -i input.ts -vn -c:a libfaac -ar 48k -b:a 210k out.mp4

size=     308kB time=00:00:15.01 bitrate= 168.0kbits/s

当我将截止频率指定为采样率的一半时,我可以达到 210kbit/s

ffmpeg.exe -y -i input.ts -vn -c:a libfaac -ar 48k -b:a 210k -cutoff 24k out.mp4

size=     388kB time=00:00:15.01 bitrate= 211.7kbits/s

同样,默认值也不会低于 64.5kbit/s:

ffmpeg.exe -y -i input.ts -vn -c:a libfaac -ar 48k -b:a 20k out.mp4

size=     122kB time=00:00:15.01 bitrate=  66.4kbits/s

但是如果我将截止频率设置得很低,我可以得到 20kbit/s:

ffmpeg.exe -y -i input.ts -vn -c:a libfaac -ar 48k -b:a 20k -cutoff 1k out.mp4

size=      40kB time=00:00:15.01 bitrate=  21.9kbits/s

在这些示例中,我使用了 48kHz 的采样率。使用较低的采样率时,比特率也会/也可以较低。

相关内容