FFmpeg将音频转成AAC/M4A格式

如何用FFmpeg将音频转成AAC/M4A格式?
2020 年 5 月 12 日
Magic Len
研究分享、软件介绍
本篇文章更新于 2023 年 10 月 29 日 17 時

FFmpeg全名是Fast Forward MPEG(Moving Picture Experts Group),为开源的影音多媒体处理框架,可以进行影音的解码、编码、编码转换、混合、抽取、串流和滤镜,无论影音格式是从哪个地方出来的,从过去到现在的影音格式它几乎都能够支持。当然,它也可以利用FDK AAC这款高品质的开源AAC编码器来进行AAC和M4A的转档。

FDK AAC的fdkaac指令工具常用的转档参数不外乎就是控制音质的-m以及控制AAC Profile(例如AAC-LC、HE-AAC、HE-AACv2等)的-p。-m后面接的数值范围在1 ~ 5之间,数值愈大音质愈高。-p后面接的数值如果是2,表示要使用AAC-LC,此为默认值;5表示要使用HE-AAC;29表示要使用HE-AACv2。

有关于fdkaac的详细用法可以参考这篇文章:

https://magiclen.org/linux-fdk-aac/
FDK AAC本身的指令工具固然好用,但它所支持的输入格式有限。如果要更方便使用fdkaac来进行AAC/M4A转档,甚至是直接将视频中的音轨转成AAC格式的话,就要通过FFmpeg来完成了。不过FFmpeg有着自己的一套复杂的命令行接口(CLI),与fdkaac的用法并不相同。

fdkaac的-m参数会对应到FFmpeg的-vbr参数,且FFmpeg要设置AAC的Profile的话得使用-profile:a参数。-profile:a参数后不是接数值,是直接输入要使用的Profile名称,例如要用AAC-LC就要输入aac_low,不过这可以省略,因为AAC-LC本就是缺省的Profile;用HE-AAC要输入aac_he;用HE-AACv2要输入aac_he_v2。

fdkaac的-m参数,即FFmpeg的-vbr参数,它会直接影响到输出声音频号的比特率,下表是44.1kHz双声道时的比特率,参考就好,毕竟此处是在介绍VBR(变动比特率)的编码方式,实际编码结果会跟输入的声音频号有很大的关联,尤其是使用HE-AAC或是HE-AACv2时候通常比特率会低很多。

FFmpeg 参数 比特率
-vbr 1 ~40 kbps
-vbr 2 ~64 kbps
-vbr 3 ~96 kbps
-vbr 4 ~128 kbps
-vbr 5 ~192 kbps
通过FFmpeg输出音质最高的AAC-LC的指令如下:

ffmpeg -i 输入的影音文件路径 -acodec libfdk_aac -vbr 5 输出的影音文件路径
通过FFmpeg输出音质最高的HE-AAC的指令如下:

ffmpeg -i 输入的影音文件路径 -acodec libfdk_aac -profile:a aac_he -vbr 5 输出的影音文件路径
通过FFmpeg输出音质最高的HE-AACv2的指令如下:

ffmpeg -i 输入的影音文件路径 -acodec libfdk_aac -profile:a aac_he_v2 -vbr 5 输出的影音文件路径
CBR(固定比特率)编码
fdkaac指令工具虽有支持CBR编码方式,但一般情况下我们不太会用CBR的方式进行AAC编码,除非我们想要利用以下公式来预估编码后的AAC或是M4A文件的大小:

固定比特率时间秒

或是文件的大小

使用FFmpeg来操作FDK AAC编码器时,若要使用CBR编码方式,可以直接传入-b:a(-ab)参数并在其后接上想要使用的固定比特率即可。例如以下指令可以输出固定比特率为320kbps的AAC音频:

ffmpeg -i 输入的影音文件路径 -acodec libfdk_aac -b:a 320k 输出的影音文件路径
另外,我们可以在指令加上-cutoff参数,并在后面接上一个频率数值,这个频率数值可以控制FDK AAC编码器在编码的时候要过滤掉多少频率以上的声音频号。FDK AAC缺省就会根据固定比特率或是-m参数来过滤高频信号了,但我们可以利用FFmpeg的-cutoff参数来手动控制,-cutoff的数值范围为188 ~ 20000。例如以下指令可以输出固定比特率为320kbps的AAC音频,并且能保有最高20kHz的声音频号:

ffmpeg -i 输入的影音文件路径 -acodec libfdk_aac -b:a 320k -cutoff 20000 输出的影音文件路径

AAC、FDK AAC、FFmpeg、HE-AAC、HE-AACv2、M4A、影音

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值