1.3 常见文件与编码格式
音视频内容在多数时候都是以文件形式存储,互联网用户泰半都有下载视频或音频文件播放的经历,此外手机、数码相机、摄像头等数字设备也大量地生成各种各样的音视频文件。在市场上由于技术的发展和不同公司的竞争,产生出许多流行的文件格式,较著名的有WAV、MP3、RM、MPG、WMV、WMA、AVI、MOV、MP4、3GP、FLV、MKV、AC3、AMR、OGG、AAC、APE等。习惯上,因为视频相较音频占据主要地位,既包含视频内容也包含音频内容的文件被称作视频文件,而音频文件常常指仅有音频内容的文件。
音视频编码技术是视频行业存在的前提,视频信号数字化后占用大量的存储空间和数据带宽,高清视频的码率往往可以达到约200Mbit/s,以此推算120分钟的电影将占到180GB以上,无论从存储还是传输角度,都是一个难以接受的数字,而通常可以下载的高清电影视频,也不过是2~8GB大小,这其中依靠的就是音视频编码技术了。
所谓编码技术,实质是一种针对特定音视频格式内容压缩成另一种视频格式的方式。随着技术的发展,市场上常见的视频压缩技术有RV、VC-1、MPEG2、H.263、H.264、H.265、VP8、VP9等,音频压缩技术包含MP3、RA、AMR、AAC、Vorbis、AC3、APE等,而上述的文件格式,则定义了作为一个容器如何将视频和音频编码完成的内容封装在内的方法。
举例而言,一个MP4文件内,可能包含通过H.264技术编码的视频内容以及通过AAC技术编码的音频内容,而MP4文件如何规范视频、音频及其他信息在这单一文件内的存储方式,则被称作打包技术或封装技术。不同编码技术的出发点大体一致,都是为了让音视频内容的质量可以损失更小,压缩率更高,不同的文件封装技术则略有不同,有些是为了支持特定的编码技术,有些则希望通过支持多种不同的编码技术,成为较为通用的容器。下文将分门别类地介绍一些常见、典型的文件和编码格式。
1.3.1 上古时代
(1)WAV
很多人应该会对Windows3.X或Windows 95/98中的系统声音印象深刻,彼时如果查看系统目录,可以找到对应的声音文件都是WAV格式。WAV是微软开发的一种声音文件格式,它实际是采用RIFF文件规范存储的,WAV是文件的扩展名,内中音频的格式通常是PCM,也可以存储一些压缩过的数据。常见的WAV文件和CD格式一样,具有44.1K的采样率,16位采样位数,并支持单声道或立体声,即WAV文件的大小可以通过采样率×采样位数×声道×时间计算得出(需除以8,因为1字节=8Bit)。
(2)MP3
以WAV为代表的音频文件因为未经压缩,所以较少用来存储较长的声音内容,在20世纪末,大量音频文件使用MP3格式进行存储,下载和交换,提供较好的音质和压缩比率,甚至催生了以此为名的硬件设备,虽然市场上早有压缩率更好的格式诞生,但MP3格式一直流行到现在。MP3的准确名称应为MPEG-1或MPEG-2Audio Layer 3,它的发明和标准化是由德国的研究组织Fraunhofer-Gesellschaft完成的,而它的普及,则对整个世界的音乐生态影响深远。
MP3实质是对PCM数据中涉及的人类听觉不重要的部分进行舍弃,从而压缩得到较小的文件,它提供多种不同的bitrate(每秒所需数据)的选择,常见速率有128kbit/s、192kbit/s、320kbit/s等。
(3)RM、RMVB、RV、RA
RM即RealMedia,是RealNetworks公司创建的专用多媒体容器格式,文件扩展名多用“.rm”,通常用于RealVideo和RealAudio的结合,一般是CBR(固定码率)编码,RMVB则是RM的换代格式,支持可变码率。RM格式的主要特征在于不需要下载完整文件即可播出,并可以根据不同的网络传输速率制定不同的压缩比率,可见它一开始就定位在流媒体应用方面。
每个RM文件内部,是由一系列的Chunk组成,每一个Chunk的格式如下。
注:③FOURCC是一个4个字节32位的标识符,通常用来标示视频数据流的格式,播放软件可以通过查询FOURCC代码并寻找对于解码器来播放特定视频流,取值通常由各个格式标准自行定义,如DIV3、DIVX等。
RM文件支持的Chunk类型包括.RMF(文件头)、PROP(文件属性)、MDPR(流属性)、CONT(内容描述)、DATA和INDX(文件索引),更多文件格式信息可见参考文章。
RV是RealNetworks独有的视频编码格式,由于采用了诸多领先的技术,在低码率情况下有非常出色的压缩比,相对应的,RA格式是公司专有的音频编码格式。普通RM文件中使用RV8.0版本,而RMVB文件中则通常是RV9.0或10.0版本,实际RM与RMVB格式可以支持另外一些编码器版本,但并不常见。
(4)MPG
MPG文件后缀名可以是“.mpg”或“.mpeg”,内含两种文件格式,即PS(Program Stream,节目流)和TS(Transport Stream,传输流),分别用于不同的场合,根据格式不同,后缀名也可能是“m2p”“.ps”或“.ts”。
PS格式来自于标准MPEG-1Part1(ISO/IEC 11172-1)和MPEG-2Part1(ISO/IEC 13818-1/ITU-T H.222.0),PS格式由一个或多个PES组成(Packetized Elementary Streams,封装的基本流),其中每个流具有一个时间基准,用来在磁盘上进行存储。该格式里面还可以包含多种格式。
TS格式则更适合网络传播,同样来自ISO/IEC 13818-1标准。在逻辑上,一个TS文件(或传输流)包含一组SubStream(即PES),可以是视频、音频、MJPEG或JPEG2000的图片、字幕或EPG(见图1-14)。每个流都被分解组装到188字节大小的包中,由于每个包都较小,可以容易部分地传输,各个流之间可以交错排布。
图1-14 EPG信息展示
每个TS包都包含有一个4字节大小的包头,其中包含同步字节和PID(Packet Identifier,包标识)等信息,每个PID值都描述了TS中的一个流,例如,当PID为0×0时,表示当前流为PAT,描述了整个TS包含的信息。而PAT流中另行描述了PMT流的PID,据此可以找到其他各个音视频流的信息。PAT和PMT可以被统称作PSI(即Program Specific Information,节目专用信息,实际这个概念下还包含CAT和NIT两种流),也是解析TS文件的关键。更详细的信息可参考标准文档或维基百科。
(5)WMV、WMA、ASF、MMS、AVI
WMV是一系列由微软开发的视频编码格式和文件格式,其中WMV version 9因为被许多地方选用而以VC-1编码格式之名为人熟知,微软为此专门开发了一种名为ASF的文件格式来存储,但后缀名既可能为“.asf”,也可能为“.wmv”。与之相伴,名为WMA的音频编码格式,能够以较MP3少1/3~1/2的码率存储相似音质的音频,通常后缀名为“.wma”。微软在同时代还曾开发过名为MMS的流媒体协议,基于UDP或TCP进行传输,后升级为MS-WMSP协议(又称WMT,即Windows Media HTTP Streaming Protocol),可以使用HTTP传输。
AVI全称Audio Video Interleaved,是微软在很早便推出的多媒体文件格式,但因其良好的适应性,仍然被广泛使用。AVI可以支持非常广泛的音视频编码格式,包括较新的H.264、HE-AAC等。AVI由RIFF格式衍生,它的文件结构分为头部、主题和索引三部分,描述信息通常放在INFO chunk里,视频和音频数据在主体中依照时间信息交互存放,从存在尾部的索引可以任意跳到视频流的中段。因为索引的尾部设计,AVI不太适用于流媒体传输的场景,更详细的文件格式描述可以参考MSDN。
1.3.2 “现代”格式
(1)MOV、MP4、3GP
MOV文件是苹果公司对多媒体行业的一大贡献,它又被称作QuickTime File Format,可以包含一个或多个Track,每个Track存储:视频、音频或字幕中的一种类型的数据,每个Track又由一个层次分明的Object结构组成(每个Object又叫Atom)。一个Atom可以包含其他Atom,也可以包含多媒体数据,但不能兼得。
MP4文件几乎完全基于QuickTime文件格式,它由标准ISO/IEC 14496-12规定,并且添加了extension,形成MPEG-4Part14(见图1-15)。MP4文件还常有另外一些文件名后缀,如“.mpa”,“.m4v”等。详细的文件格式定义可参见标准文档。
图1-15 MP4文件格式关系(图片来自Wikipedia)
MP4文件用于下载播放时,moov对象应写在mdat对象前面,以便在访问数据前收到所有的metadata信息。用于流媒体播放时,则文件内应有特殊的Track(Hint Track),每条Hint Track将与一条多媒体Track连接,用于描述流式传输所需的信息。
3GP常被称作3GPP文件,是由3GPP组织定义的文件格式,设计目的是用于3G移动网络中,其定义和MP4非常像,也是基于MPEG-4Part12发展出来的。另外又有3G2或称作3GPP2的文件格式,其和3GP文件的区别是,一个用于GSM网络,另一个用于CDMA网络。
一个典型QTFF文件的Atom层次示例如图1-16所示。
图1-16 QuickTime文件格式(图片来自苹果网站)
(2)FLV、F4V
这是一种随着Flash发展而发布的,适用于流媒体传输的视频格式,内部初始基于Sorenson公司的编码算法,也支持H.263及VP6等格式。由于YouTube、Hulu、优酷、土豆等网站早期均大量使用Flash技术,FLV文件也变得非常流行。与之配合,FLV文件的传输多使用RTMP协议,Adobe还提供免费的Flash Media Encoder(Flash媒体编码器)帮助生成FLV格式的文件。
在Flash Player 9的Update3中,Adobe推出了F4V格式,主要为支持H.264和AAC编码,文件格式完全基于ISO Base Media File Format(即ISO/IEC 14496-12)的标准,与MP4、3GP文件格式等高度相似。详细的FLV/F4V文件格式可见Adobe网站的Spec说明。
(3)MKV
随着互联网视频的流行,一种兼容多种媒体类型的容器格式(文件格式)流行开来,这就是Matroska,MKV即是Matroska系列中的一种格式,其后缀名多为“.mkv”,另有适用于单一音频的“.mka”文件和独立的字幕文件“.mks”。
从概念上讲,MKV容器和MP4、AVI、ASF等处于同一层次,吸引开发者和用户注意之处是其免费和开源,它的最大特点就是支持多种不同类型编码的视频、音频、字幕,甚至包括章节、标签信息,还可以加上附件。此外,MKV支持EDC错误检测代码,意味着没有下载完成的MKV也可以播放,且容器本身占用的空间比其他格式还要略小。具体文件格式细节可见Matroska的社区网站。
(4)AC3
Dolby Digital格式,又称作AC3,是Dolby(杜比)公司开发的一系列有损或无损音频格式中的一种,其规格标准的名称为ATSC A/52,俗称5.1,因为音频内容包含5个不同的基础声道[即右前(RF)、中(C)、左前(LF)、右后(RR)、左后(LR)]以及一个低频声道。与之相关的还有Dolby Digital EX(杜比数字扩展)、Dolby Digital Live(杜比数字直播)等,其中Dolby Digital Plus应用较为广泛,支持多达14声道,别名为EAC3。在广播电视领域中,AC3或EAC3常常用作原始文件的格式,也可通过TS流形式传输,常见的码率有384kbit/s,448kbit/s等。关于AC3和EAC3的详细描述,可参考ATSC的标准文档。
近年来,杜比又开发了全景声技术(Dolby Atmos),继续其在高质量影音播放效果方面的布局,但它和AC3/EAC3技术不能兼容。
(5)H.263、MPEG4
MPEG标准组织曾定义MPEG1、MPEG2、MPEG3和MPEG4格式,希望适应不同带宽和视频质量的要求,微软在1998年开发了第一个MPEG-4编码器,包括MS MPEG4v1、MS MPEG4v2和MS MPEG4v3系列,其中V3的画质有显著进步,曾经颇为流行的DivX即是盗版MS MPEG4v3并加入了一些特性得到的编码器。
H.263是ITU-T为视频会议设计的低码率视频编码标准,之后还有增加了新功能的H.263v2和H.263v3。H.263和MPEG4两种编码格式的设计存在很多相似之处,二者曾在世纪初满足了很多领域视频编码的需求,虽然现在被认为已经过时,在各个环节都被H.264和HEVC取代,然而还有一些仍在服役的设备和软件使用它们,还有被转码成较新格式或播放的需求。
(6)H.264
标准MPEG4Part10,Advanced Video Coding中规定的编码格式,缩写为MPEG-4AVC,又称作H.264,是当前应用最为广泛的视频编码格式。编码格式基于较新的运动补偿的方式设计,第一个版本于2003年完成,陆续增加了多个新特性,其MPEG4AVC的名称来自于MPEG组织,而H.264的命名则延续了ITU-T社区的约定。关于H.264技术的详细内容,后文将给予专门的介绍。
H.264之所以可以得到或许是历史上最广泛的应用,除了它代表近年来比较先进的视频压缩技术,很重要的因素在于其专利许可政策标准(价格)较低并具备很强的操作性。首先,AVC许可政策每台设备仅收取0.2美元的费用,远低于前一代MPEG-2格式的每终端约5美元的价格(2002年降价后也需要2.5美元),相比MPEG4,取消了按编解码时间收费。
H.264的许可政策对较小规模的使用完全免费,收费仅针对较大的设备出货量且存在封顶,这让商业模式变得非常灵活,例如思科可以开放其H.264视频编解码器的源代码,所有人都可以免费使用,就因为思科已经缴足了封顶的专利费用。对于点播服务,专利收费政策也十分友好,按次付费则仅对12分钟以上的内容收取终端用户付费的2%,如按月付费的会员制则在超过100万用户/年的情况下仅封顶收取10万美元。
编码格式详细描述可见ISO标准文档。
(7)H.265
High Efficiency Video Coding简称HEVC,又称作H.265。与H.264相似,两个不同名称分别来自于ISO/IEC MPEG工作组和ITU-T,目标是替代H.264成为新一代视频编码标准。HEVC在编码效率上较H.264有接近50%的提升,可以支持最高8K分辨率,当然作为代价,在编码方法上也更为复杂。与H.264类似,HEVC也采用Hybrid(混合)编码架构(见图1-17),但加入了许多新的工具集。此外,该标准也拓展到360度视频、3D视频等。
图1-17 Hybrid编码架构(图片来自Wikipedia)
虽然HEVC的标准已经开发完成数年并且相比H.264有很大的压缩效率优势,但并没有得到很好的普及,究其原因是专利费的问题未能很好地解决。当前一共有几个主要的专利组织和公司声称握有部分HEVC的专利,要求收费,包括MPEG-LA、HEVC-Advance专利池等,Velos Media和Technicolor公司等也都有独立发起的专利池或专利收取意向,且在费用需求上非常巨大,让硬件和服务商望而却步(图1-18)。另一方面,由于HEVC推广步履维艰,与之竞争的编码标准格式近年吸引了大量关注,除YouTube外,Netflix等很多其他公司也大量采用VP9格式编码视频,以及持续关注号称完全开源和免费的AV1。
图1-18 HEVC的专利收费(图片来自参考文章)
最新的HEVC编码方式可详见标准文档ISO/IEC 23008-2。
(8)AAC
德国的Fraunhofer-Gesellschaft协会下设80多个研究所,曾发明MP3等格式,为了比MP3得到更好的压缩性能,研究所和AT&T、杜比公司、索尼和诺基亚一起,设计了AAC格式。在后续章节中,我们会对AAC格式进行详细的介绍。因为AAC的优异特征,早先在MPEG2中就被标准化,见于ISO/IEC 13818-7,在加入SBR和PS技术后,又被作为MPEG4标准的一部分,称为MPEG-4AAC,以ISO/IEC 14496-3为人所知。
1.3.3 独树一帜
(1)WEBM、VP9、OGG、Vorbis
WEBM项目受Google资助,采用Matroska格式为基础进行封装,内部采用On2Technologies开发的VP8和后续版本VP9视频编码器以及Vorbis、Opus音频编码器。On2公司曾开发颇为流行的VP系列编码器,尤以VP6知名,被Flash 8采用作为视频编码格式,后为Google收购。
2010年,在Google I/O上,VP8被以BSD License授权开源并允许所有人免费使用,Google从MPEG-LA取得了VP8可能受影响的专利,再次授权给VP8的使用者,解除使用者的后顾之忧。VP9作为VP8的后续版本,被Google期望与HEVC竞争。以WEBM格式、VP9、Vorbis为核心,Google的野心在于统一HTML5的视频编解码支持,Chrome、Mozilla都在浏览器内嵌支持VP9。
与VP8/VP9相伴,Vorbis是一种有损音频编码格式,由Xiph.Org基金会领导开发,通常以Ogg作为容器格式,所以也常被称作OGG音频,同时Vorbis可以被封装于Matroska格式中,也可用于作为Matroska子集的WebM。
(2)APE
无损音频编码格式APE,又称作Monkey’s Audio,与前面介绍的MP3、AC3/EAC3、AAC、Vorbis不同,这种编码格式可以保证解码出来的音频和原文件听起来完全一样。这是一种免费的编码格式,与之相似的还有FLAC等格式,在需要提供高品质音频下载服务时常被用到。
在工业界几十年的发展过程中,曾经广泛使用的文件格式和编码技术远不止上述种类,还有如ALACDV、DivX、G.719、G.722、G.723、MOD、Sorenson、VOB等,国内一些标准(如AVS、AVS2等)也取得了一定的用户。但由于多媒体工业已经发展到一定的阶段,占优势的格式会形成马太效应,除通用播放器,编码器需要比较注意完整的格式支持以外,大多数在线服务仅需要选取少量可以跨平台支持的编码和文件格式。