因为使用 YouTube 所以接触到了 WebM 格式,这个格式 Google 开源的一个媒体容器格式,常见的文件后缀名是 .webm,他设计的目标是为了给 HTML5 提供视频和音频。Google 发起的 WebM 项目还有一个姊妹项目 WebP 是提供图像编码的。BSD 协议开源。1

编码格式和容器格式

我们平常所见的媒体格式,有 avi,mp3,mp4,mkv 等等,但是这些都是媒体文件容器的扩展,WikiPedia 有一份比较完整的媒体容器列表,在这份列表中我们也能看到其实 webm 格式就是 Matroska 容器的一层“皮”,mkv 格式也是 Matroska 容器的。

而这里说的容器又被称为封装格式,就是将编码好的视频,音频按照一定的规范封装到一起。当然有些容器也支持字幕,脚本之类,同一种容器中可以放不同编码的视频。

容器格式和编码格式要区别开来,放在容器中的媒体可以有不同的编码格式,编码格式指的是用特定的压缩技术对视频,音频处理。但是有些容器也能够提供二次压缩处理。常见的编码格式有:mpeg-2,mpeg-4,h.263,h.264 等等。

常见容器格式

下面简要的说一些常见的容器格式。

WebM

WebM 容器是 Matroska 一种特殊的 profile,可以封装 VP8 视频编码, Vorbis 音频编码。在 2013 年支持了 VP9 视频编码,和 Opus 音频编码。

WebM 官网 https://www.webmproject.org/

AVI

AVI 全称 Audio Video Interleaved 音频视频交错格式,微软在 1992 年推出,采用有损压缩,压缩高,因此画质相对较差,但是应用仍然非常广泛,但是随着技术发展,逐渐被淘汰了。

MOV

MOV 是 QuickTime 格式,是 Apple 公司开发的音频、视频格式,和 AVI 格式几乎同一时间出现,现在也处于被淘汰状态。

RMVB/RM

这个格式是 Real Networks 公司所指定的音频视频压缩规范,可以根据不同的网络传输速率,而指定不同的压缩比率,从而实现低速率网络上的音视频实时传送,早起的 RMVB 格式是为了在有限带宽下在线播放视频而研发,曾经一度普及整个互联网。但现在也已经被淘汰。

MKV

MKV 是 Matroska Video 的简称,MKV 最大的特点就是能够容纳多种不同类型的视频、音频、和字幕格式。

Matroska 官网 https://www.matroska.org

MPG/MPEG

MPG 又被称为 MPEG (Moving Pictures Experts Group),是国际标准化组织认可的媒体封装格式,MPEG 一般指的是容器格式,而 MPEG-1, MPEG-2 一般是指编码格式。

一般的 MPEG4 容器封装了 H.264 编码格式,AAC 音频编码格式

Ogg

Ogg 是一个自由且开放标准的容器格式,Ogg 可以放入各种自由和开放源代码的编解码器 2, Ogg 通常用于一下编码

  • Vorbis 可变比特率,16~500 kbit/s 的音频数据,有损
  • Opus 通常用于音乐,以可变比特率处理语音,6~510kbit/s
  • [[FLAC]] 无损

常见编码格式

通常情况下未编码的音频和视频内容都非常庞大,1080p 的视频一帧 1920*1080 像素大小,假设是 8 bit,一个像素 1 字节,那么一帧的大小就是 2M 大小,一般视频 1 秒为 30 帧,那么未压缩的视频几十秒钟就会达到 1Gb 大小,所以在存储时需要经过压缩。下面就是一些常见的视频压缩算法。关于更多视频编码概念的内容可以参考这里

MPEG-1

在 1992 年制定标准,针对 1.5Mbps 以下数据传输速率而设计的国际标准,也是 VCD 制作格式。用 MPEG-1 压缩算法,大致可以将 120 分钟的电影压缩到 1.2 GB 左右大小。

MPEG-2

标准定于 1994 年,设计目标为更高工业标准的图像质量和更高的传输速率,这种压缩算法主要用于 DVD 和 SVCD 制作,在高清电视和视频编辑也有广泛的应用。使用 MPEG-2 算法可以把 120 分钟的电影压缩到 4 到 8 GB 大小。

MPEG-4

标准定于 1998 年,为播放高清流媒体而设计,可以利用窄带宽,通过帧重建技术,压缩和传输数据,可以用最少的数据获得最清晰的图像质量。这种压缩算法包含了 MPEG 标准不具备的可变比特率,版权保护等功能。

这边可以额外说一下 mp3 音频压缩,指的是 MPEG-1 或者 MPEG-2 音频压缩的 Layer III3,并不是 MPEG-3。而为什么没有 MPEG-3 是因为 MPEG-2 已经足够满足 MPEG-3 提出的目标 4,所以这个 MPEG-3 标准就被废除了。

H.264

H.264 也是 MPEG-4 第十部分,因此也叫 ISO/IEC 14496-10,或者叫做 MPEG-4 AVC,MPEG-4 Part 10 。H.264 也是 MPEG-4 的一部分。

H.264 最大的优势是很高的压缩比率,在同等画质下,H.264 压缩比是 MPEG-2 的 2 倍以上,是 MPEG-4 的 1.5 到 2 倍。H.264 需要授权付费使用。

H.265

是 H.264 的升级版,在保证画质的情况下拥有更高的压缩率。也是授权使用。

常见音频编码格式

通常情况一个媒体文件必定是有视频和音频的,而上面提到的媒体容器中有些也是支持多音频编码轨的,比如说常见的电影可能包含多个国家语言音轨,而常见的 KTV 媒体格式可能需要包含一个原声轨,一个音频轨道。

AAC

AAC 是 Advanced Audio Coding,高级音频编码,出现于 1997 年,基于 MPEG-2 音频编码技术,由 Fraunhofer IIS、杜比实验室、AT&T、Sony(索尼)等公司共同开发,目的是取代 MP3 格式。2000 年,MPEG-4 标准出现后,AAC 重新集成了其特性,加入了 SBR 技术和 PS 技术,为了区别于传统的 MPEG-2 AAC 又称为 MPEG-4 AAC. 相关的规范标准分别是 ISO/IEC 13818-7,ISO/IEC 14496-3 作为一种高压缩比的音频压缩算法,AAC 压缩比通常为 18:1,也有数据说为 20:1,远胜 mp3。

在音质方面,由于采用多声道,和使用低复杂性的描述方式,使其比几乎所有的传统编码方式在同规格的情况下更胜一筹。AAC 可以支持多达 48 个音轨,15 个低频(LFE)音轨,5.1 多声道支持,更高的采样率(最高可达 96kHz,音频 CD 为 44.1kHz)和更高的采样精度(支持 8bit、16bit、24bit、32bit,音频 CD 为 16bit)以及有多种语言的兼容能力,更高的解码效率,一般来说,AAC 可以在对比 MP3 文件缩小 30% 的前提下提供更好的音质

AC-3

Digital Audio Compression Standard 杜比实验室出品,有损压缩,可以包含 6 个独立声道。最著名的是 5.1 声道, 5 代表 5 个基本声道,可以独立连接五个不同音箱,右前 RF,中 C,左前 LF,右后 RR,左后 LR,1 则代表一个低频声效,连接低音辅助音箱(20 到 120Hz),开源解码库 liba52.

APE

APE 是 Monkey’s Audio 提供的一种无损压缩格式,APE 可以无损失高音质地压缩和还原。APE 的压缩率相当高,并且音质保持得很好,获得了不少发烧用户的青睐

DTS

DTS 是 Digital Theater Systems ,数码影院系统,由 DTS 公司开发,是一种多通道音频技术,低损,环绕立体声,被广泛应用入 DVD 等高清片源上。需要授权,和杜比公司是竞争对手,常见的是 DTS 5.1,保存 5 条音频通道数据用于立体环绕声,分别是 center, left-front, right-front, left-rear, and right-rear。

FLAC

FLAC 是 Free Lossless Audio Codec,开源无损压缩编码格式,不会破坏任何原有音频,可以还原光碟音质,被很多软件硬件产品支持。

官网: http://flac.sourceforge.net/

MP3

MPEG-1 or MPEG-2 Audio Layer III 经常被称作 MP3,是目前最流行的音频编码格式,有损压缩,相关的规范标准在 ISO/IEC 11172-3, ISO/IEC 13818-3。它设计用来大幅度地降低音频数据量,将音乐以 1:10 甚至 1:12 压缩。mp3 的比特率是可变的,在高声中包含的原始信息越多,回放时品质也越高。

根据比特率,MP3 可以分为

  • MP3-CBR,固定码率
  • MP3-VBR,动态码率

Opus

Opus 是一个有损编码格式,适用于网络低延迟,实时声音传输,标准 RFC 6716。Opus 是开放格式,没有专利和限制,目标希望去代替 Speex 和 Vorbis。

2018 年 10 月,Xiph.Org 基金会开发了 Opus 1.3 版本,改进了语音和音乐质量,兼容 RFC 6716,该版本首次加入环绕立体声格式 Ambisonics 支持。5

总结

在归纳了目前市面上常见的媒体文件容器和编码之后,我们应该知道 WebM 是一个媒体容器,在 YouTube 上应用广泛。WebM 容器可以放入不同编码的音视频流,所以在下载了一个 webm 的文件之后可以使用

ffmpeg -i file.webm

来查看容器中的媒体文件,就我个人情况,因为 YouTube 很大一部分是用户上传,所以有些情况下 YouTube 的音频还是会选用 aac 编码,当然我也遇到过 opus。

reference

  1. https://en.wikipedia.org/wiki/WebM 

  2. https://zh.wikipedia.org/wiki/Ogg 

  3. https://en.wikipedia.org/wiki/MP3 

  4. https://en.wikipedia.org/wiki/MPEG-3 

  5. https://people.xiph.org/~jm/opus/opus-1.3/