我写这大约一年前,当我尝试为 Cygwin/Windows 编译 FFmpeg 时,根据 FFmpeg wiki 中的声明:
Fraunhofer FDK AAC 编解码器库。这是目前 ffmpeg 中质量最高的 AAC 编码器。需要使用 --enable-libfdk-aac 配置 ffmpeg(如果您还使用 --enable-gpl,则还需要使用 --enable-nonfree)。
然而,最近尝试使用媒体自动构建套件当呈现FDK-AAC构建选项时显示以下内容:
Build FDK-AAC library and binary? [AAC-LC/HE/HEv2 codec]
1 = Yes
2 = No
Note: FFmpeg's aac encoder is no longer experimental and considered equal or
better in quality from 96kbps and above. It still doesn't support AAC-HE/HEv2
so if you need that or want better quality at lower bitrates than 96kbps,
use FDK-AAC.
然而,这个第三方工具是我能找到的唯一一个关于 FFmpeg 默认 AAC 编码器现在优于 FDK-AAC 的参考,而且相关 FFmpeg 维基页面本身保持不变。这是真的吗?如果是,这个信息的来源是什么?
答案1
FDK 更好
FFmpeg AAC 编码器更好的说法是不正确的。
消息来源最初是在FFmpeg 编解码器文档对于 AAC 编码器。我猜作者没有进行全面的个人听力测试。声明已于 2020-05 删除。
自 2015-2016 年的一系列活动以来,原生 FFmpeg AAC 编码器没有取得重大改进,因此 FDK 仍然更好。自那时以来最大的变化是使用快速编码器作为默认编码器2018 年初,切换到双循环编码器于 2021-05 。
盲测结果
找出哪个更好的最佳方法是亲自进行严格的盲测。一些最近的例子:
来源:96kbps 和 128kbps 下的 AAC-LC 和 xHE-AAC 个人聆听测试来自 Kamedo2 (2020-09-12)
来源:128 kbps 的 AAC 个人盲听测试(六个编码器和 105 个样本)来自 guruboolez (2020-10-17)
正如你所看到的,两个听众一般评价 FDK 优于 FFmpeg AAC。但是,请记住:
- 这些测试人员可能对源内容非常熟悉。
- 普通听众可能听不出差别。
- 图表可能看起来有很大差异,但实际上差异可能很微妙(但我自己没有尝试过)。
- 质量是主观的:您必须自己比较才能决定。
何时使用 FDK-AAC
- 如果 AAC 质量是最重要的因素。
- 如果您需要 AAC-HE/HEv2,因为 FFmpeg AAC 仅为 AAC-LC。
- 您不介意编译
ffmpeg
。libfdk_aac 被视为非自由且与 GPL 不兼容,因此您不会找到许多预构建的ffmpeg
libfdk_aac 支持。所以这就是您必须编译的原因。
FFmpeg AAC:可能足够好了
- 与 libfdk_aac 相比,使用更高的比特率。如果听起来很糟糕,请增加更多比特,使用不同的 AAC 编码器,或使用不同的格式,例如 Opus 或 FLAC。
- 尝试一下
-aac_coder
。查看ffmpeg -h encoder=aac
哪个是您的默认值ffmpeg
,并与其他编码器进行比较。
答案2
fdk_aac 比原生 aac 更稳定。我们正在进行大量的流式转码,如果源原生 aac 编码器出现问题,就会开始产生垃圾,并且无法恢复。适用于最新的 4.2.x 版本。此外,与 libfdk 相比,原生编码器速度较慢(当您在服务器上进行 100 次以上的编码时,速度会逐渐增加)