1.视频比特率

        视频的比特率是指传输过程中单位时间传输的数据量。可以理解为视频的编码采样率。单位是kbps,即每秒千比特。视频比特率是决定视频清晰度的一个重要指标。比特率越高,视频越清晰,但数据量也会越大。比如一部100分钟的电影,如果比特率是700kbps,那么它的文件大小就是410MB。(100分钟=6000秒,然后将6000秒乘以700kb/s的比特率,得到的数据量为4200000kb,换算后约为410MB)当然,视频分辨率越高,要求的比特率就越高。因此,如果想提高视频的清晰度,需要在相同的分辨率下提高比特率。

固定比特率cbr,即每秒采样的数据量是固定的;还有可变比特率vrb,根据每帧视频的复杂程度改变采样。如果视频中有很多快速移动的图片,会提高比特率,以获得更多的这部分图片的采样数据,这样图片会变得更清晰。当图片信息较少时,比特率会适当降低。所以这个编码效率比较高,同时兼顾了视频清晰度和文件大小。是目前主流的比特率采样方式。

例:一段1080P的视频长度为100分钟,大小为1GB,那么该视频的比特率是多少?

100min = 100*60s = 6000s;
1G = 1024M = 1024*1024KB = 1024*1024*1024Bit = 1024*1024*1024*8bit = 8589934592bit;
比特率 = 8589934592/6000s = 1431655b/s = 1.4Mbit/s;

        这个视频的码率大概为1.4Mbit/s, 一般主流视频平台的最高码率在1Mbit左右,比如直播网站斗鱼的高清选项实际播放的视频码率是900Kbit/s(0.9Mbit)。对于时间长度相同的视频,码率越大,视频的大小越大,视频的画质就越清晰(不考虑各种压缩算法的优劣),这是最直观的感觉。码率对于视频是非常重要的。

2.分辨率

        视频分辨率是横坐标上像素数乘以纵坐标上的像素数,可以简单理解为视频的大小。那么为什么分辨率可以决定视频的文件大小和清晰度呢?视频尺寸越大(这里指的是拍摄和录制的视频分辨率),它在画面中需要填充的像素就越多,所以数据量越大,输出的文件就越大,清晰度就越高。

        视频分辨率是指视频成像产品所成图像的大小或尺寸,它的表达式为:“水平像素数垂直像素数”。常见的图像分辨率有QCIF(176×144),CIF(352×288),D1(704×576),720P(1280×720), 1080P(19201080)。摄像机成像的最大分辨率是由CCD或CMOS感光器件决定的。现在有些摄像机支持修改分辨率,是通过摄像机自带软件裁剪原始图像生成的。

3.帧率

        帧率也是影响视频清晰度和大小的因素之一。它是视频中包含的帧数,帧率越高,视频越清晰(帧率达到一定值时影响越小)。当然相应的数据量也会更大。帧率、比特率和分辨率是相互关联的。在帧率和分辨率相同的情况下,比特率越大,视频越清晰,文件越大。在分辨率和比特率不变的情况下,帧率越高,视频会越清晰;但是,在帧率和比特率相同的情况下,分辨率越高,视频会越不清晰。这是因为当视频尺寸变大时,如果对应的编码样本保持不变,只相当于放大了视频。

4.DTS和PTS

        DTS(Decoding Time Stamp) : 即解码时间戳,是解码器进行解码时相对于SCR(系统参考时间)的时间戳。它主要标识读入内存的bit流在什么时候开始送入解码器中进行解码。

        PTS(Presentation Time Stamp) : 即显示时间戳,是显示帧时相对于SCR的时间戳。它主要是度量解码后的视频什么时候被显示出来。

        DTS主要用于视频的解码,在解码阶段使用。PTS主要用于视频的同步和输出,在 display 的时候使用。在没有B帧的情况下,DTS和PTS的输出顺序是一样的。

5.音视频同步

        在媒体流中,除了视频以外,通常还包括音频。音频的播放也有 DTS、PTS 的概念,但是音频没有类似视频中 B 帧,不需要双向预测,所以音频帧的 DTS、PTS 顺序是一致的。

        音频视频混合在一起播放,就呈现了通常看到的广义的视频。在音视频一起播放的时候,需要面临怎么去同步它们,以免出现画不对声的情况。

        要实现音视频同步,通常需要选择一个参考时钟,参考时钟上的时间是线性递增的,编码音视频流时依据参考时钟上的时间给每帧数据打上时间戳。在播放时,读取数据帧上的时间戳,同时参考当前参考时钟上的时间来安排播放。时间戳就是PTS。可以选择同步视频到音频、同步音频到视频、同步音频和视频到外部时钟。

6.视频格式和编码格式

        视频格式是一个容器,常见的格式包括百AVI、MPG、WMV、MKV、TS、TP、RMVB、MOV、MP4、3GP、等等。是视频文件的存在形式,也可以来说是封装压缩视频和音频文件的容器。

        编码格式是向这个容器放度入东西的问方法、(视频文件压缩过程中的运算方法)例如可以横放、竖放、侧放,等等。常答见的编码包括H.261、H.263、H.264、MPEG4、MPEG2、mpeg1、xvid、divx、VC-1、wmv1(9、realvideo8)10等等。

视频基础知识_数据

H264编码原理以及I帧B帧P帧

H264编码原理

        H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中,一般有差别的像素只有10%以内的点,亮度差值变化不超过2%,而色度差值的变化只有1%以内。对于一段变化不大图像画面,可以先编码出一个完整的图像帧A,随后的B帧就不编码全部图像,只写入与A帧的差别,这样B帧的大小就只有完整帧的1/10或更小!B帧之后的C帧如果变化不大,可以继续以参考B的方式编码C帧,这样循环下去。这段图像称为一个序列(序列就是有相同特点的一段数据),当某个图像与之前的图像变化很大,无法参考前面的帧来生成,就结束上一个序列,开始下一段序列,也就是对这个图像生成一个完整帧A1,随后的图像就参考A1生成,只写入与A1的差别内容。

        在H264协议里定义了三种帧,完整编码的帧叫I帧,参考之前的I帧生成的只包含差异部分编码的帧叫P帧,还有一种参考前后的帧编码的帧叫B帧。H264采用的核心算法是帧内压缩和帧间压缩,帧内压缩是生成I帧的算法,帧间压缩是生成B帧和P帧的算法。

对序列的说明

        在H264中图像以序列为单位进行组织,一个序列是一段图像编码后的数据流,以I帧开始,到下一个I帧结束。一个序列的第一个图像叫做 IDR 图像(立即刷新图像),IDR 图像都是 I 帧图像。H.264 引入 IDR 图像是为了解码的重同步,当解码器解码到 IDR 图像时,立即将参考帧队列清空,将已解码的数据全部输出或抛弃,重新查找参数集,开始一个新的序列。这样,如果前一个序列出现重大错误,在这可获得重新同步机会。IDR图像之后的图像永远不会使用IDR之前图像的数据来解码。

        一个序列就是一段内容差异不太大的图像编码后生成的一串数据流。当运动变化比较少时,一个序列可以很长,因为运动变化少就代表图像画面的内容变动很小,所以就可以编一个I帧,然后一直P帧、B帧了。当运动变化多时,可能一个序列就比较短了,比如就包含一个I帧和3、4个P帧。

对三种帧的介绍

        帧内编码帧I帧 ,I帧表示关键帧,你可以理解为这一帧画面的完整保留;解码时只需要本帧数据就可以完成。I 帧通常是每个GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。

  • 它是一个全帧压缩编码帧。它将全帧图像信息进行JPEG压缩编码及传输
  • 解码时仅用I帧的数据就可重构完整图像
  • I帧描述了图像背景和运动主体的详情,不需要参考其他画面而生成
  • I帧是P帧和B帧的参考帧(其质量直接影响到同组中以后各帧的质量)
  • I帧是帧组GOP的基础帧(第一帧),在一组中只有一个I帧
  • I帧不需要考虑运动矢量,所占数据的信息量比较大

        前向预测编码帧P帧。P帧表示的是这一帧跟之前的一个关键帧(或P帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。通过充分将低于图像序列中前面已编码帧的时间冗余信息来压缩传输数据量的编码图像,也叫预测帧。

  • P帧是I帧后面相隔1~2帧的编码帧
  • P帧采用运动补偿的方法传送它与前面的I或P帧的差值及运动矢量(预测误差)
  • 解码时必须将I帧中的预测值与预测误差求和后才能重构完整的P帧图像
  • P帧属于前向预测的帧间编码。它只参考前面最靠近它的I帧或P帧
  • P帧可以是其后面P帧的参考帧,也可以是其前后的B帧的参考帧
  • 由于P帧是参考帧,它可能造成解码错误的扩散,差值传送,P帧的压缩比较高

        双向预测内插编码帧B帧,既考虑与源图像序列前面已编码帧,也顾及源图像序列后面已编码帧之间的时间冗余信息来压缩传输数据量的编码图像,也叫双向预测帧;

  • B帧是由前面的I或P帧和后面的P帧来进行预测的
  • B帧传送的是它与前面的I或P帧和后面的P帧之间的预测误差及运动矢量
  • B帧是双向预测编码帧,压缩比最高,只反映丙参考帧间运动主体的变化情况,预测比较准确
  • B帧不是参考帧,不会造成解码错误的扩散

        I、B、P各帧是根据压缩算法的需要,是人为定义的,它们都是实实在在的物理帧。一般来说,I帧的压缩率是7(跟JPG差不多),P帧是20,B帧可以达到50。可见使用B帧能节省大量空间,节省出来的空间可以用来保存多一些I帧,这样在相同码率下,可以提供更好的画质。

H264的压缩方法

  1. 分组:把几帧图像分为一组(GOP,也就是一个序列),为防止运动变化,帧数不宜取多。
  2. 定义帧:将每组内各帧图像定义为三种类型,即I帧、B帧和P帧;
  3. 预测帧:以I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧;
  4. 数据传输:最后将I帧数据与预测的差值信息进行存储和传输。

7.视频质量评价指标

客观评价Objective

        客观评价是以标准的数学公式计算原视频与解码出的视频之间的差异,当今被广泛使用的评判标准是PSNR,其全称为(Peak Signal to Noise Ratio)原理是利用原视频与有损压缩后产生的损失之间的比例来判断的。公式为:

视频基础知识_帧率_02

        其中,MAX为视频使用的信号的最大值,如视频是8比特的话,那MAX就为255。单位是分贝(db),MSE为均方误差(Mean Squared Error)即原始图像与解码后的重建图像之间的误差,误差越小,则表示还原后的质量越好,那PSNR就越大。PSNR的计算仅仅适用于有损压缩,对于无损压缩,因为MSE值将为0,则除式的值将为无穷大,所以对于无损压缩,PSNR是不适用的。

主观评价Subjective

        MOS测试,Mean Opinion Score Test,组织一定数量的人,尽可能地组织不同类型的人,尽量给实验制造随机性,多样性,使实验更具有一般性,可信性。

        进行客观性评价的时候,测试对象坐于显示器前,每位测试对象可以坐得有远近,方向角度有不同,尽量模仿实际生活中的人群,操作者在前方显示器上播放影像,当然,播放也是有规矩的。

视频基础知识_人工智能_03

        按时间顺序,一共分为两个阶段,一个是左边的前期测试阶段(没有任何标注),另一个是右边的投票阶段(标注有vote),其中,T1,T3时间段均是播放影像的时间,T2,T4均是休息的时候(显示器上显示灰色)。

        在测试中,一共有两种影像,一个是原始影像,没有失真的,一个是测试影像,带有失真的,上图中第一个T1和第二个T1播放同一种影像,第一个T3和第二个T3播放同一种影像,到底是原始影像还是测试影像,随机!测试者无法提前得知。等过完前面的前期测试阶段后,在Vote阶段,被测试者们就需要对影像进行打分了(即Vote),打分的图一般采用DSCQS方式评分图。

视频基础知识_音视频_04

        上面就是DSCQS打分图,27,28,29,30,31是视频编号,这里可以对五组(原图+测试)视频进行打分,针对每一对,当进行到Vote阶段的时候,Vote阶段第一个T1过完,在A栏打分,Vote阶段T3过完,给B栏打分。

        打分栏分为五个级别,即Excellent非常好,Good好,Fair一般般,Poor差,Bad很差五个级别,打分的时候,在每个级别对应的区域划线或者打勾即可。实验完成后后由测试者收集进行统计作为主观评判结果。

        当然,主观性测试也是有它的缺点的,一来是要组织这么一群人,人工费少不了,二来,组织人来进行测试不能做到实时进行,只是用已经编码好的影像进行播放来进行测试。