近年来,随着视频处理和通信技术的飞速发展,音视频实时通讯的应用已经深入到生活的方方面面。从游戏直播、银行视频开户、线上教育、直播带货再到视频会议等,各种应用场景随处可见。
在这些场景中,视频画面是否清晰、流畅、视频延时是否足够小,是影响用户体验的关键因素。当你在观看游戏直播或者参加在线课程的时候,难免会遇到视频卡顿、花屏、延时大、不清晰这些问题。那么你知道是什么原因导致了这些问题吗?事实上,尽管相关厂商一直在致力于改进用户体验,但你仍然会时不时的碰到让人头痛的场景。今天的这篇文章将会带你挖掘这些问题背后的原理,也让你了解视频服务提供商在面对这些“难搞”的问题时做了哪些努力。
为了便于理解,我们把一个视频传输链路简化成图1所示,前端的成像系统进行现场画面的图像采集、编码,然后以特定的网络协议把码流发送出去,视频数据经过网络服务器的路由和传输之后到达接收端,在接收端进行解码、渲染,还原采集端的现场画面。
图1 视频采集传输链路
清晰度
影响视频清晰度的主要因素是传感器成像时的图像分辨率和编码时的码率。对应同样大小的成像区域,采集图像的分辨率越高意味着更多的细节被传感器捕捉到。大多数情况下,我们可以简单的认为4K视频比1080P的视频更清晰。而由于目前的视频编码全部都是有损编码,码率越高也就意味着编码时损失掉的细节越少。当然,随着视频编码算法的持续改善,一些更先进的编码算法能够在保持图像质量的同时尽可能的降低码率,但这也意味着编码复杂度的增加和由此带来的硬件成本增长。
流畅度
编码之后的视频码流要在网络上传输,由于发送端和接收端之间的网络环境存在大量不确定因素,网络抖动几乎无法避免,“生产者”和“消费者”之间无法达到绝对意义上的平衡就会出现堵塞或丢包。如果把网络比作高速公路,把网络上传输的数据流比作“汽车”,那么视频码流的码率越高,就意味着同样的“道路”上要跑更多的“汽车”,堵车的概率也就越大,几乎必然会带来视频卡顿、丢帧等现象,从而导致视频不流畅。
延时
从图1的数据流向我们可以看到,在采集端、网络传输中、接收端都会产生延时。
摄像头采集图像时,sensor成像需要曝光和扫描时间,通常每秒30帧的视频至少会产生33ms的延时,也就是一帧图的时间。sensor采集到的数据送给编码器进行编码也会有延时,编码本身是一个复杂的过程,并且通常图像分辨率越高,编码延时越长。尽管目前绝大多数场景下都会使用硬件编码器,但编码延时仍然是一个可观的数字,通常达数十毫秒。
端到端的网络传输需要遵循一定的网络协议,因为存在大量的路由转发、协议解析,延时自然也无法避免,当然不同的网络协议带来的延时也是不同的。
接收端收到数据后首先会进行解码,这是编码的逆过程,延时长短取决于解码器的性能。普通性能的x86电脑解一帧高清图像需要几毫秒,而如果是在普通的手机上播放视频,则需要10毫秒左右才能解码一帧。接下来是渲染,也就是把视频数据在显示器中展示出来。一般情况下渲染的延时比较小,但如果考虑到系统硬件性能或音视频同步的要求,延时也可能增加。
看到这里,细心的读者可能会发现一些有意思的联系,那就是清晰度、流畅度、延时这三个因素是相互关联、相互约束的,想做到“既要又要还要”是很困难的。
图2 三因素相互约束的示意图
通常情况下,可以通过提升视频分辨率和码率来获得更好的视频清晰度,选择合适的流媒体传输协议也能够改善视频的流畅性和延时,比如RTMP(Real-Tune Messaging Protocol)就比HLS(Http Live Streaming)的实时性更好。单独优化某个性能指标并不困难,难点在于不同指标之间的相互约束,比如:降低码率可以减少卡顿,提升流畅度并降低传输延时,但这也意味着会损失图像质量,让用户失去观看高清视频的体验,甚至丢失有价值的细节信息。又比如:增加网络传输的缓冲区可以提升流畅度,但相应的延时就会加大。另外,在不同应用场景下这些指标的重要性也有差异,需要结合实际需求来提高某个指标的优先级。
接下来我们考虑一个特定的视频应用场景------一体化融合指挥调度系统。在这样一个用户数和设备数众多的系统中,由于终端设备五花八门,视频采集端可能会有监控摄像机、4G/5G布控球、执法记录仪、智能眼镜、智能头盔、无人机等,显示端可能会有调度台、手持终端、平板等,这些设备的视频编解码性能参差不齐,同时不同带宽、不同稳定性的有线网络、蜂窝网络、Mesh及卫星网络融合在一起,这时候如果仍然采用单一码率的视频流和固定的分发策略,并想要保持视频的流畅性、减少卡顿,将会是一件非常困难的事情。
图3 一体化融合指挥调度系统架构图
上图是一个典型的一体化融合指挥调度系统。在这个系统中,视频预览的动作通常是用户通过客户端发起,当用户需要预览设备的实时视频时,会先向监控平台发起预览视频的命令,平台再向设备发起指令,然后设备将编码之后的高清视频流发送给平台,平台再进一步下发给客户端。此时,当有另一个客户端需要预览同一个设备的视频时,同样的,会首先向监控平台发起预览视频的命令,平台发现之前已经向该设备申请过视频流了,便直接将已有的高清视频流分发给新的客户端,而不是重新创建新的视频流。
这种做法虽然保证了平台和设备之间只有一条高清视频流,能够减轻设备端的编码压力,但忽略了网络状况差异带来的影响。在整条通信链路上我们从平台的角度将网络分为两部分:一部分是设备端(采集端)与平台之间的视频上传,另一部分是平台与客户端(显示端)之间的视频分发。任意一个部分的网络状况变差时,都会引起视频卡顿和延时。
为了解决这一难题,睿极智能做了大量的前沿探索和开创性研究,提出了一种网络自适应流媒体分发系统。该系统的架构如图4所示,它的工作流程可以简要描述如下:
图4 网络自适应流媒体分发系统
(1)客户端需要预览设备的视频时,首先向负载均衡器发送命令,负载均衡器判断是否已经在预览该设备的二级视频流,如果是,直接返回对应的二级分发器的地址即可;否则,选择一个负载最小的二级分发器返回。
(2)客户端使用负载均衡器返回的地址与二级分发器建立视频流的传输通道。
(3)二级分发器如果没有在分发视频流,则向负载均衡器发送预览视频的命令,负载均衡器判断是否已经在预览该设备的一级视频流,如果是,直接返回对应的一级分发器的地址即可;否则,选择一个负载最小的一级分发器返回。
(4)一级分发器与设备建立视频流的传输通道,一级分发器从设备获取到合适的视频流后,将视频流发送给二级分发器。
(5)二级分发器从一级分发器获取到视频流后,进行处理,再将处理后视频流推送给客户端。
自适应流媒体分发系统的关键就在上述的第4步和第5步。
在第4步中,设备与一级分发器建立传输通道后,会在最初的若干毫秒内发送随机测试数据,计算出传输通道的初始网络状况,并根据网络的带宽、丢包率等选择最合适的分辨率、帧率和码率。同时,设备每隔一段时间就重新计算一次传输通道的网络状况,如果连续若干次计算出的网络状况都与之前的网络状况差别较大,则重新选择最合适的分辨率、帧率和码率。这样,就对设备与一级分发器之间的流媒体传输通道进行了自适应。
在第5步中,二级分发器与客户端建立传输通道后,会在最初的若干毫秒内发送随机测试数据,计算出传输通道的初始网络状况,并根据网络的带宽、丢包率等选择最合适的分辨率、帧率和码率。如果选择的分辨率、帧率和码率对应的视频流已经在预览,则直接分发给客户端即可。否则,将从一级分发器获取的视频流解码成原始图像数据,然后重采样成选择的分辨率,最后再使用选择的码率和帧率编码成新的视频流,并推送给客户端。这样,就对客户端与二级分发器之间的流媒体传输通道进行了自适应。
对4G/5G车载设备实际路测发现,在进入涵洞、桥梁、高楼、隧道、电梯等附近时,设备与一级分发器之间的网络带宽迅速降低至几百kbps,甚至几十kbps,同时网络丢包率大幅上升。未采用自适应流媒体分发系统前,客户端预览的视频往往会卡顿好几秒,甚至几十秒,严重影响了用户的使用体验。采用自适应流媒体分发系统后,客户端预览的视频基本不存在卡顿现象,非常流畅,延时也比较低,画面清晰度尚可(码率被一级分发器适当降低了)。当网络状况恢复后,客户端预览视频的清晰度也会自动提升(码率被一级分发器适当升高了)。
对手机/平板等客户端实际路测发现,在进入涵洞、桥梁、高楼、隧道、电梯等附近时,客户端与二级分发器之间的网络带宽迅速降低至几百kbps,甚至几十kbps,同时网络丢包率大幅上升。未采用自适应流媒体分发系统前,客户端预览的视频延时特别大,达到几十秒,画面也会卡顿住,偶尔刷新一下,还会出现马赛克现象。采用自适应流媒体分发系统后,客户端预览的视频基本不存在卡顿现象,非常流畅,延时也比较低,画面清晰度尚可(码率被二级分发器适当降低了)。当网络状况恢复后,或者对于网络状况良好的客户端,其预览的视频画面则是高清、甚至超高清的(码率被二级分发器适当升高了)。
综上,自适应流媒体分发系统采用精准的网络状况评估算法和负载均衡算法,在设备端自适应设备与一级分发器之间的网络传输通道,在二级分发器端自适应二级分发器与客户端之间的网络传输通道,大幅降低了客户端视频出现卡顿、延迟和丢帧等现象的概率,显著改善了用户预览视频,特别是超高清视频时的体验。
通过上面的分析和总结我们可以发现,平台的流媒体分发机制是整个架构中影响视频效果的关键因素。睿极智能自主研发的可视化融合指挥调度平台以视频业务为核心,基于“实时视频监控+融合指挥调度”双引擎,在传统安防视频监控基础功能之上,创新性的融入了指挥调度、视频会商以及智能视觉分析三大业务体系,极大的丰富了无线视频的应用场景。平台具有“分布式、高安全、高可靠、大容量、可伸缩、易管理”等先进的设计理念,同时运用了上述网络自适应流媒体分发系统,能够为用户提供流畅的超高清实时视频传输服务。
作为视频物联网基础应用的专业提供商,睿极智能将继续不断提升核心技术的积累,在视频编码、图像质量、低延时流媒体传输协议、弱网环境下的视频传输算法等领域持续创新,迎合更多场景的业务需求,为用户提供最佳的产品体验。