音视频播放器原理、流媒体协议、封装格式、视频编码、音频编码

一、视频播放器原理音视频技术主要包含以下几点:封装技术?、?视频压缩编码技术? 以及 ?音频压缩编码技术 。
如果考虑到网络传输的话,还包括流媒体协议技术 。
简要说明一下视频播放器的原理 。
视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步 。
如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步 。
他们的过程如图所示 。

音视频播放器原理、流媒体协议、封装格式、视频编码、音频编码

文章插图
【音视频播放器原理、流媒体协议、封装格式、视频编码、音频编码】 
1.1 解协议
解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据 。
视音频在网络上传播的时候,常常采用各种流媒体协议,例如HTTP,RTMP,或是MMS等等 。
这些协议在传输视音频数据的同时,也会传输一些信令数据 。
这些信令数据包括对播放的控制(播放,暂停,停止),或者对网络状态的描述等 。
解协议的过程中会去除掉信令数据而只保留视音频数据 。
例如,采用RTMP协议传输的数据,经过解协议操作后,输出FLV格式的数据 。
1.2 解封装
解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据 。
封装格式种类很多,例如MP4,MKV,RMVB,TS,FLV,AVI等等,它的作用就是将已经压缩编码的视频数据和音频数据按照一定的格式放到一起 。
例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流 。
1.3 解码
解码的作用,就是将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据 。
音频的压缩编码标准包含AAC,MP3,AC-3等等,视频的压缩编码标准则包含H.264,MPEG2,VC-1等等 。
解码是整个系统中最重要也是最复杂的一个环节 。
通过解码,压缩编码的视频数据输出成为非压缩的颜色数据,例如YUV420P,RGB等等;
压缩编码的音频数据输出成为非压缩的音频抽样数据,例如PCM数据 。
1.4 视音频同步
视音频同步的作用,就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来 。
领取音视频开发学习资料:音视频开发(资料文档+视频教程)(
FFmpegWebRTCRTMPRTSPHLSRTP)
二、流媒体协议流媒体协议是服务器与客户端之间通信遵循的规定 。
当前网络上主要的流媒体协议如表所示:
音视频播放器原理、流媒体协议、封装格式、视频编码、音频编码

文章插图
 
RTSP+RTP 经常用于IPTV领域 因为其采用UDP传输视音频,支持组播,效率较高 。但其缺点是网络不好的情况下可能会丢包,影响视频观看质量 。因而围绕IPTV的视频质量的研究还是挺多的 。
因为互联网网络环境的不稳定性,RTSP+RTP较少用于互联网视音频传输 。
互联网视频服务通常采用TCP作为其流媒体的传输层协议,因而像RTMP,MMS,HTTP这类的协议广泛用于互联网视音频服务之中 。
这类协议不会发生丢包,因而保证了视频的质量,但是传输的效率会相对低一些 。
RTMFP是一种比较新的流媒体协议,特点是支持P2P
 
三、封装格式封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中 。
现如今流行的封装格式如下表所示:
音视频播放器原理、流媒体协议、封装格式、视频编码、音频编码

文章插图
 
由表可见,除了AVI之外,其他封装格式都支持流媒体,即可以“边下边播” 。
有些格式更“万能”一些,支持的视音频编码标准多一些,比如MKV 。而有些格式则支持的相对比较少,比如说RMVB 。
这些封装格式都有相关的文档,在这里就不一一例举了 。
 
四、封装格式视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量 。
如果视频不经过压缩编码的话,体积通常是非常大的,一部电影可能就要上百G的空间 。
视频编码是视音频技术中最重要的技术之一 。
视频码流的数据量占了视音频总数据量的绝大部分 。高效率的视频编码在同等的码率下,可以获得更高的视频质量 。
主要视频编码一览:


推荐阅读