当我使用 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 编码器……
参考:
- 我如何重建 faac 包以获得 mp4/m4a 支持和更高的比特率?askubuntu 指南用于重建 faac debian 包以允许更高的比特率。
答案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 的采样率。使用较低的采样率时,比特率也会/也可以较低。