AAC与OPUS纯音频的封装容器
✏️
MP3发明于1989年,被写进1993年的MPEG-1标准,凭借着先发优势,迅速成为当年互联网主流的有损音频编码格式。虽然,随着技术的进步,MP3的技术指标已逐渐过时,但随着2017年其专利在全球范围内过期,MP3编码凭借免费与兼容性的优势,继续焕发出较强的生命力。
AAC最初诞生于1997年,是MPEG-2与MPEG-4标准中的有损音频编码格式,在压缩率、音质、多声道支持上都优于MP3。目前它被广泛应用于音乐流媒体、视频流媒体、移动设备等领域,是最主流的有损音频编码格式之一。
Opus诞生于2012年,虽然兼容性尚待提升,但其开源、免费的授权模式,以及优于AAC的压缩率、音质和低延迟技术特性,使其成为下一代主流音频编码标准的强力竞争者。
格式 | 发布时间 | 授权方式 | 音质 | 流媒体平台支持 |
---|---|---|---|---|
MP3 | 1993 | 专利(过期) | 低码率下音质较差,高码率下接近CD音质 | 几乎所有平台 |
AAC | 1997 | MPEG-2专利过期,MPEG-4有效 | 低码率下音质优于MP3,高码率下与MP3接近 | 绝大多数平台 |
Vorbis | 2000 | 开源 | 低码率下音质优于MP3,高码率下可超越CD音质 | 部分平台 |
Opus | 2012 | 开源 | 低码率下音质表现最佳,高码率下接近Vorbis | 部分平台 |
楼主时不时会有一些从视频中提取音频的需求。
我们可以用 ffmpeg 的 -vn -c copy
命令,来扔掉视频流,仅复制音频流。这种方法不经过转码。既节约了算力资源,又避免了多次有损压缩导致的音质恶化。
AAC与OPUS均是支持多种容器的音频编码。不过,如果输出文件继续使用原有的扩展名,则依旧默认关联到视频播放器打开,如果只是用视频播放器播放一个黑屏画面,我们提取音频就显得多此一举。
那么,我们在获取了不含视频的纯音频之后,如何决定新文件采用什么扩展名呢?
这篇帖子总结了可以封装AAC、OPUS两种编码的音频流的容器格式
AAC
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
扩展名文件。
万一输出错了,由于四种扩展名唯一的差别就是写法,那么直接批处理重命名就可以。
OPUS
由于Opus诞生距今不过十几年时间,因此兼容性就成为一个不得不说的问题。
以下表格整理自维基百科:
扩展名 | Windows | Android | Linux | macOS | iOS |
---|---|---|---|---|---|
mka, mkv | 1607 | 5+ | √ | ||
weba, webm | 1809 | 5+ | √ | Monterey | 17+ |
ogg | 1709(Web媒体扩展) 1903(原生支持) |
7+ | √ | ||
m4a, mp4 | √ | √ | 17+ | ||
opus | 1903 | 10+ | √ | 17+ | |
caf | High Sierra | 11+ |
目前各系统的浏览器、视频播放器对于VP9视频+Opus音频的.webm
容器已经形成广泛的支持,而纯音频所对应的扩展名.weba
则走向了另一个极端,除了浏览器在线播放,几乎没有音频播放软件默认关联它。
各系统的本地音频播放器对于Opus纯音频扩展名的支持情况是参差不齐的。
- Windows / Android
-
.m4a
、.ogg
:对使用该扩展名的opus音频的支持普遍在2017~2018年左右普及 -
.opus
:对该使用该扩展名的opus音频的支持在2019年之后才普及
-
- macOS / iOS
各大系统对于.webm
容器兼容性不错,但往往会将该扩展名自动关联到视频播放器,用一个黑屏的视频控制界面播放纯音频多少不太方便,因此建议选取历史更久的.ogg
作为封装opus纯音频的容器,这样可以自动关联到音频播放器App打开,或者在支持音频控制界面的视频播放器中会显示为更方便的音频控制界面。