一、概述
随着网络视频服务器的越来越普及,随着全球眼,平安城市等项目的全面开展,在视频监控行业中,通过网络来传输视频已经成为发展趋势。通过网络来传输视频,不仅可以利用网络的资源将视频图像传输的更远,从而不受距离限制;同时,网络的应用给视频监控带来了更多新颖的功能,完全可以达到各种用户专业化监控的要求。可以预见,未来的视频监控一定是网络化的视频监控,这应该是不可逆转的潮流。
在当前的网络条件下,很多用户发现网络视频服务器在通过网络传输视频信息时经常遇到带宽过低或者带宽不稳的问题,导致视频在这样的带宽条件下无法正常的传输连续的视频图像,用户在浏览视频图像时感觉画面停顿感、滞后感非常强烈,无法达到其监控要求。
也许你也遇到过这样的问题,当你把网络视频服务器放在Internet网上时,图像画面非常卡,非常不流畅,可能几秒画面才动一下,或者画面干脆很长时间不动了。在这样的环境下你使用网络视频服务器根本无法达到你的监控要求。
也许你还会遇到这样的困惑,你已经搭建了2M带宽的网络,一开始时你可能只是想搭建一个企业内部网,开展一些网页浏览的业务,之后你可能增加了内部下载等业务,再之后你可能在你的企业网里增加了流媒体点播的业务,同时还增加了网络视频会议等业务,最后,你决定增加网络视频监控的业务。这所有的业务同时运行在你2M带宽的网络上,有时你发现视频很流畅,有时你又发现视频非常卡无法正常浏览。这时,即使你人为的降低视频服务器的比特率,仍然无法得到流畅的图片。这是因为如果在2M带宽下只运行一个业务带宽是充裕的,但是当某一时刻所有业务一起运行起来,所有业务对带宽需求的总和一定超过2M带宽,从而每个业务在实际使用中分得的带宽就不够了。这时你就会发现有些时段视频图像非常流畅,有些时段视频图像就非常的卡了。
也许你早期使用过MJPEG编码方式的视频服务器,你现在已经升级到MPEG4或者H.264编码方式的视频服务器了,如果你的网络状况并不充裕,就像上面描述的情况一样。那么,你会发现,H.264或者MPEG4编码方式的视频服务器的视频流畅性反而不如MJPEG编码方式的视频服务器的流畅性。尽管所有的厂商都告诉你H.264或者MPEG4占用更低的带宽,拥有更好的图像质量,但是在你的网络状况中的表现却不是这样。
二、问题分析
以上所有的问题都来自于网络,网络带宽过低或者网络带宽不明确且不稳定影响了视频浏览,我们将以上的现象归为如下两大类问题:
一、网络带宽过低导致网络视频服务器不流畅
该情况多发生在使用ADSL等设备通过Internet网传输视频监控业务。大多数用户ADSL的上行带宽可能只有512K或者更小,在Internet实际传输带宽往往大大小于512K,在使用网络视频服务器进行网络视频监控业务时视频图像非常不流畅,用户不得不不断的降低视频服务器bitrate值,以满足传输实际带宽的要求,同时又要保证有比较好的图像质量,往往这些调节工作对客户来说操作起来很麻烦。
二、网络带宽不明确且不稳定导致视频服务器不流畅
正如上面举例的第二种情况,表面上看有2M足够的带宽,但是实际使用中由于业务太多超出带宽容量,导致视频带宽不够。这种情况是带宽不明且不稳定的情况,适合于一些较早建设的网络。早期很多网络是按照2M的光纤进行建设的,在2M光纤上进行多种业务的操作,比如公司内部网页访问、内部下载、内部邮件、内部视频点播等业务都在这2M光纤业务上。在增加了网络视频监控业务后,仍然在原有的2M光纤上所有业务,这时就会发现视频图像浏览非常不了流畅,几秒甚至十几秒才能动一下,无法满足正常监控业务的要求。这时用户开始尝试把视频服务器的比特率不断调低,最终发现无法找到一个合适的值来使图像达到流畅。因为由于业务太多且杂,没有人能够实时的知道当前带宽到底是多少?视频服务器的比特率到底设置在多少合适?该现象尤其在Internet网上进行视频监控业务时也非常突出。
大家不禁要问,明明H.264或者MPEG4的压缩算法先进了很多,更大的降低了码流;但是,为何在低带宽下的表现反而不如人意呢?
这要从MPEG系列压缩算法的核心分析了。MPEG系列压缩算法从早期的MPEG-1,MPEG-2发展到现在的MPEG-4以及最新的H.264,其核心压缩原理没有变化。MPEG系列压缩算法都在时域上对视频流进行压缩。与MJPEG压缩每一帧都是单独JPEG图的方式不同,MPEG系列压缩算法采用了I帧,P帧和B帧的模式,当前大部分压缩芯片或者压缩算法并没有实现B帧。大家不必过分关心I帧,P帧的细节,只需要知道在这三种帧模型里,I帧是关键帧,P帧是前向预测帧,B帧是后向预测帧。当解码器收到一个I帧的时候,可以立刻进行解码,而不需要其它条件;但是,当解码器收到P帧或者B帧的时候,就不能够立刻进行解码,比如,P帧的解码需要解码器先解码该帧前面的P帧或者I帧。如果前面的P帧或者I帧在网络中丢掉,即使后面连续收到很多P帧,也无法正常解码。举个例子,在带宽不够的情况下网络丢掉一个I帧,即使随后的P帧都收到,仍然无法正确解码出图像。这就是为什么低带宽下MPEG4或者H.264压缩算法表现还不如MJEPG的原因。MJPEG每一帧都是独立的帧,只要网络传送一帧,就可以解码出一副图片。在带宽不够的情况下,MJPEG每秒可能只能传送3、4帧,但是,用户已经可以在这1秒钟内看到3、4副画面了;对H.264来说,由于自身码流本身比较低,可能在低带宽下1秒能够传送15、16帧,但是,如果I帧在网络上丢失了,即使连续收到15帧P帧也无法正常解码出一副图片,这时给用户的直观感觉画面长时间停滞,低带宽下H.264居然比不上MJPEG。