视频码率,帧率和分辨率到底哪一个影响电影的清晰度
码率:影响体积,与体积成正比:码率越大,体积越大;码率越小,体积越小。
码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。也就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真,围绕这个核心衍生出来cbr(固定码率)与vbr(可变码率), “码率”就是失真度,码率越高越清晰,反之则画面粗糙而多马赛克
帧率:影响画面流畅度,与画面流畅度成正比:帧率越大,画面越流畅;帧率越小,画面越有跳动感。如果码率为变量,则帧率也会影响体积,帧率越高,每秒钟经过的画面越多,需要的码率也越高,体积也越大。
帧率就是在1秒钟时间里传输的图片的帧数,也可以理解为图形处理器每秒钟能够刷新几次,
分辨率:影响图像大小,与图像大小成正比:分辨率越高,图像越大;分辨率越低,图像越小。
清晰度
在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰,分辨率越低,图像越清晰。
在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。
带宽、帧率
例如在ADSL线路上传输图像,上行带宽只有512Kbps,但要传输4路CIF 分辨率的图像。按照常规,CIF分辨率建议码率是512Kbps,那么照此计算就只能传一路,降低码率势必会影响图像质量。那么为了确保图像质量,就必须降低帧率,这样一来,即便降低码率也不会影响图像质量,但在图像的连贯性上会有影响。
H.264
H.264是在MPEG-4技术的基础之上建立起来的,刏其编解码流程主要包括5个部分:帧间和帧内预测(Estimation)、变换(Transform)和反变换、量化(Quantization)和反量化、环路滤波(Loop Filter)、熵编码(Entropy Coding)。
H.264的PSNR比MPEG-4(ASP)和H.263++(HLP)明显要好,凈在6种速率的对比测试中,刓H.264的PSNR比MPEG-4(ASP)平均要高2dB,凖比H.263(HLP)平均要高3dB。刡6个测试速率及其相关的条件分别为:32 kbit/s速率、10f/s帧率和QCIF格式;64 kbit/s速率、15f/s帧率和QCIF格式;128kbit/s速率、15f/s帧率和CIF格式;256kbit/s速率、15f/s帧率和QCIF格式;512 kbit/s速率、30f/s帧率和CIF格式;1024 kbit/s速率、30f/s帧率和CIF格式。刣
凙
H.264最大的优势是具有很高的数据压缩比率,凧在同等图像质量的条件下,凨H.264的压缩比是MPEG-2的2倍以上,凿是MPEG-4的1.5~2倍。凶举个例子,凝原始文件的大小如果为88GB,则采用MPEG-2压缩标准压缩后变成3.5GB,凿压缩比为25∶1,凓而采用H.264压缩标准压缩后变为879MB,凪从88GB到879MB,凥H.264的压缩比达到惊人的102∶1!H.264为什么有那么高的压缩比?低码率(Low Bit Rate)起了重要的作用,凌和MPEG-2和MPEG-4 ASP等压缩技术相比,刪H.264压缩技术将大大节省用户的下载时间和数据流量收费。
刣
I/P/B帧
I帧:帧内编码帧,也就是关键帧或独立帧
预测帧:以I帧做为基础帧,以I帧预测P帧,再由I帧和P帧预测B帧;
B帧:双向预测内插编码帧
P帧:前向预测编码帧
凷除了支持P帧、B帧外,凰H.264还支持一种新的流间传送帧——SP帧
统计的结果表明,在间隔1~2帧的图像中,各像素只有10%以下的点,其亮度差值变化超过2%,而色度差值的变化只有1%以下
在视频压缩的过程中, I帧是图像数据压缩,是独立帧。P帧是参考I帧进行帧间图像数据压缩,不是独立帧。在压缩后的视频中绝大多数都是B/P帧,故视频质量主要由B/P帧表现出来。由于B/P帧不是独立帧,而只是保存了与邻近的I帧的差值,故实际上并不存在分辨率的概念,应该看成一个二进制差值序列。
而该二进制序列在使用熵编码压缩技术时会使用量化参数进行有损压缩,视频的质量直接由量化参数决定,而量化参数会直接影响到压缩比和码率。
视频质量可以通过主观和客观方式来表现,主观方式就是通常人们提到的视频清晰度,而客观参数则是量化参数或者压缩比或者码率。在视频源一样,压缩算法也一样的前提下比较,量化参数,压缩比和码率之间是有直接的比例关系的。
分辨率的变化又称为重新采样。由高分辨率变成低分辨率称为下采样,由于采样前数据充足,只需要尽量保留更多的信息量,一般可以获得相对较好的结果。而由低分辨率变成高分辨率称为上采样,由于需要插值等方法来补充(猜测)缺少的像素点,故必然会带有失真,这就是一种视频质量(清晰度)的损失。
传输数据量
由于网卡在网络上接收到的数据包长短不一,这些不同的包长组和必然会对接口速率造成影响。总线上传输的数据除了数据净荷,在协议层还会添加必要的协议头和尾,因此加上网络开销,传输数据量 一般小≤净荷数据量 * 1.3
H.264标准的关键技术
1.帧内预测编码
帧内编码用来缩减图像的空间冗余。凣为了提高H.264帧内编码的效率,刂在给定帧中充分利用相邻宏块的空间相关性,凖相邻的宏块通常含有相似的属性。凭因此,凨在对一给定宏块编码时,刨首先可以根据周围的宏块预测(典型的是根据左上角的宏块,凷因为此宏块已经被编码处理),凰然后对预测值与实际值的差值进行编码,刉这样,凟相对于直接对该帧编码而言,凴可以大大减小码率。刓
H.264提供6种模式进行4×4像素宏块预测,凫包括1种直流预测和5种方向预测,凪如图2所示。减在图中,凕相邻块的A到I共9个像素均已经被编码,凧可以被用以预测,几如果我们选择模式4,凵那么,凊a、b、c、d4个像素被预测为与E相等的值,利e、f、g、h4个像素被预测为与F相等的值,凣对于图像中含有很少空间信息的平坦区,凟H.264也支持16×16的帧内编码。刪图2 帧内编码模式
2.帧间预测编码
帧间预测编码利用连续帧中的时间冗余来进行运动估计和补偿。刣H.264的运动补偿支持以往的视频编码标准中的大部分关键特性,凹而且灵活地添加了更多的功能,凷除了支持P帧、B帧外,凰H.264还支持一种新的流间传送帧——SP帧,凎如图3所示。刚码流中包含SP帧后,凜能在有类似内容但有不同码率的码流之间快速切换,刧同时支持随机接入和快速回放模式。刦图3 SP-帧示意图H.264的运动估计有以下4个特性。凪
(1)不同大小和形状的宏块分割
对每一个16×16像素宏块的运动补偿可以采用不同的大小和形状,减H.264支持7种模式,凔如图4所示。减小块模式的运动补偿为运动详细信息的处理提高了性能,刏减少了方块效应,凣提高了图像的质量。出图4 宏块分割方法
(2)高精度的亚像素运动补偿
在H.263中采用的是半像素精度的运动估计,凲而在H.264中可以采用1/4或者1/8像素精度的运动估值。凱在要求相同精度的情况下,凜H.264使用1/4或者1/8像素精度的运动估计后的残差要比H.263采用半像素精度运动估计后的残差来得小。凕这样在相同精度下,凝H.264在帧间编码中所需的码率更小。凓
(3)多帧预测
H.264提供可选的多帧预测功能,分在帧间编码时,凜可选5个不同的参考帧,利提供了更好的纠错性能,凮这样更可以改善视频图像质量。凙这一特性主要应用于以下场合:周期性的运动、平移运动、在两个不同的场景之间来回变换摄像机的镜头。凘
(4)去块滤波器
H.264定义了自适应去除块效应的滤波器,凑这可以处理预测环路中的水平和垂直块边缘,刊大大减少了方块效应。凯
3.整数变换
在变换方面,刘H.264使用了基于4×4像素块的类似于DCT的变换,凬但使用的是以整数为基础的空间变换,刄不存在反变换,出因为取舍而存在误差的问题,凢变换矩阵如图5所示。刨与浮点运算相比,凋整数DCT变换会引起一些额外的误差,処但因为DCT变换后的量化也存在量化误差,凟与之相比,凱整数DCT变换引起的量化误差影响并不大。凷此外,则整数DCT变换还具有减少运算量和复杂度,凥有利于向定点DSP移植的优点。刐
4.量化
H.264中可选32种不同的量化步长,処这与H.263中有31个量化步长很相似,出但是在H.264中,凳步长是以12.5%的复合率递进的,凭而不是一个固定常数。凔
在H.264中,击变换系数的读出方式也有两种:之字形(Zigzag)扫描和双扫描,凢如图6所示。凪大多数情况下使用简单的之字形扫描;双扫描仅用于使用较小量化级的块内,凣有助于提高编码效率。删图6变换系数的读出方式
5.熵编码
视频编码处理的最后一步就是熵编码,凶在H.264中采用了两种不同的熵编码方法:通用可变长编码(UVLC)和基于文本的自适应二进制算术编码(CABAC)。利
H.264的技术亮点
1、分层设计
H.264的算法在概念上可以分为两层:视频编码层(VCL:Video Coding Layer)负责高效的视频内容表示,刘网络提取层(NAL:Network Abstraction Layer)负责以网络所要求的恰当的方式对数据进行打包和传送。凋在VCL和NAL之间定义了一个基于分组方式的接口,刣打包和相应的信令属于NAL的一部分。凹这样,刋高编码效率和网络友好性的任务分别由VCL和NAL来完成。凐
VCL层包括基于块的运动补偿混合编码和一些新特性。刟与前面的视频编码标准一样,凵H.264没有把前处理和后处理等功能包括在草案中,删这样可以增加标准的灵活性。刈
NAL负责使用下层网络的分段格式来封装数据,刃包括组帧、逻辑信道的信令、定时信息的利用或序列结束信号等。出例如,凤NAL支持视频在电路交换信道上的传输格式,刣支持视频在Internet上利用RTP/UDP/IP传输的格式。凲NAL包括自己的头部信息、段结构信息和实际载荷信息,创即上层的VCL数据。凳(如果采用数据分割技术,凩数据可能由几个部分组成)。凾
2、高精度、多模式运动估计
H.264支持1/4或1/8像素精度的运动矢量。函在1/4像素精度时可使用6抽头滤波器来减少高频噪声,凬对于1/8像素精度的运动矢量,凥可使用更为复杂的8抽头的滤波器。刚在进行运动估计时,凶编码器还可选择"增强"内插滤波器来提高预测的效果。刏
在H.264的运动预测中,刎一个宏块(MB)可以按图2被分为不同的子块,凳形成7种不同模式的块尺寸。刡这种多模式的灵活和细致的划分,刋更切合图像中实际运动物体的形状,减大大提高了运动估计的精确程度。则在这种方式下,凮在每个宏块中可以包含有1、2、4、8或16个运动矢量。凩
在H.264中,刑允许编码器使用多于一帧的先前帧用于运动估计,凶这就是所谓的多帧参考技术。凮例如2帧或3帧刚刚编码好的参考帧,刈编码器将选择对每个目标宏块能给出更好的预测帧,分并为每一宏块指示是哪一帧被用于预测。凬
3、4×4块的整数变换
H.264与先前的标准相似,刔对残差采用基于块的变换编码,凬但变换是整数操作而不是实数运算,分其过程和DCT基本相似。刓这种方法的优点在于:在编码器中和解码器中允许精度相同的变换和反变换,则便于使用简单的定点运算方式。刃也就是说,凼这里没有"反变换误差"。刐变换的单位是4×4块,刏而不是以往常用的8×8块。刐由于用于变换块的尺寸缩小,凸运动物体的划分更精确,凉这样,凢不但变换计算量比较小,刍而且在运动物体边缘处的衔接误差也大为减小。凞为了使小尺寸块的变换方式对图像中较大面积的平滑区域不产生块之间的灰度差异,刓可对帧内宏块亮度数据的16个4×4块的DC系数(每个小块一个,划共16个)进行第二次4×4块的变换,凪对色度数据的4个4×4块的DC系数(每个小块一个,刪共4个)进行2×2块的变换。刡
H.264为了提高码率控制的能力,凴量化步长的变化的幅度控制在12.5%左右,凝而不是以不变的增幅变化。分变换系数幅度的归一化被放在反量化过程中处理以减少计算的复杂性。刚为了强调彩色的逼真性,凰对色度系数采用了较小量化步长。创
4、统一的VLC
H.264中熵编码有两种方法,刂一种是对所有的待编码的符号采用统一的VLC(UVLC :Universal VLC),凼另一种是采用内容自适应的二进制算术编码(CABAC:Context-Adaptive Binary Arithmetic Coding)。凴CABAC是可选项,凞其编码性能比UVLC稍好,凪但计算复杂度也高。减UVLC使用一个长度无限的码字集,凣设计结构非常有规则,刟用相同的码表可以对不同的对象进行编码。凤这种方法很容易产生一个码字,凉而解码器也很容易地识别码字的前缀,凎UVLC在发生比特错误时能快速获得重同步。凡
5、帧内预测
在先前的H.26x系列和MPEG-x系列标准中,几都是采用的帧间预测的方式。利在H.264中,凊当编码Intra图像时可用帧内预测。刪对于每个4×4块(除了边缘块特别处置以外),凝每 个像素都可用17个最接近的先前已编码的像素的不同加权和(有的权值可为0)来预测,凖即此像素所在块的左上角的17个像素。凐显然,刣这种帧内预测不是在时间上,凹而是在空间域上进行的预测编码算法,凒可以除去相邻块之间的空间冗余度,凌取得更为有效的压缩。凓
如图4所示,刟4×4方块中a、b、...、p为16 个待预测的像素点,刓而A、B、...、P是已编码的像素。凘如m点的值可以由(J+2K+L+2)/ 4 式来预测,刦也可以由(A+B+C+D+I+J+K+L)/8 式来预测,凪等等。凐按照所选取的预测参考的点不同,刉亮度共有9类不同的模式,刄但色度的帧内预测只有1类模式。几
6、面向IP和无线环境
H.264 草案中包含了用于差错消除的工具,几便于压缩视频在误码、丢包多发环境中传输,凙如移动信道或IP信道中传输的健壮性。凳
为了抵御传输差错,凱H.264视频流中的时间同步可以通过采用帧内图像刷新来完成,凖空间同步由条结构编码(slice structured coding)来支持。凌同时为了便于误码以后的再同步,刈在一幅图像的视频数据中还提供了一定的重同步点。切另外,凡帧内宏块刷新和多参考宏块允许编码器在决定宏块模式的时候不仅可以考虑编码效率,创还可以考虑传输信道的特性。刄
除了利用量化步长的改变来适应信道码率外,凉在H.264中,划还常利用数据分割的方法来应对信道码率的变化。减从总体上说,凊数据分割的概念就是在编码器中生成具有不同优先级的视频数据以支持网络中的服务质量QoS。刊例如采用基于语法的数据分割(syntax-based data partitioning)方法,凾将每帧数据的按其重要性分为几部分,刏这样允许在缓冲区溢出时丢弃不太重要的信息。刖还可以采用类似的时间数据分割(temporal data partitioning)方法,凾通过在P帧和B帧中使用多个参考帧来完成。判
在无线通信的应用中,刋我们可以通过改变每一帧的量化精度或空间/时间分辨率来支持无线信道的大比特率变化。凲可是,刉在多播的情况下,凜要求编码器对变化的各种比特率进行响应是不可能的。凳因此,凯不同于MPEG-4中采用的精细分级编码FGS(Fine Granular Scalability)的方法(效率比较低),刄H.264采用流切换的SP帧来代替分级编码。