刚入音视频这个行业,觉得非常奇妙,又苦于自己是小白,于是在网上干起了技术资料的搬运工,希望对自己的学习工作有帮助。
平时我们打开电脑中自己存放电影的目录的话,一般都会如下图所示,一堆五花八门的电影。
因为下载下来的来源不同,这些电影文件名有不同的格式,用不同的后缀名表示:.avi,rmvb,mp4,flv,mkv等等(当然也使用不同的图标)。在这里需要注意的是,这些格式代表封装格式。何谓封装格式?就是把视频数据和音频数据打包成一个文件的规范。仅仅看文件名的后缀,很难看出具体采用什么音视频编码标准。总的说来,不同的封装格式之间差距不大,各有优劣。
注:有些封装格式支持的音视频编码标准十分广泛,应该算比较优秀的封装格式,比如mkv;而有些封装格式支持的音视频编码标准很少,应该属于落后的封装格式,如RMVB。
下面演示如何用视频播放器查看一个视频文件采用的音视频编码技术:
注:在这里使用Media Player Classic作演示,实际上暴风影音、KMplayer这些操作都差不多。
1、打开一个视频文件
2、在视频画面上右击,选择属性。
3、在弹出的属性“对话框”的“Medioinfo”选项卡中,就可以查看该视频使用的音视频技术了。如下图所示,变形金刚预告片采用MPEG4的QuickTime封装格式(MOV),采用H.264(AVC)压缩编码标准。
在这里用到了一个查看媒体信息的工具:MediaInfo。MediaInfo是一个专门查看音视频格式的工具。
生活中的音视频技术到此为止,下面介绍一些具体的音视频技术。
音视频技术主要包含以下几点:封装技术、视频压缩编码技术以及音频压缩编码技术。如果考虑到网络传输的话,还包括流媒体协议技术。
视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议、解封装、解码音视频、音视频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装、解码音视频、音视频同步。他们的过程如下图所示:
1、解协议的作用就是将流媒体协议的数据解析为标准的相应的封装格式数据。音视频在网络上传播的时候常常采用各种流媒体协议,例如HTTP、RTMP或者是MMS等等。这些协议在传输音视频数据的同时,也会传输一些信令信息。这些信令数据包括对播放的控制(播放、暂停、停止),或者对网络状态的描述等。解协议的过程中会除掉信令数据而只保留音视频数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。
2、解封装的作用就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装的格式种类很多,例如MP4、MKV、RMVB、TS、FLV、AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。例如,FLV格式的数据经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。
3、解码的作用就是将视频/音频压缩编码数据解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC、MP3、AC-3等等,视频的压缩编码标准则包含H.264、MPEG2、VC-1等等。解码是整个系统中最重要也是最复杂的一个环节。通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P、RGB等等;压缩编码的音频数据输出成为非压缩的音频采样数据,例如PCM数据。
4、音视频同步的作用就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的音/视频数据,并将视频音频数据送至系统的显卡和声卡播放出来。
接下来的几节我们将会列出主要的流媒体协议、封装格式以及音视频编码标准。
流媒体协议是服务器与客户端之间通信遵循的规定。当前网络上主要的流媒体协议如下表所示。
名称 | 推出机构 | 传输层协议 | 客户端 | 目前使用领域 |
RTSP+RTP | IETF | TCP+UDP | VLC、WMP | IPTV |
RTMP | Adobe Inc. | TCP | Flash | 互联网直播 |
RTMFP | Adobe Inc. | UDP | Flash | 互联网直播 |
MMS | Microsoft Inc. | TCP/UDP | WMP | 互联网直播+点播 |
HTTP | WWW+IETF |
TCP | Flash | 互联网点播 |
RTSP+RTP经常用于IPTV领域。因为其采用UDP传输音视频,支持组播,效率较高。但其缺点是网络不好的情况下可能会丢包,影响视频观看质量。因而围绕IPTV的视频质量的研究还是挺多的。
因为互联网网络环境的不稳定性,RTSP+RTP较少用于互联网音视频传输。互联网视频服务通常采用TCP作为其流媒体的传输层协议,因而像RTMP、MMS、HTTP这类的协议广泛用于互联网音视频服务之中。这类协议不会发生丢包,因而保证了视频的质量,但是传输的效率会相对低一些。
此外RTMFP是一种比较新的流媒体协议,特点是支持P2P。
封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。现如今流行的封装格式如下表所示:
主要封装格式一览
名称
推出机构
流媒体
支持的视频编码
支持的音频编码
目前使用的领域
AVI
Microsoft Inc.
不支持
几乎所有格式
几乎所有格式
BT下载影视
MP4
MPEG
支持
MPEG-2、MPEG-4、H.264、H.263等
AAC、MPEG-1 Layers I,II,III、AC-3等
互联网视频网站
TS
MPEG
支持
MPEG-1、MPEG-2、MPEG-4、H.264
MPEG-1 Layers I,II,III、AAC
IPTV、数字电视
FLV
Adobe Inc.
支持
Sorenson、VP6、H.264
MP3、ADPCM、Linear PCM、AAC等
互联网视频网站
MKV
CoreCodec Inc.
支持
几乎所有格式
几乎所有格式
互联网视频网站
RMVB
Real Networks Inc.
支持
RealVideo 8,9,10
AAC、Cock Codec、RealAudio LOssless
BT下载影视
由表可见,除了AVI之外,其他封装格式都支持流媒体,即可以“边下边播”。有些格式更“万能一些”,支持的音视频编码标准多一些,比如MKV。而有些格式则支持的相对较少,比如RMVB。
视频编码的主要作用是将视频像素数据(RGB、YUV等)压缩成为视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间。视频编码是音视频技术中最重要的技术之一。视频码流的数据流占了音视频总数据量的绝大部分。高效率的视频编码在同等的码率下,可以获得更高的视频质量。
注:视频编码技术在整个音视频技术中应该是最复杂的技术。如果没有基础的话,可以先买一些书看一下原理,比如说《现代电视原理》《数字电视广播原理与应用》(本科的课本)中的部分章节。
主要的视频编码一览
名称
推出机构
推出时间
目前使用领域
HEVC(H.265)
MPEG/ITU-T
2013
研发中
H.264
MPEG/ITU-T
2003
各个领域
MPEG4
MPEG
2001
不温不火
MPEG2
MPEG
1994
数字电视
VP9
2013
研发中
VP8
2008
不普及
VC-1
Microsoft Inc.
2006
微软平台
音频编码的主要作用是将音频采样数据(PCM等)压缩成音频码流,从而降低音频的数据量。音频编码也是互联网音频技术中一个重要的技术。但是一般情况下音频的数据量要远小于视频的数据流,因而即使使用稍微落后的音频编码标准,而导致音频数据量有所增加,也不会对音视频的总数据量产生太大的影响。高效率的音频编码在同等的码率下,可以获得更高的音质。
名称 | 推出机构 | 推出时间 | 目前使用领域 |
AAC | MPEG | 1997 | 各个领域(新) |
AC-3 | Dolby Inc. | 1992 | 电影 |
MP3 | MPEG | 1993 | 各个领域(旧) |
WMA | Microsoft Inc. | 1999 | 微软平台 |
由表可见,近年来并未推出全新的音频编码方案,可见音频编码技术已经基本可以满足人们的需要。音频编码技术近期绝大部分的改动都是在MP3的继任者——AAC的基础上完成的。
现有的网络音频服务主要包括两种方式:点播和直播。点播意即根据用户的需要播放相应的视频节目,这是互联网音视频服务最主要的方式。绝大部分视频网站都提供了点播服务。直播意即互联网音视频平台直接将视频内容实时发送给用户,目前还处于发展阶段。直播在网络电视台、社交视频网站较为常见。
主流互联网音视频平台直播服务的参数对比如下表所示:
现有网络视音频平台参数对比
名称 |
协议 |
封装 |
视频编码 |
音频编码 |
播放器 |
CNTV |
私有 |
||||
华数TV |
RTMP |
FLV |
H.264 |
AAC |
Flash |
六间房 |
RTMP |
FLV |
H.264 |
AAC |
Flash |
中国教育电视台 |
RTMP |
FLV |
H.264 |
AAC |
Flash |
北广传媒移动电视 |
RTMP |
FLV |
H.264 |
AAC |
Flash |
上海IPTV |
RTSP+RTP |
TS |
H.264 |
MP2 |
机顶盒 |
可以看出,直播服务普遍采用了RTMP作为流媒体协议,FLV作为封装格式,H.264作为视频编码格式,AAC作为音频编码格式。采用RTMP作为直播协议的好处在于其被Flash播放器支持。而Flash播放器如今已经安装全球99%的电脑上,并且与浏览器结合的很好。因此,这种流媒体直播平台可以实现“无插件直播”,极大的简化了客户端的操作。封装格式、视频编码、音频编码方面无一例外的使用了FLV+H.264+AAC的组合。FLV是RTMP使用的封装格式,H.264是当今实际应用中编码效率最高的视频编码标准,AAC则是当今实际应用中编码效率最高的音频编码标准。视频播放器方面都使用了Flash播放器。
主流网络音视频平台点播服务的参数对比如下表所示。
现有互联网视音频平台参数对比
名称 |
协议 |
封装 |
视频编码 |
音频编码 |
播放器 |
CNTV |
HTTP |
MP4 |
H.264 |
AAC |
Flash |
CNTV(部分) |
RTMP |
FLV |
H.264 |
AAC |
Flash |
华数TV |
HTTP |
MP4 |
H.264 |
AAC |
Flash |
优酷网 |
HTTP |
FLV |
H.264 |
AAC |
Flash |
土豆网 |
HTTP |
F4V |
H.264 |
AAC |
Flash |
56网 |
HTTP |
FLV |
H.264 |
AAC |
Flash |
音悦台 |
HTTP |
MP4 |
H.264 |
AAC |
Flash |
乐视网 |
HTTP |
FLV |
H.264 |
AAC |
Flash |
新浪视频 |
HTTP |
FLV |
H.264 |
AAC |
Flash |
可以看出,点播服务普遍采用了HTTP作为流媒体协议,H.264作为编码格式,AAC作为音频编码格式。采用HTTP作为点播协议有以下两点优势:一方面,HTTP是基于TCP协议的应用层协议,媒体传输过程中不会出现丢包现象,从而保证了视频的质量;另一方面,HTTP被绝大部分的Web服务器支持,因而流媒体服务机构不必投资购买额外的流媒体服务器,从而节约了开支。点播服务采用的封装格式有多种:MP4、FLV、F4V等,它们之间的区别不是很大。视频编码标准和音频编码标准是H.264和AAC。这两种标准分别是当今实际应用中编码效率最高的视频标准和音频标准。视频播放器方面,无一例外的都使用了Flash播放器。