背景技术
近年来,随着因特网和多媒体技术的迅速发展,具有较好实时性和交互性的网络视频会议得到了广泛应用。然而目前使用的视频会议多采用TCP/IP协议来传输实时音视频数据,实时效果较差且服务器与服务器之间不能进行级联。
传统的TCP/IP协议由于采用面向连接的重传机制,已不能满足多媒体视频数据的实时传输,而其拥塞机制容易造成网络拥塞,不利于大数据量的多媒体音视频数据传输。UDP协议虽然对传输的数据采用尽量交付的方式,但它没有提供拥塞控制。
实时传输协议RTP(Real-time Transport Protocol)是专门为多媒体数据的实时传输而设计的。其配套的传输控制协议RTCP为RTP的传输提供控制功能,在实时的多媒体会议得到了广泛应用。
RTP提供端对端的网络传输功能,被定义为一对一或一对多的情况下工作。RTP提供时间戳信息以实现同步,适用于点播和组播的方式传输实时数据。RTP通常使用UDP进行数据传输,也可工作在TCP或ATM等协议之上。RTP本身不提供流量控制和拥塞控制,它依靠RTCP提供这些服务。
实时传输控制协议RTCP(Real-time Transport Control Protocol)为RTP提供传输控制功能。在RTP会话期间,各会话参与者定期发送RTCP包反馈统计信息如发包数、丢包数、时延等,发送方据此调节发送速率。RTP和RTCP配合使用,提供数据实时传输和Qos服务来满足网络音视频数据的实时传输、时延和丢包要求。
RTCP控制包五种类型:
发送包报告包SR(Serder Report):当前发送方发送的统计信息。
接收方报告包RR(Receive Report):接收方所作的接收统计信息。
源描述项包SDES(Sender Descr iption):描述与会话源相关的统计信息。
应用包APP(Application):开发新的应用。
离开包BYE:离开会话时的报告包。
现有的基于常数增长和常数减少的流量控制算法来进行流量控制会出现如果两个增加和减小常数设定得太大,RTP流的抖动会很大,加剧网络的拥塞及如果设的太小,RTP流的速度增加就会太太慢或减小的太快,不利于网络带宽利用率的提高的问题。
具体实施方式
下面结合附图对本发明的具体实施方式进行详细描述。但本发明的实施方式不限于此。
本发明方法实施例原理为利用多个服务器级联使用RTP/RTCP协议,根据RTCP的动态反馈可以各个服务器之间及服务器与客户之间动态的进行传输速率的调整。服务器端接收从源客户端或源服务器发送过来的实时视频数据RTP包或RTCP包,然后对数据包进行分析,如果是RTP包则直接转发到目标客户端或者目标服务器;如果是SR包则计算RTP数据包接收量,同时根据接收的源客户端或源服务器的SR统计包,统计接收的丢包率、时延、抖动等信息以构造接收方统计包RR,向源客户端或源服务器反馈网络状况。
为方便对本发明技术方案的理解,以下以本发明技术方案在多个服务器级联情况下的实现为例,具体说明本发明技术方案在该频段内的实现方式。然而,服务器级联并不构成本发明实现的限制条件,本发明的实现并非必然局限在服务器级联的状况下,相应的,本发明所指的发送端可以是级联服务器的上级服务器或者源服务器、源终端,接收端可以是级联服务器的下级服务器或者终端。本发明无意对技术方案实现时所采用的具体的级联方式或者与此相关的具体设备进行限制。同理,本发明技术方案并不限制于音视频文件的转发控制,实际上,只要是可以应用RTP协议而需要进行由于网络拥塞而进行流量控制的情况,均可以适用本发明各个实施例所提供的技术方案。
如图1所示,为本发明实施例1提供的音视频转发控制方法原理流程图,具体如下:
步骤10,发送端发送RTP包,并在发送设定数量的RTP包后,根据当前发送RTP包的数量生成SR包并发送。
本发明实施例是基于RTP/RTCP协议框架下的,因而,本发明实施例中的发送端与接收端建立有基于RTP、RTCP协议的通信与联系方式。发送端需要将RTP包数据发送给接收端,并在发送了一定数量的RTP包后,根据当前已经发送的RTP包的数量构造SR包,并将SR包也发送给接收端。这里的SR包中至少包含在此之前发送RTP包的数量,这个数量可以通过每个RTP包头的序列号计算。
步骤20,接收端接收RTP包和SR包,并在接收到SR包后,统计当前接收到的RTP包数量,根据SR包中携带的当前发送RTP包的数量,计算丢包率并生成RR包返回给发送端。
一般的,接收端从发送端接收数据,并在接收数据后,判断接收的是RTP包或者SR包。如果接收的是RTP包,则直接转发给下级的服务器或者终端,否则,如果接收的是SR包,则需要统计在此之前一共接收到的RTP包的数量。对于RTP包接收数量的统计,可以设置一个计数器来进行。
由于发送端发送的SR包中包含有同一个时段内发送端发送RTP包的数量,因而,接收端可以根据SR包中携带的发送RTP包的数量和自行统计的接收RTP包的数量计算丢包率curP,具体为curP=丢失的包数/实际发送的包数,而丢失的包数=发送的包数-接收的包数。
得到丢包率curP后,可以根据curP构建RR包,其中携带curP信息,并将RR包返回给发送端。
步骤30,发送端接收到RR包,获取丢包率;根据丢包率调整发送RTP包的速率。
发送端接收到RR包后,获取其中携带的丢包率curP信息,并根据丢包率curP信息来调整RTP包的发送速率,也就是根据之前丢包率来调整之后发送数据的速率,从而实现对于数据发送的动态控制。
具体的控制方法可以如下:
设定丢包率的门限值P;
丢包率<P时,提高发送RTP包的速率;否则,降低发送RTP包的速率。
特别的,本发明实施例提供了一种变常数增长和变常数减少的方法动态调整发送端的发送速率,具体如下:
设定当前发送速率CurRate,初始发送速率InitRate,最小发送速率MinRate(InitRate>MinRate),最大速率为MaxRate,速率增加值AR,递减因子a(0<a<1),上次的丢包率为lastP且初始值为零。
发送端发送RTP数据包,发送速率CurRate=InitRate;发送端每发送N个包向接收端发送SR报告包;接收端接收RTP包后周期性进行数据包统计,将统计丢包率打包到RR包中发送给发送端;发送端从接收到的RR获取丢包率信息,据此判断网络状态调整发送速率:
当curP≤P且(curP-lastP)≤0时,有
CurRate=min((CurRate+AR*Abs(curP-lastP)),MaxRate);
当curP≤P且(curP-lastP)>0时,有
CurRate=max((CurRate-AR),MinRate);
当curP>P且(curP-lastP)>0时,有
CurRate=max((CurRate*a/(curP-lastP)),MinRate);
当curP>P且(curP-lastP)≤0时,有
CurRate=max((CurRate*a),MinRate)。
据此,可以准确的根据网络状态动态调整发送速率,通过使用变常数增长和变常数减少的方法来进行流量控制,在一定程度上避免了如果两个常数AR和a设定得太大,RTP流的抖动会很大,加剧网络的拥塞及如果设的太小,RTP流的速度增加就会太太慢或减小的太快,不利于网络带宽利用率的提高的问题。
实际上,接收端接收从发送端发送过来的实时视频数据RTP包或RTCP包(注:此处为SR包即Sender Report),然后对数据包进行分析,如果是RTP包则直接转发到目标客户端或者目标服务器;如果是SR包则计算RTP数据包接收量,同时根据接收的源客户端或源服务器的SR统计包,统计接收的丢包率、时延、抖动等信息以构造接收方统计包RR,向发送端反馈网络状况。
发送端在向接收端发送RTP数据包之后,构造发送端报告包SR,统计自己的发送情况以通知接收端。发送端接收到接收端反馈的RR统计包,根据反馈信息调整发送RTP包的速率,以避免网络拥塞。一旦发生网络拥塞,数据的传输速率将受到严重影响,导致图像质量急剧下降,延时很大,图像的实时性就难以保证。因而,系统中的流量控制比较重要。
采用类TCP的拥塞控制方法,根据网络的拥塞情况进行流量控制。判断网络拥塞的主要参数有丢包率和时延。它们通过统计信息包SR和RR求得。基于时延的拥塞控制,在与TCP竞争进会丢失一部分带宽,本发明实施例采用基于丢包率的拥塞控制。
当前丢包率curP=丢失的包数/实际发送的包数;实际发送的包数可通过RTP包头的序列号字段计算,丢失的包数为实际发送的包数减去实际接收的包数。实际接收的包数可在接收端设置计数器进行统计。设置丢包率的门限值为P,当前丢包率curP<P时,网络状态为负载可提高数据传输速率;当网络状态进入拥塞,就降低传输速率。
如图2所示,为本发明实施例2提供的音视频转发控制系统结构示意图,该系统包括发送端和接收端,具体如下:
发送端,用于发送RTP包,并在发送设定数量的RTP包后,根据当前发送RTP包的数量生成SR包并发送;接收到RR包,获取丢包率;根据丢包率调整发送RTP包的速率;
接收端,用于接收RTP包和SR包,并在接收到SR包后,统计当前接收到的RTP包数量,根据SR包中携带的当前发送RTP包的数量,计算丢包率并生成RR包返回给发送端。
这里的发送端可以是源客户端或源服务器,接收端可以是目标客户端或者目标服务器。
如图3所示,为本发明实施例3提供的音视频转发控制系统中发送端结构示意图,该发送端包括RTP包生成单元31、SR包生成单元32、第一发送单元33、第一接收单元34和发送速率控制单元35,具体如下:
RTP包生成单元31,用于生成RTP包;
SR包生成单元32,用于根据当前发送RTP包的数量生成SR包;
第一发送单元33,用于发送RTP包和SR包;
第一接收单元34,用于接收接收端发送的RR包;
发送速率控制单元35,用于根据RR包中携带的丢包率调整控制发送RTP包的速率。
如图4所示,为本发明实施例4提供的发送端中发送速率控制单元35结构示意图,该发送速率控制单元35进一步包括参数设定子单元351、速率计算子单元352和控制子单元353,具体如下:
参数设定子单元351,用于设定丢包率的门限值P,最小发送RTP包的速率MinRate,最大发送RTP包的速率MaxRate,速率增加值AR,递减因子a,其中,0<a<1;
速率计算子单元352,用于根据设定参数与获取的丢包率,计算当前发送RTP包的速率;
控制子单元353,用于根据速率计算子单元352计算得到的当前发送RTP包的速率,控制第一发送单元33的发送速率。
如图5所示,为本发明实施例5提供的接收端结构示意图,该接收端包括第二接收单元51、统计单元52、丢包率计算单元53、RR包生成单元54和第二发送单元55,具体如下:
第二接收单元51,用于接收所述RTP包和SR包;
统计单元52,用于统计接收到RTP包的数量;
丢包率计算单元53,用于根据SR包中携带的当前发送RTP包的数量和当前接收到的RTP包的数量,计算丢包率;
RR包生成单元54,用于根据丢包率生成RR包;
第二发送单元55,用于将RR包发送给所述发送端。
上述各个实施例中,发送端和接收端可以是级联的服务器的上下两级服务器,发送端也可以是源客户端或源服务器,接收端也可以是目标客户端或者目标服务器。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。