注:根据雷神博客记录
网络上有不同格式的电影文件(用不同的后缀表示)如:avi,rmvb,mp4,flv,mkv等等。这些格式代表的是封装格式,就是把视频数据和音频数据打包成一个文件的规范。MediaInfo是一个专门查看视音频格式的工具,可以用来查看视频的格式。
1. 视频播放器原理
视音频技术主要包含以下几点:封装技术,视频压缩编码技术以及音频压缩编码技术。如果考虑到网络传输的话,还包括流媒体协议技术。
视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。播放本地文件则不需要解协议,过程如图所示。
解协议的作用,就是将流媒体协议的数据,解析为标准的相应的封装格式数据。例如,采用RTMP协议传输的数据,经过解协议操作后,输出封装格式的数据。
解封装的作用,就是将输入的封装格式的数据,分离成为音频流压缩编码数据和视频流压缩编码数据。例如,FLV格式的数据,经过解封装操作后,输出H.264编码的视频码流和AAC编码的音频码流。
解码的作用,就是将视频/音频压缩编码后的数据,解码成为非压缩的视频/音频原始数据。解压后的视频数据为YUV420P,RGB等;解压后的音频数据为PCM数据。
视音频同步的作用,就是根据解封装模块处理过程中获取到的参数信息,同步解码出来的视频和音频数据,并将视频音频数据送至系统的显卡和声卡播放出来。
2. 流媒体协议
主要流媒体协议有:RTSP+RTP 、 RTMP、RTMFP、MMS、HTTP
3. 封装格式
封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。现如今流行的封装格式有:MP4,MKV,RMVB,TS,FLV,AVI等等。
4. 视频编码
视频编码的主要作用是将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量。
5. 音频编码
音频编码的主要作用是将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量。