流媒体QoS控制研究及实现

(整期优先)网络出版时间:2019-02-25
/ 2
摘 要 本文针对目前流媒体技术的现状,对提高流媒体服务质量的两种方案作了简单的介绍,并作了进一步的分析与探讨,最后笔者结合自身实际工作中的一个项目,介绍了对于改善流媒体QoS控制的策略。

关键词 流媒体;QoS;传输质量


1 引言

随着网络发展和人们需求的增加,单纯依靠传统“尽力而为”(best-effort)的网络服务越来越不能满足部分新兴业务,如:VOD、远程教育、视频会议、实时监控等实时性较高的需求,而流媒体传输采用流式技术,通过改变传统传输需要将整个文件完全下载完毕后才能进行观看等不足,只需在启动时花费几秒或几十秒的等待时间,以后即可进行连续观看,并在前台进行播放的同时,后台继续将文件剩余部分从服务器上源源不断地下载到本地,保证了本地观看的连续性。所谓流媒体是指将现场采集的音视频或已录制好的音视频数据编码后通过网络实时地发送、传输、接收、解码并播放的过程(其系统传输框架如图1所示)。其基本流程是:通过将原始视音频文件或现场采集的实时音视频编码成适合网络传输的流格式,储存在流媒体服务器上,等待客户的请示,或直接由流媒体服务器进行现场直播。当流媒体数据通过传输协议传输到客户端后进行解码并播放。目前流媒体技术已广泛应用于新闻发布、在线直播、网络广告、信息插播、互动游戏、视频点播、远程教育、网络电视、实时视频会议等领域。

1520162924.jpg

图1 流媒体系统传输框架图

按照传统的先进先出(FIFO)的网络传输方式,所有的数据流都按照相同的服务等级来对待,一旦网络出现拥塞,这对实时性要求较高的流媒体传输来说,显然不能保证流媒体传输的质量,也不能较好地满足用户的要求。为了改变这一现状,目前主要有两种方案用于提高流媒体QoS(Quality of Service)控制:①改造现有网络,使其保证流媒体传输质量,如IntServ、DiffServ模型等,这一方式以目前网络的规模以及改造所需的成本来看,至少对现在来说是不现实的。②在现有网络的基础上,通过对端系统的传输控制来最大限度地提高流媒体传输质量,这种方式不仅对现有网络进行了改造,而且对下一代网络(NGN)的发展也具有重要的意义。本文主要针对第二种方案来研究流媒体QoS控制。

2 改善流媒体传输质量

2.1 影响流媒体传输质量的因素

影响流媒体传输质量的因素主要包含以下几个:

端到端的延迟:包括传输时延、传播时延、排队时延。它是影响流媒体质量最重要的因素之一。必须根据网络的负载情况,控制在一个合理的范围之内。

时延抖动:是两个相邻分组的数据在网络传输过程中由于经过不同的网络延迟产生的。由于网络传输的不确定性,时延抖动是没法避免的,解决的方法通常是在接收端设置缓冲区,在数据流到达后,并不立即播放,而是保存在缓冲区,等到规定播放时间到来才进行播放。

丢包率:是指网络拥塞时,数据流没有及时到达接收端。这时丢失的数据包将直接影响到接收播放的质量,一般情况下,丢包率不得超过1%。

数据包的失序:每个数据帧都有一个序列号,以标记在流中正确的序号。在网络传输过程中,由于数据包经过不同的线路或丢包等原因,致使数据的顺序发生变化。解决的方法也是在接收端设置缓冲区,将接收到的数据进行重新组合,恢复原来的顺序。

2.2 改善流媒体传输质量的途径

改善流媒体传输质量的关键就是要使系统保证有较好的QoS。因此,提高流媒体质量可以从提高流媒体QoS控制上考虑。根据功能的不同,提高流媒体QoS控制大体上可以从拥塞控制、错误控制和缓存机制几个方面入手。

(1)拥塞控制:主要是通过某种速度控制机制,在网络拥塞时,降低数据传输时延和丢包率。目前主要有速率控制和速率整形两种方式。

基于速率控制机制主要包括基于源码率的、基于接收者码率的以及混合码率控制。基于源码率的控制机制主要是通过收集视频传输反馈信息,动态改变数据流的发送速率。基于接收者码率的控制机制主要是通过接收到的数据流的情况,向应用层反映相应的统计信息,动态改变接收信道和播放效果。混合码率控制结合二者的特点,动态改变数据流的发送速率及数据接收信道,再达到最佳播放效果。

基于速率整形机制主要是将码流压缩以适应网络带宽的要求。目前主要有编解码滤波器、弃帧滤波器、弃层滤波器、频率滤波器和再量化滤波器等几种方式。具体请参考文献[1]。

(2)错误控制:如前面所述,丢包、延时等问题在网络传输过程中是无法避免的,那么在这种已发生的情况下,如何更好地、更高质量地来控制错误,保证音视频文件的顺序播放?错误控制,其主要解决在丢包、延时等情况下,对流媒体数据的纠错,达到最佳播放效果。错误控制机制包括向前纠错机制、重发机制、错误恢复编码机制和错误隐藏机制。具体请参考文献[2]。

(3)缓存机制:主要有在服务器端设置缓存和在客户端设置缓存两种方式。在服务器端设置缓存,可以在整个网络对所有客户端的请求作优化处理,是一种调度策略,可以使服务器处理能力达到最佳。在客户端设置缓存,能够消除由于网络传输带来的延时抖动、数据包的失序等因素,保证播放的质量。

3 视频监控系统中QoS控制的实现

以笔者工作中的一个项目为例,该项目为重庆某集团重大危险源监控系统的第二代产品,系统集现场视频采集、储存、网络传输、视频检索、远程控制、数据分析、预案启动、应急指挥于一体,实现对重大危险源的“三级监控”(即现场监控、企业监控和集团监控),形成了一个完整的系统的重大危险源监控和事故应急处置的综合信息平台和高效可靠的监控指挥系统。在该系统中,我们基于现有网络,通过控制端系统,尽可能是提高系统的QoS控制。该系统体系结构如图2所示。

1520178230.jpg

图2 重大危险源监控系统体系结构

该系统是基于RTCP(RTP Control Protocol)/均数RTP (Real-time Transport Protocol)协议组,分别是建立在UDP基础上的。它的工作流程大致如下:

首先客户端通过RTCP协议向服务器端发起音视频播放请求,并建立客户缓冲区,服务器端在收到客户端发来的请求后,对现场采集的音视频或检索存储在服务器中的音视频文件,按照QoS模块中协商的相关参数进行压缩,或者按照传输过程中的反馈信息进行速率整形,以适合网络传输,并将压缩好的RTP数据包传输到客户端,客户端先以缓存接收,待重新组合后,按照播放顺序进行播放。此系统在提高流媒体QoS控制上有以下三个特点:

1)QoS控制协商

在系统中,建立QoS控制协商模块,可以按照客户端的需求,对音视频监控的每一个通道的参数进行协商,根据协调的结果,对传输的码流进行及时调整。QoS采用TCP连接的方式,确保连接的质量,利用多线程编程处理,确保在进行QoS参数协调时不阻塞主线程,影响播放。该模块结构如图3所示,其数据传输流程如下:

1520186860.jpg

图3 QoS协商模块

服务器端通过函数S_CREATE创建一个线程,并调用函数S_LISTEN进行端口监听,当客户端有协调请求时,通过函数C_CREATE建立一子线程,并调用C_CONNECT函数与服务器端进行连接,连接成功后,服务器端调用S_SEND函数将当前QoS参数发送到客户端,客户端对此参数进行协调、调整,等满足客户端需求后,调用C_SEND函数将QoS参数返还至服务器端,服务器端收到该返还参数后,将新的QoS参数反映到音视频压缩、编码模块,由此实现协商功能。

2)动态数据流速率整形

由于网络传输的不确定性,在传输过程中,根据RTCP控制反馈信息,对速率作出及时调整使数据流速率适应网络要求:一是采用改变量化系数策略。当码率太高时,加大量化系数;当码率太低时,减少量化系数;在码率合适的情况下,保持当前量化系数。二是采用丢帧滤波策略。当网络出现拥塞时,按照音视频帧结构中B帧、P帧、I帧的作用不同,首先是丢弃B帧,其次是P帧,最后是I帧。

3)错误控制机制

采用在客户端增加缓存机制,将接收到的数据包进行重组,最大限度地消除由于网络传输造成的时延抖动、包失序等原因带来的画面质量下降。在播放的过程中,可以按照要求通过改变缓冲区的大小来减少缓存上溢等情况来增加播放质量。同时在客户端的播放画面中增加错误隐藏机制,尽量使画面播放流畅。

4 结束语

本文通过对目前流媒体技术现状的分析,指出提高流媒体服务的关键因素是提高流媒体的QoS控制,并在此基础上对提高QoS控制作了进一步的介绍,最后将上述提高QoS控制的技术运用于实际,实际工作效果显示,系统能够较好地满足用户要求。

参考文献

[1]庞萍,田隽,张剑英. 流媒体的拥塞控制技术研究综述[J]. 电脑知识与技术,2007,(5)

[2]董科军,阎保平. 流媒体传输的质量控制技术研究[J]. 微电子学与计算机,2003,(5)

[3]任斌. 影响流媒体数据传输质量的因素与解决途径[J]. 电脑知识与技术,2006,(36)

[4]杜昱. 关于QoS视频传输系统中QoS协商模块的设计[J]. 计算机系统应用,2007,(3)