在工业生产中,仪器设备的稳定运行对于保障工厂安全至关重要。因此,对这些设备进行实时监视显得尤为必要。在安全防护领域,由于涉及到重大的人身和财产安全,监视系统的实时性和准确性显得尤为重要。这促使视频监视技术得到了快速的发展,而监视视频的质量成为评估视频监视系统性能的关键指标。
视频监视质量通常包括实时性、流畅性和清晰度三个主要方面。实时性取决于监视终端的视频处理能力,要求客户端软件以最快的速度解码网络视频数据。由于监视终端具有接收缓冲区,实时性要求数据在缓冲区中停留时间尽可能短。
流畅性则与解码和显示速率与视频流接收速率的匹配程度有关。若解码和显示速率低于视频流接收速率,解码和显示会等待视频数据,导致播放不流畅。清晰度与视频数据的丢包率密切相关,网络状况和终端数据处理效率都会影响丢包率,进而影响清晰度。
为了解决这些问题,提高视频监视系统的性能,我们需要采取一系列优化策略。首先,提高视频终端的处理能力是保证实时性能的关键。然而,实时性和流畅性之间存在矛盾:实时性要求快速数据处理,而流畅性则需要视频流进行缓冲。因此,我们需要找到一种均衡的控制策略,既能让视频进行适当缓冲,又能保证快速解码,避免数据积累导致的时延。
一种有效的优化策略是采用零拷贝缓冲区。在流媒体编程中,数据量巨大,减少数据拷贝可以提升客户端处理速度,降低时延,减轻处理器负载,并减少因数据拷贝导致的丢包现象。零拷贝缓冲区通过合并接收缓冲区和解码器输入缓冲区,将数据拷贝操作转化为指针操作,从而减少了90%的数据拷贝工作。
具体来说,零拷贝缓冲区包括视频解码指针(Read-ptr)、接收数据指针(Write-ptr)和有效缓冲区首地址(valid_data_ptr)。备用缓冲区不存放网络接收的视频流。当有效数据分为两块,且解码数据分别存在于缓冲区的两个部分时,需要使用备用缓冲区,将Read-ptr后的数据拷贝到备用缓冲区中,形成连续的解码数据。
由于视频监视系统中,一帧数据的数据量远小于接收缓冲区,这种拷贝操作发生的几率较低,且每次拷贝的数据量也较小,从而有效优化了系统性能,提高了监视终端的解码和显示效率。
总之,通过采用零拷贝缓冲区等优化策略,我们可以显著提升视频监视系统的性能,确保实时性、流畅性和清晰度的完美平衡,为工业生产和安全防护提供更加可靠的技术支持。
随着自动化技术和软硬件技术的不断发展,传统工业对于自动化技术的要求显著提高,极大地促进了视频监视技术的发展;同时由于“911”事件的影响,世界对于安全的注重超过以往任何时候,安全防护成了各项活动的重中之重。在工业中,仪器设备的正常运行对工厂的安全正常运行有着决定性的意义,所以很有必要对这些仪器、设备进行监视。在安防中,由于涉及到巨大的人身及财产伤害,对于监视的实时性以及准确性的要求不言而喻。基于此,视频监视技术取得了长足的发展。而在视频监视技术的发展过程中,监视视频的质量成为视频监视系统中最重要的部分。因此对监视视频质量的优化策略研究直接影响整个视频监视系统的性能。
1 存在的问题
监视视频的质量主要体现在实时性、流畅性和清晰度等性能指标上。在一般视频监视系统中,实时性主要由监视终端视频处理性能决定。实时性要求客户端软件以最快的速率进行网络视频数据解码。由于远程监视系统中,监视终端存在接收缓冲区,缓存网络数据流,因此实时性要求数据在缓冲区中几乎不进行缓存。而对于视频流畅性,主要由监视终端解码、显示速率与网络视频流接收速率的相对关系决定,当解码、显示速率比视频流接收速率高时,解码、显示会阻塞等待视频接收,由于此等待过程并非平均分布在每一帧,因此会造成播放视频流畅性问题。清晰度主要和视频数据的丢包率有关,在网络状况理想的情况下,丢包率主要与监视终端数据处理效率有关,当终端数据处理速率较低时,由于视频数据累积,会造成接收缓冲区溢出,从而导致丢包率升高,引起清晰度问题。在实际应用中,网络拥塞对丢包率影响很大,决定了视频的清晰度。
由上述分析可知,要想保证视频实时性能,必须提高视频终端的处理性能。而同时由于实时性和流畅性存在矛盾:实时性要求监视终端以最快速率进行数据处理;流畅性要求视频流进行缓冲,同时控制监视终端解码、显示速率。为了达到好的监视效果,必须找到均衡控制策略,一方面让视频进行缓冲,保证视频解码、显示不阻塞,另一方面保证数据快速解码,不产生累积时延。同时必须对网络拥塞进行抑制,以保证视频清晰度。
2 优化控制策略
2.1 零拷贝缓冲区策略
流媒体编程中处理的数据量非常大,减少数据拷贝可以提高客户端对流媒体数据的处理速度、降低时延以及减轻处理器的负载;也可以减少客户端因为数据拷贝,来不及处理后续数据包而带来的丢包现象。从而节约系统资源,提高流媒体的播放质量。零拷贝缓冲区策略通过合理的缓冲区设计,能减少90%的数据拷贝工作,大大提高系统性能。
零拷贝缓冲区策略合并接收缓冲区和解码器输入缓冲区,使得缓冲区间的数据拷贝操作变成指针操作。
零拷贝缓冲区原理图如图1所示,Read-ptr:视频解码指针,指向待解码的数据;Write_ptr:接收数据指针,指向网络数据的存放地址;valid_data_ptr:有效缓冲区首地址,网络数据存放的首地址。备用缓冲区不存放从网络接收的视频流,当如图2所示,有效数据分为2块时,并且解码数据分别存在于缓冲区中的2个部分,则传递给解码器Read-ptr并不能满足要求,因此需要使用到备用缓冲区,具体策略是将Read-ptr后的数据拷贝到Buffer_ptr里,使得解码数据变成一块连续缓冲区。由于在视频监视系统中,一帧数据的数据量比接收缓冲区小得多,因此发生这种拷贝的几率很少,而且每次拷贝的数据量也很少,能大大优化系统性能,提高监视终端解码、显示的效率。
