1、视频播放原理

1.1、播放器
视音频技术包括流媒体协议技术、封装技术、视音频压缩编码技术。
| 播放器 |
|---|
| Media Player Classic - HC |
| MPlayer |
| FFPlay |
| XBMC |
1.2、流媒体协议
流媒体协议是服务器与客户端之间通信遵循的规定,视音频采用各种流媒体协议,在网络上传输视音频数据的同时,也会传输信令数据,包括对播放的控制或者对网络状态的描述等。
| 名称 | 推出机构 | 传输层协议 | 客户端 | 目前使用领域 |
|---|---|---|---|---|
| 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 | 采用UDP传输视音频,支持组播,效率较高,常用于IPTV领域。 |
| 但其缺点是网络不好的情况下可能会丢包,影响视频观看质量,因而围绕IPTV视频质量的研究较多。 | |
| 因为互联网网络环境的不稳定性,RTSP+RTP较少用于互联网视音频传输。 | |
| RTMP,MMS,HTTP | 互联网视频服务通常采用TCP作其流媒体的传输层协议,因而RTMP,MMS,HTTP这类协议广泛用于互联网视音频服务之中。 |
| 这类协议不会发生丢包,因而保证了视频的质量,但是传输的效率会相对低一些。 | |
| RTMFP | 较新的流媒体协议,特点是支持P2P。 |
1.3、解协议
将流媒体协议的数据,解析为标准的相应的封装格式数据。
解协议的过程中会去除掉信令数据而只保留视音频数据。
例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据。
1.4、封装格式
将已经压缩编码的视频数据和音频数据按照一定的格式放到一起。
有些封装格式支持的视音频编码标准十分广泛,算比较优秀的封装格式,比如MKV;
而有些封装格式支持的视音频编码标准很少,属于落后的封装格式,比如RMVB。
| 名称 | 推出机构 | 流媒体 | 支持的视频编码 | 支持的音频编码 | 目前的使用领域 |
|---|---|---|---|---|---|
| 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下载影视 |
| 其他封装格式 |
|---|
| MOV |
| WMV |
1.5、解封装
将输入的封装格式数据,分离成音频流压缩编码数据和视频流压缩编码数据。
例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。
1.6、编码
1.6.1、视频压缩编码标准
视频编码的主要作用是将视频像素数据RGB,YUV等压缩成为【视频码流】,从而降低视频的数据量。
高效率的视频编码在同等的码率下,可以获得更高的视频质量。
当前使用最多的视频编码方案就是H.264。
在码率一定的情况下,编码标准的比较:
1 | HEVC > VP9 > H.264> VP8 > MPEG4 > H.263 > MPEG2 |
| 名称 | 推出机构 | 推出时间 | 目前使用领域 |
|---|---|---|---|
| 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 | 微软平台 |
视频压缩编码器
| 编码器 | 编码标准 |
|---|---|
| JM | H.264 |
| x264 | H.264 |
| HM | H.265/HEVC |
| x265 | H.265/HEVC |
1.6.2、音频压缩编码标准
音频编码的主要作用是将音频采样数据PCM等压缩成为【音频码流】,从而降低音频的数据量。
高效率的音频编码在同等的码率下,可以获得更高的音质。
| 名称 | 推出机构 | 推出时间 | 目前使用领域 |
|---|---|---|---|
| AAC | MPEG | 1997 | 各个领域 |
| AC-3 | Dolby Inc. | 1992 | 电影 |
| MP3 | MPEG | 1993 | 各个领域 |
| WMA | Microsoft Inc. | 1999 | 微软平台 |
1.7、解码
将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。
通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P、RGB等等;
压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据。
| 视频原始数据 |
|---|
| YUV |
| RGB |
| 音频原始数据 |
|---|
| PCM |
1.8、视音频同步
根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。
1.9、网络视音频
1.9.1、直播
1 | 直播服务普遍采用了RTMP作为流媒体协议,FLV作为封装格式,H.264作为视频编码格式,AAC作为音频编码格式。 |
FLV是RTMP使用的封装格式,H.264是当今实际应用中编码效率最高的视频编码标准,AAC则是当今实际应用中编码效率最高的音频编码标准。
1.9.2、点播
1 | 点播服务普遍采用了HTTP作为流媒体协议,H.264作为视频编码格式,AAC作为音频编码格式。 |
采用HTTP作为点播协议有以下两点优势:
一方面,HTTP是基于TCP协议的应用层协议,媒体传输过程中不会出现丢包等现象,从而保证了视频的质量;另一方面,HTTP被绝大部分的Web服务器支持,因而流媒体服务机构不必投资购买额外的流媒体服务器,从而节约了开支。
点播服务采用的封装格式有多种:MP4,FLV,F4V等,它们之间的区别不是很大。视频编码标准和音频编码标准是H.264和AAC。这两种标准分别是当今实际应用中编码效率最高的视频标准和音频标准。
1.10、视频参数对比
2、视音频数据处理
2.1、RGB、YUV视频像素数据处理
RGB/YUV视频像素数据在视频播放器的解码流程中的位置:
