3.2.2 减少数据量

当网络带宽一定的情况下,为了解决实时通信的矛盾,我们必须通过减少数据量来解决这一矛盾。要知道,减少音视频数据量一定是以牺牲音视频服务质量为代价的,但这就是一种平衡。

通过减少数据量来保障音视频的实时性有哪些方法呢?这里总结了5种方法,分别是采用更好的压缩算法、SVC技术、Simulcast技术、动态码率、甩帧或减少业务。接下来就详细讨论一下这几种方法。

·采用更好的压缩算法。这比较好理解,H265、AVI是最近几年才推出的编解码器,它的压缩率要比现在流行的H264高得多。在一些测试中,H265比H264提高了25%的压缩率,而AVI在veryslow模式下压缩率比H264提高了40%左右,这是相当可观的。但从实时性方面看,目前无论是H265还是AVI,其编码速度都与H264有不小的差距,要达到商用级别还需要一段时间。可喜的是,AVI已经进入Chrome的测试版中,相信其后的发展速度会超出人们的预期。

·SVC技术,是减少传输数据量非常好的一种方法。其基本原理是将视频按时间、空间及质量分成多层编码,然后将它们装在一路流中发给服务端。服务端收到后,再根据每个用户的带宽情况选择不同的层下发。其好处是,可以让不同网络状况的用户都得到较好的服务质量。但它也有缺点:一是上行码流不但没减少反而增加了,所以需要上行用户配置很好的带宽;二是由于SVC实现复杂,又没有硬件支持,所以终端解码时对CPU消耗很大。

·Simulcast技术。Simulcast与SVC技术类似,不过它的实现要比SVC简单得多(见图3.3)。其基本原理是,将视频编码出多种不同分辨率的多路码流,然后上传给服务端。服务端收到码流后,根据每个用户不同的带宽情况,选择其中一路最合适的码流下发给用户。它与SVC技术相比有以下几点不同:一是Simulcast上传的每一路流可以单独解码,而SVC做不到;二是由于Simulcast的每一路都可以单独解码,所以它的解码复杂度与普通解码的是一样的;三是由于Simulcast上传的是多路单独的流,所以上传码率要比SVC多很多。

图3.3 SVC与Simulcast比较图

·动态码率,也是一种减少数据的方法。当网络带宽评估出用户带宽不够时,会通过编译器让其减小输出码率;当评估出带宽增大时,又会增加输出码率。这就是动态码率。如果你发现在网络抖动比较大时,某个音视频产品的图像一会儿清晰,一会儿模糊,那多半是因为其采用了动态码率的策略。

·甩帧或减少业务。除了上面介绍的那些方法外,还有一种不太友好的方法,就是甩帧或关闭某些不重要的业务来减少数据量。当然,这种方法是在用户带宽严重不足的情况下才使用的,只有到了万不得已的时候才会使用这种策略。

以上就是通过减少数据量解决音视频与网络之间矛盾的方法,在上面的几种方法中,用得最多的是Simulcast和动态码率。