视频文件涉及知识介绍

2019-01-19 0 By admin

一、视频文件知识名词解释

1.1、封装格式

作用:视频码流和音频码流按照一定的格式储存在一个文件汇总

1.2、视频编码数据

作用:将视频像素数据(RGB,YUV等)压缩成为视频码流,从而降低视频的数据量

1.3、音频编码数据

作用:将音频采样数据(PCM等)压缩成为音频码流,从而降低音频的数据量

1.4、视频像素数据

作用:保存了屏幕上每一个像素点的像素值
格式:常见的像素数据格式有RGB24, RGB32, YUV420P,YUV422P,YUV444P等。压缩编码中一般使用的是YUV格式的像素数据,最为常见的格式为YUV420P。
特点:视频像素数据体积很大,一般情况下一小时高清视频的RGB24格式的数据体积为:3600*25*1920*1080*3=559.9GB(PS:这里假定帧率为25HZ,取样精度8bit)

1.5、音频采样数据

作用:保存了音频中每个采样点的值。
特点:音频采样数据体积很大,一般情况下一首4分钟的PCM格式的
歌曲体积为:4*60*44100*2*2=42.3MByte
PS:这里假定采样率为44100Hz,采样精度为16bit

1.6、视频文件组成说明

什么是影片?其实就是一组(很多张)图片,时间间隔很小的连续展示出来,人们就觉得画面中的人物在动,这就是影片。
那电影的实质就是N多张图片的集合。那每张图片和帧又有什么关系呢?
事实上,如果一部影片里面的图片,我们原封不动的全部存起来,空间会很大很大很大,但是如果通过一定的算法(这里不讲相关算法),把每一张图片压缩(编码_encode)一下,变成帧。
再把帧连起来变成流,再把不同的流放到某个容器里面,这就是我们平常看见的电影文件了,文件 碟中谍4.H264.ACC.mkv,他为什么要这样命名呢?
mkv表达了它的容器是.mkv的,且包含至少两个流,h264的视频流,ACC的音频流。这是一种典型的 牺牲时间来换取空间的做法。

1.7、视频文件数据分类

容器(Container)——容器就是一种文件格式,比如flv,mkv等。包含下面5种流以及文件头信息。
流(Stream)——是一种视频数据信息的传输方式,5种流:音频,视频,字幕,附件,数据。
帧(Frame)——帧代表一幅静止的图像,分为I帧,P帧,B帧。
编解码器(Codec)——是对视频进行压缩或者解压缩,CODEC =COde (编码) +DECode(解码)
复用/解复用(mux/demux)——把不同的流按照某种容器的规则放入容器,这种行为叫做复用(mux);把不同的流从某种容器中解析出来,这种行为叫做解复用(demux)。

二、视频压缩技术

视频压缩中,每帧代表一幅静止的图像。而在实际压缩时,会采取各种算法减少数据的容量,其中IPB就是最常见的。

2.1、I帧

I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成(因为包含完整画面)

2.2、P帧

P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。(也就是差别帧,P帧没有完整画面数据,只有与前一帧的画面差别的数据)

2.3、B帧

B帧是双向差别帧,也就是B帧记录的是本帧与前后帧的差别(具体比较复杂,有4种情况),换言之,要解码B帧,不仅要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是解码时CPU会比较累。

2.4、不同的帧比较

从上面的解释看,我们知道I和P的解码算法比较简单,资源占用也比较少,I只要自己完成就行了,P呢,也只需要解码器把前一个画面缓存一下,遇到P时就使用之前缓存的画面就好了,如果视频流只有I和P,解码器可以不管后面的数据,边读边解码,线性前进,大家很舒服。

但网络上的电影很多都采用了B帧,因为B帧记录的是前后帧的差别,比P帧能节约更多的空间,但这样一来,文件小了,解码器就麻烦了,因为在解码时,不仅要 用之前缓存的画面,还要知道下一个I或者P的画面(也就是说要预读预解码),而且,B帧不能简单地丢掉,因为B帧其实也包含了画面信息,如果简单丢掉,并 用之前的画面简单重复,就会造成画面卡(其实就是丢帧了),并且由于网络上的电影为了节约空间,往往使用相当多的B帧,B帧用的多,对不支持B帧的播放器 就造成更大的困扰,画面也就越卡。 一般平均来说,I的压缩率是7(跟JPG差不多),P是20,B可以达到50,可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。

三、视频的码率和帧率

码率和帧率是视频文件的最重要的基本特征,对于他们的特有设置会决定视频质量。如果我们知道码率和时长那么可以很容易计算出输出文件的大小。
帧率(fps):帧率也叫帧频率,帧率是视频文件中每一秒的帧数,肉眼想看到连续移动图像至少需要15帧。
码率(bps 也叫比特率,数据率):是一个确定整体视频/音频质量的参数,秒为单位处理的字节数,码率和视频质量成正比。