本文是一篇视频通话的基础知识文章。
我们先来看看视频编码的基本原理:视频图像数据有极强的相关性,也就是说有大量的冗余信息。其中冗余信息可分为空域冗余信息和时域冗余信息。压缩技术就是将数据中的冗余信息去掉(去除数据之间的相关性),压缩技术包含帧内图像数据压缩技术、帧间图像数据压缩技术和熵编码压缩技术。视频文件一般涉及到三个参数:帧率、分辨率和码率。
帧率
每秒显示的图片数。影响画面流畅度。帧率越大,画面越流畅;帧率越小,画面越有跳动感。
由于人类眼睛的特殊生理结构,如果所看画面之帧率高于24的时候,就会认为是连贯的,此现象称之为视觉暂留。而对游戏,一般来说,第一人称射击游戏比较注重FPS的高低,如果FPS
高的帧率可以得到更流畅、更逼真的动画。一般来说30fps就是可以接受的,提升至60fps则可以明显提升交互感和逼真感,但是一般来说超过75fps一般就不容易察觉到有明显的流畅度提升了。
在显示“分辨率”不变的情况下,FPS越高,对显卡的处理能力要求越高。电脑中所显示的画面,都是由显卡来进行输出的,因此屏幕上每个像素的填充都得由显卡来进行计算、输出。
当画面的分辨率是1024×768时,画面的刷新率要达到24帧/秒,那么显卡在一秒钟内需要处理的像素量就达到了:
1024×768×24=18874368
如果要求画面的刷新率达到50帧/秒,则数据量一下子提升到了:
1024×768×50=39321600
FPS与分辨率、显卡处理能力的关系如下:
处理能力=分辨率×刷新率
这也就是为什么在玩游戏时,分辨率设置得越大,画面就越不流畅的原因了。
分辨率
单位英寸中所包含的像素点数,决定了位图图像细节的精细程度。
分辨率和图像的像素有直接关系。举个例子,一张分辨率为640 x 480的图片,那它的分辨率就达到了307200像素,也就是我们常说的30万像素,而一张分辨率为1600 x 1200的图片,它的像素就是200万。
这是一张图片分辨率分别在1280×800和440x275下,大小差异。
调整到同样大小,视觉可见两者清晰度的差异。
码率
码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。通俗一点的理解就是取样率或者比特率。单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。但是文件体积与取样率是成正比的,所以几乎所有的编码格式重视的都是如何用最低的码率达到最少的失真。
声网Agora.io的视频通话SDK,采用的是自有专利视频编解码器EVP(增强型VPx)。EVP支持可适性视频编码、并且有低码率高清晰度的特点。这使得声网Agora.io的视频通话能够做到低延时、高清晰度。
这是部分声网Agora.io的码率:
视频属性
分辨率(宽x高)
帧率(fps)
码率(kbps)
120P
160×120
15
80
180P
320×180
15
160
240P
320×240
15
200
360P
640×360
15
400
480P
640×480
15
500
720P
1280×720*
15
1000
清晰度
所谓“清晰”,是指画面细腻,没有马赛克,并不是分辨率越高图像就越清晰。
在码率一定的情况下,分辨率与清晰度成反比关系:分辨率越高,图像越不清晰;分辨率越低,图像越清晰。
在分辨率一定的情况下,码率与清晰度成正比关系,码率越高,图像越清晰;码率越低,图像越不清晰。
这是声网Agora.io的视频通话与竞品的对比。从下图可以看出,同样的传输、分辨率条件下,视频清晰度有明显差异。
丢包
在视频压缩的过程中, I帧是帧内图像数据压缩,是独立帧,视频序列中的第一个帧始终都是I帧。
在视频会议系统中,并不是每次都把完整的一幅幅图片发送到远端,而只是发送后一幅画面在前一幅画面基础上发生变化的部分。如果在网络状况不好的情况下,终端的接收远端或者发送给远程的画面就会有丢包而出现图像花屏、图像卡顿的现象。
在视频画面播放过程中,若I帧丢失了,则后面的P帧也就随着解不出来,就会出现视频画面黑屏的现象;若P帧丢失了,则视频画面会出现花屏、马赛克等现象。
声网Agora.io对于丢包的解决办法是:全球虚拟通信网和丢包对抗技术。这能够保证在网络不好的情况下,高丢包率也能正常视频通话。
下图是在丢包50%的情况下,声网Agora.io与竞品的对比。可以看到,有的画面在高丢包情况下,已经模糊。