AAC 音频流的封装

在目前消费级的手机、相机所录制的影像中,AAC是非常主流的音频流编码。

楼主时不时会有一些从视频中提取音频的需求。

我们可以用 ffmpeg 的 -vn -c copy 命令,来扔掉视频流,仅复制音频流。

这种方法不经过转码。既节约了算力资源,又避免了多次有损编码导致的音质恶化。

获取了AAC音频流,接下来把它封装到什么容器呢?其实有两种选择

  • 根据MPEG-2规范封装。(被MPEG-4规范的音频编码向下兼容,因而较少用到)

    • .aac 扩展名同编码名
  • 根据MPEG-4规范封装。拜苹果所赐,采用MPEG-4封装的AAC流扩展名非常混乱,看似不是同一种容器,其实本质完全相同:

    • .mp4 没错,.mp4也是可以封装纯音频的
    • .m4a 由于 iTunes Store 的多年经营,.m4a已经成为目前最常见的AAC音频扩展名。(不过除了AAC流之外,.m4a其实还可以封装ALAC流,就不能随便改成其他扩展名了)
    • .m4b 苹果有声书专用的扩展名,本质AAC
    • .m4r 苹果的铃声,本质是不超过40秒的AAC

一般来说,为了防止视频播放器误扫描到我们的文件,把 AAC 音频流封装成 .m4a 扩展名的音频文件是比较通用的选择。

如果是打算在 Apple 的生态系统使用的话,也可以按用途需求来输出 .m4b.m4r 扩展名文件。

万一输出错了,由于四种扩展名唯一的差别就是写法,那么直接批处理重命名就可以。

我只在很久之前从flv视频里抽过音频。那时候多数还是mp3。现在连下载视频的行动力都基本没有了,弄下来最多也是直接剪辑视频,不再单独抽取音频了…