参考文章:
http://blog.youkuaiyun.com/arau_sh/article/details/17376837
1、什么是影片?
影片其实就是一组(很多张)图片,以很小的时间间隔连续展示出来,人们就觉得画面中的人物在动(未考虑音频)。因此,影片的实质就是N多张图片的集合。
2、帧、流、容器
如果一部影片原封不动的保存起来,需要很大很大的空间。例如:假定图片分辨率设置为1024×768,每像素占4个字节,每秒播放30张图片,这1s需要1024*768*4*30 = 94371840bytes = 90M。如果不采用任何压缩算法,1G只能存放11s的视频。因此,影片压缩保存是必须的。
帧:压缩后的一张图片就叫着一(视频)帧,压缩又称为编码,影片中除有视频帧外,还有音频帧和字幕帧;
流: 把一种帧连起来就叫流。同理,有视频流,音频流,字幕流;
容器:把不同的流按某种方式组合到一起,即容器(不同流以某种方式组合存放在容器中)。直观的想象,容器即是影片后缀名。
比如一部影片名为碟中谍4.mkv,这部影片的容器就是mkv,即流是以mkv的格式组合在一起的。
3、复用/解复用(mux/demux)、编/解码(codec)
按照某种容器的规则从该种容器(文件)中把不同的流解析(或者说分离)出来,这种行为叫着解复用,使用解复用器;与之相反,把不同的流按照某种容器的规则放入那种容器(生成该种容器格式的影片文件),这种行为叫着复用,使用复用器。
从流中分离出帧并且最终生成用于输出到显卡的视频原始数据(输出到声卡的音频原始数据),这个过程称为解码,使用解码器。与之对应,把原始数据压缩成帧并连接成流,这个过程称为编码,使用编码器。
4、视频播放流程
说明:1. 根据影片的不同,解复用时可能得到多条字幕流和音频流(比如多国语言的影片),但实际只需要解码特定的音频和
字幕流(相当于只解特定语言的音频和字幕);
2. 字幕解码器得到的图像可以直接叠加到视频图像上,同步时即只需要考虑音视频同步.
5. 影片示例
通常播放器(如KMPlayer)都带有查看多媒体信息的功能,打开影片后点击右键选择媒体信息即可查看,比如《The Croods (2013.TS)RusH.avi》(疯狂原始人),影片信息为: