AAC 编码基本说明

Advanced Audio Coding (AAC) 是 MP3 的后继格式,它被定义於 MPEG-4 part 3 (ISO/IEC 14496-3)。它通常使用在 MP4 容器内;对于音乐习惯上使用 .m4a 副档名。第二常见使用是在 MKV (Matroska) 档内,因为它比 MP4 支援更多以文字为基础的软字幕 (例如 ass, ssa…)。本文中的范例将使用 MP4 与 M4A 副档名。

FFmpeg 可以支援 4 个 AAC-LC 编码器 (aac, libfaac, libfdk_aac, libvo_aacenc) 与两个 AAC-HE 编码器 (libaacplus, libfdk_aac)。libaacplus, libfaac, libfdk_aac 的授权不与 GPL 相容,所以当 GPU 授权源代码也包含在内时 GPU 不允许包含源代码授权依据这些授权的二进位档的发布。因此这些编码器被指定为 “non-free”,且你不能下载内建它们的 ffmpeg。这可以透过自行编译 ffmpeg 来解决。

对于 AAC-LC 品质而言,其答案可能是:
libfdk_aac > libfaac > Native FFmpeg AAC encoder (aac) > libvo_aacenc
https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio#AudioencodersFFmpegcanuse

libfdk_aac

The Fraunhofer FDK AAC 编解码程式库。这是目前 ffmpeg 所能提供的最高品质 AAC 编码器。需要 ffmpeg 组态 (configuration) 中含有 –enable-libfdk-aac (如果也使用 –enable-gpl 则还需要 –enable-nonfree)。

详细资料: Fraunhofer FDK AAC – Hydrogenaud

Constant Bit Rate (CBR, 常数位元速率) 模式

指定一个目标位元速率。它可以让你精準控制输出档案大小 (= 位元率 * 时间长度),且它与 HE-AAC profile 相容。由经验得知,双声道推荐 位元率 >= 128kbps,6 声道则推荐位元率 >= 384kbps (由 双声道位元率 * 声道数 / 2)。使用 -b 选项来控制输出位元速率。

范例:

转换一个音讯档为 AAC 并以 M4A (MP4) 容器来封装:

ffmpeg -i input.wav -c:a libfdk_aac -b:a 128k output.m4a

转换一个影片的 5.1 生到音讯为 AAC,并复制其视讯串流:

ffmpeg -i input.mp4 -c:v copy -c:a libfdk_aac -b:a 384k output.mp4

Variable Bit Rate (VBR, 可变位元速率) 模式

指定一个目标品质,而不是特定的位元速率。设定值范围为 1-5,较高的值会得到较高的位元率与品质。使用 -vbr 选项来设定 VBR 等级。

范例:

转换一个音讯档为 AAC 并以 M4A (MP4) 容器来封装:

ffmpeg -i input.wav -c:a libfdk_aac -vbr 3 output.m4a

转换一个影片的 5.1 生到音讯为 AAC,并复制其视讯串流:

ffmpeg -i input.mp4 -c:v copy -c:a libfdk_aac -vbr 3 output.mp4

High-Efficiency AAC

简称 AAC-HE 又名为 aacPlus,这是一对专门针对低位元速率的 AAC profiles (version 1 与 version 2),AAC-HE v1。对于双声道而言 (如下图所示),AAC-HE v1 适用于 96kbps 以下,而 AAC-HE v2 适用于 48kbps 以下。但大多数播放设备不支援播放任何版本的 AAC-HE 而只能播放 AAC-LC。

x 轴为音质; y 轴为位元率

注意: AAC-HE v2 只能处理双声道。如果需要降混 (down-mix) 至 单声道,则使用 AAC-HE v1。

如果需要指定 Profile 则使用 -profile 选项。

Profiles:
aac_low
MPEG-4 AAC LC (default)
aac_he
MPEG-4 HE-AAC (SBR)
aac_he_v2
MPEG-4 HE-AAC v2 (SBR+PS)
aac_ld
MPEG-4 AAC LD
aac_eld
MPEG-4 AAC ELD

例如:

ffmpeg -i input.wav -ac 2 -c:a libfdk_aac -profile:a aac_he -vbr 3 output.m4a

Native FFmpeg AAC encoder
原生 (Native) FFmpeg AAC 编码器是已包含在 ffmpeg 内,而且它不像本文中其它 AAC 编码器那样需要一个外部程式库。注意这将不会让你得到如同 libfdk_aac 一样的良好结果。这被认为是实验性的编码器,所以需要 “-strict experimental” 或 “-strict -2 is”。

指定位元率

使用 -b 选项来指定输出位元率为 240kbps:

ffmpeg -i input.wav -strict experimental -c:a aac -b:a 240k output.m4a

指定品质

使用 -q 选项来指定输出品质等级为 6:

ffmpeg -i input.wav -strict experimental -c:a aac -q:a 6 output.m4a

设定值有效范围为 0.1-10。比较高的设定值会得到较高的输出品质与位元率大小。
此 VBR 是实验性的并且有可能得到比 CBR 更差的结果。

libvo_aacenc

VisualOn AAC 编码程式库。需要 ffmpeg 组态 (configuration) 中含有 –enable-libvo-aacenc。它有非 non-free 的优点,但它是一个更差的编码器比起 libfdk_aac 甚至 原生的 FFmpeg AAC 编码器,根据 FFmpeg AACの音质评価。此编码器最多只支援 2 声道,并只有 CBR 模式,而且不支援 VBR 输出。

CBR 128Kbps:

ffmpeg -i input.wav -ac 2 -c:a libvo_aacenc -b:a 128k output.m4a

附:

HE-AAC, HE-AAC v2品质 高品质比特率 HE-AAC:32至48kbit/s 单声道 HE-AAC v2:16至24kbit/s 单声道 高品质音频采样率 24至96kHz声道 单声道、立体声、多声道(如5.1、7.1)应用 DVB(数 字视频广播)、ISDB(综合业务数字广播)、ARIB、ATSC-M/H、DAB+(数字音频广播)、DRM+(数字版权管理)、DRM、DVB- H(手持式数字视频广播)、DMB(数字多媒体广播)、MediaFLO、3GPP、XM广播、移动电话、音频和视频下载服务

AAC-LC品质 达到统计学标准的清晰度比特率 最高每通道256kbit/s采样率 8至96kHz声道 单声道、立体声、多声道(如5.1、7.1)应用 苹果 iPod、 iTunes、QuickTime、 日本ISDB(综合业务数字广播)、 AV 接收器、汽车收音机、移动音乐播放器、移动电话

猜你喜欢

转载自blog.csdn.net/freeabc/article/details/107440617