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:a 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+ | √ | ||
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
作为封装的容器,这样在支持音频播放界面的App中会显示为更方便的控制界面。