背景
平时我们从网站下载的电影文件有不同的格式,用不同的后缀表示:avi,rmvb,mp4,flv,mkv等等(当然也使用不同的图标)。在这里需要注意的是,这些格式代表的是封装格式
封装格式
就是把视频数据和音频数据打包成一个文件的规范. 仅仅靠看文件的后缀,是很难看出具体使用了什么视音频编码标准. 总的来说,不同的封装格式之间差距不大,各有优劣
名称 | 推出机构 | 流媒体 | 支持的视频编码 | 支持的音频编码 | 目前使用领域 |
---|---|---|---|---|---|
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, Cook Codec, RealAudio Lossless | BT下载影视 |
由表可见,除了AVI之外,其他的封装格式都支持流媒体,即可以边下边播. 有些格式更万能一些,支持的视音频编码标准多一些,比如MKV而有些格式则支持的相对比较少,比如说:RMVB.
有些封装格式支持的视音频编码标准十分广泛,应该算比较优秀的封装格式,比如: MKV.而有些封装格式支持的视音频编码标准很少,应该属于落后的封装格式,比如: RMVB.
视频播放原理
a) 技术点:
1、封装技术
2、视频压缩编码技术
3、音频压缩编码技术
4、考虑到网络传输的话,还包括流媒体协议技术
b) 视频播放器播放一个互联网上的视频文件,需要 经过以下几个步骤
1、解协议
2、解封装
3、解码视音频
4、视音频同步
c) 播放本地文件则不需要解协议为以下几个步骤
1、解封装
2、解码视音频
3、视音频同步
- 解协议的作用
就是将流媒体协议的数据,解析为标准的封装格式数据。视音频在网络上传输的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等. 这些协议在传输视音频数据的同时,也会传输一些信令数据.这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等.解协议的过程中会去除掉信令数据而只保留视音频数据.例如: 采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据 - 解封装的作用
就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。封装格式种类很多,例如: MP4,MKV,RMVB,TS,FLV,AVI 等等他的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起.例如: FLV 格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流 - 解码的作用
就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等解码是整个系统中最重要也是最复杂的一个环节.通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如:YUV420P,RGB等等压缩编码的音频数据输出成为非压缩的音频抽样数据,例如:PCM数据 - 视音频同步的作用
就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来
视频编码
视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成视频码流,从而降低视频的数据量。如果视频不经过压缩编码的话,体积非常的大,一部电影可能就要上百G的空间.视频编码是视音频技术中最重要的技术之一.视频码流的数据量占了视音频数据量的绝大部分.高效的视频编码技术在同等的码率下,可以获得更高的视频质量
名称 | 推出机构 | 推出时间 | 目前使用领域 |
---|---|---|---|
HEVC(H.265) | MPEG/ITU-T | 2013 | 研发中 |
AVC(H.264) | MPEG/ITU-T | 2003 | 各个领域 |
MPEG4 | MPEG | 2001 | 不温不火 |
MPEG2 | MPEG | 1994 | 数字电视 |
VP9 | 2013 | 研发中 | |
VP8 | 2008 | 不普及 | |
VC-1 | Microsoft Inc. | 2006 | 微软平台 |
目前使用的最多的视频编码方案就是H.264
音频编码
自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。
将音频采样数据(PCM等)压缩成音频码流,从而降低音频的数据量。音频编码也是互联网视音频技术中的一个重要技术.但是一般情况下音频的数据量要远小于视频的数据量.因而即时使用稍微落后的音频编码标准,而导致音频数据量有所增加,也不会对视音频总数据量产生太大的影响.高效率的音频在同等码率下,可以获得更好的音质。
名称 | 推出机构 | 推出时间 | 目前使用领域 |
---|---|---|---|
AAC | MPEG | 1997 | 各个领域(新) |
AC-3 | Dolby Inc. | 1992 | 电影 |
MP3 | MPEG | 1993 | 各个领域(旧) |
WMA | Microsoft Inc. | 1999 | 微软平台 |
采样率和采样大小
1、声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线
2、波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行采样
3、采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复原波形,一次振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要求,则需要至少每秒进行40k次采样,用40kHz表达,这个40kHz就是采样率。我们常见的CD,采样率为44.1kHz
4、光有频率信息是不够的,我们还必须获得该频率的能量值并量化,用于表示信号强度
5、量化电平数为2的整数次幂,我们常见的CD位16bit的采样大小,即2的16次方
有损和无损
根据采样率和采样大小可以得知,相对自然界的信号,音频编码最多只能做到无限接近,至少目前的技术只能这样了,相对自然界的信号,任何数字音频编码方案都是有损的,因为无法完全还原。在计算机应用中,能够达到最高保真水平的就是PCM编码,被广泛用于素材保存及音乐欣赏,CD、DVD以及我们常见的WAV文件中均有应用。因此,PCM就被约定俗成的认为是无损编码,因为PCM代表了数字音频中最佳的保真水准,并不意味着PCM就能够确保信号绝对保真,PCM也只能做到最大程度的无限接近。我们而习惯性的把MP3列入有损音频编码范畴,是相对PCM编码的。强调编码的相对性的有损和无损,是为了告诉大家,要做到真正的无损是困难的,就像用数字去表达圆周率,不管精度多高,也只是无限接近,而不是真正等于圆周率的值。