ffmpeg 的 aac 编码器需要音频比特率吗?

ffmpeg 的 aac 编码器需要音频比特率吗?

如果您没有在 aac 编码器中设置音频比特率会发生什么?

-ab 128k

它是否会自动选择最高比特率,或者我很好奇我是否应该这样做,或者是否会很糟糕,我看不出有什么区别。

答案1

编码器不一定需要传递比特率才能工作。但仍然建议设置它。

默认值是多少以及选择哪种比特率完全取决于您使用的 AAC 编码器。ffmpeg 可以使用多个 AAC 编码器:

  • aac(ffmpeg-internal) – 单声道和立体声默认均为 128 kBit/s。
  • libfdk-aac– 立体声默认为 128 kBit/s CBR,单声道默认为 96 kBit/s CBR。

一般来说,你应该选择比默认比特率更高的比特率。这是因为它产生的质量比相同比特率aac略低。libfdk-aac

通过适当设置来实现-b:a,例如-b:a 192k

ffmpeg -i input.wav -c:a aac -b:a 192k output.m4a

aac对比libfdk-aac

为什么libfdk-aac有时不推荐?因为它使用非自由许可证,并且不能包含在ffmpeg静态构建中(即,您可以直接从网站下载的构建)。这就是为什么使用aac内置于 ffmpeg 中的 更容易。

但如果您可以访问libfdk-aac,当然可以使用它。

选择哪些质量选项?

您还可以选择 VBR 编码,而不是选择固定比特率。

我尝试总结一下 VBR 选项在我的主页上,以及FFmpeg 维基有关于 AAC 编码的详细信息以及一些示例命令。

我可以相信日志输出吗?

当你在 ffmpeg 的日志输出中看到类似这样的一行时:

Stream #0:0: Audio: aac (libfdk_aac) (mp4a / 0x6134706D), … 96 kb/s

那么kb/s这里显示的不一定反映编码器实际使用的内容,因为这取决于具体的实现 - 编码器可以使用可变质量。


还有一些编码器不再被 ffmpeg 支持:

  • libfaac– 默认 VBR 设置 100,立体声音频约为 128 kBit/s(参考)。
  • libvo-aacenc– 单声道和立体声默认均为 128 kBit/s。
  • libaacplus

答案2

编辑 对于非常老版本的 ffmpeg /编辑Libfaac 设置了默认比特率。立体声输入为 128k,单声道为 96k。

在任何当前版本中都可以安全地忽略它

相关内容