现在我们大家在网络上看到的视频,受限于带宽和服务器,视频网站上的视频其实都是经过压缩才最终被我们看到的。如果单纯传输视频文件,数据量会非常恐怖,以常见的1920*1080的30帧视频为例,其一帧画面中所包含的信息量就为;
1920*1080=2073600个像素
每个像素越是三字节,再乘以30,就是一亿八千多万的字节,换算成MB/s的话就是177MB/s,这还是没有计算声音信息的情况下,这显然不是我们的网络可以承载的数据量,如果可以将视频中无用的信息剔除,就可以大大提升视频的效率。所以,我们需要来压缩视频。
视频的压缩方式也分为帧内编码和帧间压缩编码,而我们看到的网络视频多是由帧间编码压缩,互联网目前最常见的帧间压缩视频编码格式是H.264。在H.264压缩标准中I帧、P帧、B帧用于表示传输的视频画面。
I帧
I帧又叫做帧内编码帧,它带有全部的独立信息且可不需要参考其它的帧独立进行解码,视频序列中的第一个帧始终都是I帧,因为它是关键帧。
P帧
又叫帧间预测编码帧,它的解码需要参考前一帧画面(前一帧有可能是I、P帧)。视频中的每一个像素都有它对应的信息,而下一帧中的像素相比于上一帧有部分会有变化而部分没有,没有变化的部分会直接复制上一帧的信息,而有变化的部分则需要通过解计算得出。与I帧相比,P帧通常占用更少的数据量。
B帧
B帧又称叫双向预测编码帧,顾名思义它不仅会像I帧一样参考前一帧的信息,也会参考下一帧通过前后画面的与本帧数据的叠加取得最终的画面。B帧压缩率高,但是对解码性能要求较高。
我们所看到的视频就是由这些帧加上计算得出的,但是其实这种方式有一个很大的弊端,就是帧信息全部靠计算得出,如果播放器性能过低,或者画面中有大量随机移动的无法预测的信息是就会出现画质急剧下降和卡顿的问题。
想要避免这个问题,我们可以使用可变码率(VBR)的方式,顾名思义,在一段视频中码率是动态变化的,在比较复杂、随机运动的场景下(打斗、舞蹈等)提高码率,在简单的场景下降低码率,合理的利用资源,同时也平衡了画质和体积。
除此之外还有恒定码率(CBR)和恒定质量(CRF)的方式,顾名思义CBR就是视频的全程并不会改变码率而是以渲染前的预设决定;而CRF就是在渲染前固定一个视频的质量,它也会动态改变视频的码率,但相比VBR不同的是它是以画质为第一优先级,最终的文件大小不受控制。
而直播的情况和视频也略有区别,直播相当于实时串流,为了让观众获得更流畅的观感往往就会使用渲染速度快但是画面质量相对较低的方式,而视频制作到上传是有一段时间的,制作者可以选择需要的时间更长但是最终得出画质更好的渲染方式,所以相同的编码格式和码率、分辨率的情况下网络视频和直播的画质可能也会天差地别
码率
码率的常见单位为Mbp/s,其实就是Mbit/s的意思,也就是说一秒钟8Mbp/s的视频将会产生1MB的数据(未计算音频数据)。高码率的视频会越接近未压缩过的画质,但是过高的码率也会带来数据冗余的问题,其实编码的核心就是如何在较小的文件体积下保留更多的画面和声音信息。
视频在经过编码压缩时可能会降低码率,过低的码率会造成画面中出现马赛克,既画面中一些区域的色阶劣化,而造成颜色混乱导致看不清细节的情况(如新闻中犯罪嫌疑人的头像经常使用)。这是因为每个像素都需要保留相应的信息,而降低码率后也相应的降低了其保留的信息,而没有信息的像素只能向周围的像素共享信息,这样就会显得颜色混乱,画面惨不忍睹。但是在码率恒定的情况下,我们可以通过降低分辨率也就是每帧画面中像素数量来规避马赛克,因为像素越少,就越不需要共享像素来渲染。
码率其实也不是视频中单独存在的个体,它也会受分辨率、编码格式的影响。比如H.264的进阶版本H.265,效率很高,在高分辨率下可以比H.264节约很多带宽,但同时也会带来更高的解码压力。而码率和分辨率的配合也相当重要,高分低码会造成画面中的马赛克;而高码低分则会丢失大量细节,导致AV画质。所以如何在文件体积、解码难易度和画面质量间取舍,就只能看你自己了。
视频压缩采用帧内、帧间编码减少数据量,如H.264标准中的I、P、B帧。码率控制包括VBR、CBR、CRF,平衡画质和体积。直播与网络视频因实时性需求选择不同的码率策略。降低码率可能导致马赛克,调整分辨率和编码格式能优化效果。

4407

被折叠的 条评论
为什么被折叠?



