一种流媒体发送速率控制方法

文档序号:7953442阅读:376来源:国知局
专利名称:一种流媒体发送速率控制方法
技术领域
本发明属于移动网多媒体通信领域,涉及基于实时流协议和实时流控制协议的流媒体服务器发送速率控制技术。
背景技术
流媒体(Streaming Media)是一种媒体传输和处理技术,它的基本特点是媒体内容经过服务器处理后分为一个个的数据包在网络上连续传输,客户端一侧对收到的包进行近乎实时的播放处理。例如流媒体的VOD(Video On Demand,视频点播)应用中,流媒体播放器不是下载整个文件后播放,而是设置一个缓冲区边下载边播放,它的好处是可以节省下载整个文件的等待时间,并且不需要用户有大的磁盘空间存储,另外通过设置缓冲区也可以在缓解网络带宽波动的影响。
随着互联网、移动通信网等网络的发展和网络内容业务的繁荣,以流媒体技术为基础的各类应用发展迅速,然而这些网络本身并非专门针对流式传输设计,尤其是并非针对移动通信网络特性设计,IP(Internet Protocol网际协议)包的传输是尽力而为的且易拥塞,而流媒体应用对网络的带宽、时延、抖动、丢包率都有要求,如何保证流媒体的服务质量,为用户提供好的播放体验是流媒体应用的关键。
现有的流媒体速率调整技术从本质上可以分为两类一类是基于控制阈值的,一类是基于网络带宽估算的。前者需要对反应网络状况的关键参数设置控制阈值,例如比较客户端反馈的丢包率和设定的阈值来决定是否调整发送速率,调整的期望速率往往采用将当前速率与一个经验值进行运算来得到。后者则是使用公式对网络带宽进行估算,根据估算后的网络带宽来调整速率。这两种方式各有优缺点,基于阈值的速率控制在稳态的时候比较稳定,它能做平滑处理所以有好的防振荡性,而且通过分析控制数据的走向,它的控制算法能够具有较好的预测特性;但它的缺点是采用经验值调整速率可能会不准,无法快速正确的利用当前带宽,例如可能过于缓慢或者过于快速。基于网络带宽估算的速率调整技术的优点是对网络带宽的波动反应速度快,可以快速切换;它的缺点是容易振荡,另外由于估算的是当前网络状况这类算法一般不具备预测性,难以提前切换速率。
基于控制阈值的切换方向根据平滑因子和阈值决定,期望速率用当前速率*调整因子(经验值)得到。
基于网络带宽估算的调整速率用下述公式对网络带宽进行估算,BandWidth=Traffic/f(Rtt)其中Traffic为估算时间段内的总流量,f(Rtt)为以该流量所耗用的往返时长为参数的函数。
因此,概括地说,现有方法的缺点主要是■ 基于控制阈值容易导致速率调整不准;■ 基于网络带宽容易发生调整振荡。
流媒体一般采用RTSP(Real Time Streaming Protocol实时流协议)作为控制协议,RTP/RTCP(Real-time Transport Protocol实时传输协议/Real-time TransportControl Protocol实时传输控制协议)作为传输协议,其中RTCP是和RTP一起协同工作的,在RTP会话期间,各个参与者周期性的发送RTCP包,例如客户端会周期性的发送RTCP RR(RTCP Receiver Report接收端报告)包,其中含有丢包率、抖动等信息,这为服务器测量网络状况进行速率控制提供了可能。
为减缓乃至消除网络波动的影响,流媒体播放器一边进行播放一边在后台的缓冲区暂存接收的数据,播放时从缓冲区中取数据。当客户端后台缓冲区没有数据的时候称为下溢(underflow),此时客户端没有数据可播放,就会出现短暂的停顿以缓存一定量的数据;当缓冲区满的时候成为上溢(overflow),此时客户端会主动丢包从而导致播放时的马赛克等现象。3GPP(3rd Generation Partnership Project)标准组织的规范文本TS26.234对RTSP以及RTCP协议进行了扩展,它定义了3GPP-Adaptation字段,可以反馈客户端缓冲区的大小以及缓冲区的目标保护时间,还专门定义了一种RTCPNADU APP(下一个待解码应用数据单元)包,用于反馈当前客户端缓冲区的状况,服务器使用这些信息能更有效的控制发送速率,避免客户端上溢或者下溢的情况发生。
本发明的流媒体速率控制方法主要是基于上述的待解码应用数据单元(NADU)包以及接收端报告(RR)包中的内容来调整速率的。

发明内容
本发明的目的在于提供一种流媒体发送速率控制方法,它结合了基于阈值控制和基于带宽估算的速率调整技术的优点,又尽量避免了二者的缺点,能较快且能较好的适应网络带宽的变化。
本方法的基本思想是通过接收RR报文以及NADU包得到关键的控制参数——丢包率、抖动、往返时延、空闲缓冲区大小,对这些参数设置阈值来决定服务器端的速率切换方向,而切换后的最终发送速率则通过决策器对估算的网络带宽与根据控制参数调整的待定发送速率进行运算得到。
本发明的技术方案是一种流媒体发送速率控制方法,其特征在于①服务器端收集客户端上报的RTCP RR报文以及RTCP NADU APP包,得到丢包率、抖动、往返时延、空闲缓冲区大小,将这些参数或者参数的变化与设定的阈值比较得到4个待定速率切换方向,当客户端不发送NADU包的时候仅根据RR包的分析控制速率切换方向;②将这些参数或者参数的变化按其调整因子(经验值)乘以当前速率得到多个待定发送速率值,这些值成为待定发送速率的一部分;服务器端通过丢包率、往返时延、通路MTU估算可用的网络带宽,所用公式为BandWidth=A*MTU/(RTT*f(z,k))(公式1);其中A为常量,MTU(最大传送单元)为当前通路的MTU值,RTT(RoundTripTime)为往返时延,f(z,k)为以当前丢包率为变量的k次函数;再用估算网络带宽按以下方法得到待定发送速率值的另一部分如果估算网络带宽小于当前速率,则取估算带宽为待定发送速率值;如果估算的网络带宽大于当前速率,则取当前速率减1为待定发送速率值;③最终的速率切换方向按下列方法确定根据丢包率、抖动、往返延时、空闲空间4参数与其阈值比较得出的切换指示分别为S1、S2、S3、S4,只要其中有一个为下切则最终的切换指示为下切;当S1、S2、S3都是上切时服务器判断是否收到了NADU包,如果没有收到则最终的切换指示为上切,如果收到了NADU包,则只有可播放时间大于等于目标保护时间的时候最终的切换指示才能被置为上切,其它情况下最终的速率切换指示均为不切换;最终的发送速率确定方式为当需要下切速率的时候,为了保持按阈值控制的预测特性,取待定发送速率和当前可用带宽两者中的最小值;当需要上切速率的时候,为了避免不当的切换,取当前可用带宽;将所取值最后圆整为该媒体流的预设速率序列中的最近值作为实际发送到网络去的媒体流速率。通常,预设速率序列是根据网络运营商的实际运行经验并结合技术现状人为确定的。
如上所述的控制方法,其特征在于用NADU包控制客户端缓冲区边界避免溢出,使用RR包控制客户端缓冲区水位处于边界内部时的调整,尽量快速对带宽变化进行响应。其优点在于具有抗振荡性、带宽预测性、能快速响应网络状况变化、有效控制缓冲区上溢或者下溢。
本发明的原理是RR报文中包含有丢包率(丢包比例),抖动以及LSR(Last SR Timestamp)、DLSR(Delay Since Last SR)这些参数,其中LSR为客户端收到的服务器端发送的上一个SR(sender report发送端报告)包的时刻,DLSR为客户端从收到服务器端发送的最近一个SR到发出此RR包的时间间隔。丢包率(丢包比例)反应了发送接收报告时刻的网络状况,大的丢包率(丢包比例)说明当前网络状况坏;抖动为RTP包到达间隔的变化值,抖动的持续增大或者大抖动说明了网络正在变坏或者已经变坏;服务器可以算出往返时间RTT(Round-trip Time),RTT的持续增大或者大RTT也能说明网络正在变坏或者已经变坏。而上述指标如果在连续的一段时间内都正常的时候说明当前网络状况好。根据这里的说明,当RR包反映出现大丢包率、大抖动等参数时服务器立即下切速率,以适应当前较低的网络带宽;而当丢包率、抖动等参数持续正常的时候,服务器可以尝试速率上切;其它情况下说明当前发送速率不需要调整。以上需要下切或者上切的两种情况下服务器调整的估算发送速率则根据系统设定的经验值来增大或者减小。
NADU报文中包含有空闲缓冲区大小参数,但是空闲缓冲区的大小无法说明当前的网络状况,例如发送高码率数据流出现大丢包率的时候可能客户端的缓冲区的水位仍然正常。缓冲区上溢和下溢对于播放的影响是勿庸置疑的,服务器需要控制缓冲区的水位避免客户端缓冲区上溢或者下溢的情况出现,但不能仅使用客户端空闲缓冲区的大小来做为测量当前网络状况的依据。缓冲区数据上溢说明在一段时间内客户端的平均解码速率低于平均接收速率,此时可能是网络拥塞后补偿性发包或者客户端解码能力不足的情况;缓冲区数据下溢说明一段时间内客户端的平均解码速率高于平均接收速率,此时可能是网络拥塞或者服务器限制流量的情况。因此在不考虑服务器限制流量的情况下客户端上溢或者下溢服务器都应下切速率,切换到的发送速率也根据系统设定的经验值来增大或者减小。
根据以上说明本方法并非完全依赖NADU包来控制速率切换,它采用的是使用NADU包分析来控制缓冲区边界时的速率切换,而缓冲区水位正常时的发送速率控制则通过RR包分析来完成。
按照上面的处理,根据RR包或者NADU包可以得到多个速率切换方向和多个按经验值估计的待定发送速率,所以决策器需要有一个优先级处理过程,因为缓冲区上下溢出的情况是紧急情况,所以它的优先级最高;高丢包率说明当前网络状况坏,它的优先级次之;连续抖动增大或者突然大抖动说明网络正在变坏,抖动参数的处理优先级要高于往返时延。当上面这些参数得到的速率切换指示只要有一个是指示下切,则最终的速率切换方向为下切,由对应参数估算出待定的发送速率;当有多个参数分析得到的切换指示为下切的时候,最后的待定发送速率按上面的优先级处理规则取由对应参数估算的发送速率;当这多个切换指示都是上切的时候,需要判断客户端的可播放时间是否达到3GPP Adaptation字段中的保护时间,当客户端缓存中的可播放时间高于此保护时间说明当前网络带宽足够,此时最终的切换指示为上切,否则为不切换;如果服务器没有收到3GPP Adaptation字段或者没有收到NADU包,则无法做上述判断,此时直接上切速率。按上面参数进行分析得到的发送速率是根据经验值估计出来的,它需要做一定的校正,因服务器的发送速率需要适应当前的网络带宽,而从RR包中服务器可以获得RTT参数,根据通路MTU、RTT以及丢包率,服务器可以计算出近似的当前可用带宽。为了保持两种速率控制方法的优点,最终的发送速率确定方式为当需要下切速率的时候,为了保持按阈值控制的预测特性,取待定发送速率和当前可用带宽两者中的最小值;当需要上切速率的时候,为了避免不当的切换,取当前可用带宽;将所取值最后圆整为该媒体流的预设速率序列中的最近值作为实际发送到网络去的媒体流速率。通常,预设速率序列是根据网络运营商的实际运行经验并结合技术现状人为确定的。
本方法的优点是
■ 通过分析RR以及NADU包得到关键的控制参数来决定速率切换方向;■ 调整后的速率由估算的网络带宽与根据控制参数调整的发送速率进行运算得到;■ 兼俱了预测网络速率和准实时调整两方面特性。


图1是本发明实施例的控制形式的总体结构框图。
图2是本发明实施例的速率控制决策部分的基本工作流程框图。
图3是本发明实施例中对RR包分析的流程框图。
图4是本发明实施例中对丢包率分析的流程框图。
图5是本发明实施例中对抖动分析的流程框图。
图6是本发明实施例中对往返时延分析的流程框图。
图7是本发明实施例中对RTCP NADU包分析流程框图。
图8是本发明实施例中综合决策分析流程框图。
具体实施例方式
下面结合附图详细描述本发明。
图1为本发明实施例的总体控制结构,服务器端速率控制相关主要是100文件读取部分、101决策控制部分、102传输控制部分。
在流媒体的播放过程中,传输控制部分102通过文件读取部分100得到发送的媒体流并通过IP网300发送相应的RTP数据包104以及RTCP数据包103;客户端由IP网300收到的RTP数据包203被放入缓冲区201中并供解码播放器200使用,客户端由IP网300收到的数据包204被放入QoS监测反馈部分202。
客户端的QoS监测反馈部分202通过监视缓冲区201定期发送RTCP报告204给服务器,服务器决策控制部分101对通过IP网300收到的客户端的RTCP包103进行分析,当需要切换时向传输控制部分发送切换指示;传输控制部分102收到切换指示后控制文件读取部分100按指定的速率读取新的媒体流并发送给客户端。
图2为本发明实施例的速率控制决策部分的基本工作流程1、决策控制部分101收到客户端的RTCP包103后对数据包调用处理400,它首先对RTCP包进行分析得到切换方向与估计的切换速率,同时根据RTCP包中的信息计算出当前的网络带宽;2、决策器判断收到的RTCP包中是否存在NADU包,如果有调用处理401。
根据NADU与3GPP Adaptation字段进行分析得到切换方向与估计的切换速率,如果没有则直接转到步骤3的综合决策处理402中;3、综合决策处理402根据上面由RR包分析400得到的切换方向与估计的切换速率、计算的当前网络带宽以及由NADU包的分析进行综合,得到最终的切换指示与发送速率。
4、如果需要切换,决策器将切换指示与最终的发送速率403通知传输控制部分。
图2中RR包的分析400包含的处理流程如图3所示,服务器分别得出丢包率分析500、抖动分析501、往返时延分析502,各得到一个切换指示与估算的速率,然后再进行可用带宽估算503得到当前可用的网络带宽。
图4为RR包丢包率分析500的流程1、服务器首先对丢包率进行平滑处理600,设当前RR包中的丢包率为NewLost,经过平滑后的历史丢包率为Lost,则新的丢包率为Lost=a*Lost+(1-a)*NewLost,其中a为0-1间的一个平滑因子;2、将丢包率L与设定的阈值G1比较,如果丢包率大于等于G1则服务器将需要下调速率,切换指示S1被设置为下切,设当前速率为CurSpeed,则调整到的速率为Speed1=CurSpeed*FactLostDown,其中FactLostDown为根据丢包率设定的降速因子;3、如果L小于G1则服务器将丢包率正常计数加1,当该计数达到设置的阈值G2时服务器将丢包率正常计数清0,切换指示S1被设置为上切,设当前速率为CurSpeed,则调整到的速率为Speed1=CurSpeed*FactLostUp,其中FactLostUp为根据丢包率设定的升速因子;4、当L小于G1但丢包率小于阈值的计数没有达到阈值G2的时候,切换指示被设置为不切换图5为RR包中抖动分析501的流程1、服务器对抖动参数进行平滑处理602,设当前RR包中的抖动为NewJitter,经过平滑后的历史抖动为JitterLast,则新的抖动为Jitter=b*JitterLast+(1-b)*NewLost,其中b为0-1间的一个平滑因子;2、将Jitter与JitterLast相除,将得到的值与设定的阈值G3比较,大于等于G3则服务器将抖动正常计数清0,此时需要下调速率。如果小于G3则将Jitter的值与设定的阈值G4比较,当它不小于G4的时候也需要下切速率。这两种情况下调速估计部分603将切换指示S2被设置为下切,设当前速率为CurSpeed,则调整到的速率为Speed2=CurSpeed*JitterDown,其中JitterDown为根据抖动设定的降速因子(经验值为JitterLast/NewJitter)
3、如果上面两个条件都不满足,则服务器将抖动正常计数加1,当该计数达到设置的阈值G5时服务器将抖动正常计数清0,调速估计部分603将切换指示被设置为上切,设当前速率为CurSpeed,则调整到的速率为Speed2=CurSpeed*JitterUp,其中JitterUp为根据抖动设定的升速因子4、当抖动正常计数没有达到阈值G5的时候,切换指示被设置为不切换图6为RR包往返时延分析502的流程1、服务器进行往返时延计算604;2、设上次往返时延的值为RttLast,将Rtt与RttLast相除,将得到的值与设定的阈值G6比较,大于等于G6则服务器将往返时延正常计数清0,此时需要下调速率,如果小于G6但Rtt大于历史最小Rtt值时将Rtt的值与历史最小Rtt的值相减,把差值与设定的阈值G7比较,当它不小于G7的时候也需要下切速率。这两种情况下调速估计部分605将切换指示S3被设置为下切,设当前速率为CurSpeed,可用网络带宽为CurBandWidth,则调整到的速率取(CurSpeed-1)和CurBandWidth中较小的一个。
3、如果上面两个条件都不满足,则服务器将往返时延正常计数加1,当该计数达到设置的阈值G8时服务器将往返时延正常计数清0,调速估计部分605将切换指示S3被设置为上切,设当前速率为CurSpeed,则调整到的速率为Speed3=CurSpeed*RttUp,其中RttUp为根据往返时延设定的升速因子4、当抖动正常计数没有达到阈值G8的时候,切换指示被设置为不切换可用网络带宽计算根据公式(1),最后的可用带宽BandWidth=d*BandWidth+(1-d)*CurBandWidth,其中d为0-1间的一个平滑因子。
图7为根据NADU包分析401的流程1、服务器进行客户端缓冲区可播放时间计算606;2、服务器分析客户端当前缓冲区的大小CurBuffer;3、将CurBuffer与设定的缓冲区上溢阈值C1比较,如果CurBuffer大于等于C1则此时需要下切速率,调速估计部分607将切换指示S4被设置为下切,设当前速率为CurSpeed,则调整到的速率为Speed4=CurSpeed*BufferOverflow,其中BufferOverflow为缓冲区上溢时的降速因子4、如果CurBuffer小于C1,将CurBuffer与设定的缓冲区下溢阈值C2(比较,如果CurBuffer小于等于C2且服务器没有限流则此时需要下切速率,调速估计部分607将切换指示S4被设置为下切,设当前速率为CurSpeed,则调整到的速率为Speed4=CurSpeed*BufferUnderflow,其中BufferUnderflow为缓冲区下溢时的降速因子5、其它情况下切换指示被设置为无指示图8为发送速率综合决策402的流程1、客户端根据前面流程中的得到的几个切换指示综合分析505,只要其中有一个切换指示为下切则最终的切换指示为下切;当S1、S2、S3都是上切时服务器判断是否收到了NADU包,如果没有收到则最终的切换指示为上切,如果收到了NADU包,则只有可播放时间大于等于目标保护时间的时候最终的切换指示才能被置为上切。其它情况下最终的速率切换指示均为不切换2、最终切换指示为下切时,如果缓冲区溢出则最终的发送速率取按溢出方式估算的发送速率Speed4和可用带宽BandWidth间的最小值,3、最终切换指示为下切时,如果缓冲区没有溢出。则需要先得到一个估算速率。如果根据丢包率、抖动、往返时延分析得到的切换指示S1、S2、S3只有一个为下切,则最终的发送速率取根据对应的指标分析得到的估算速率与可用带宽BandWidth间的最小值;如果它们不止有一个为下切,按照上面的优先级取对应指标的估算速率和可用带宽BandWidth间的最小值为最终的发送速率4、最终切换指示为上切时,根据可用带宽BandWidth来设置最终的切换速率。
5、将所取值最后圆整为该媒体流的预设速率序列中的最近值作为实际发送到网络去的媒体流速率。通常,预设速率序列是根据网络运营商的实际运行经验并结合技术现状人为确定的。
权利要求
1.一种流媒体发送速率控制方法,其特征在于①服务器端收集客户端上报的RTCP RR报文以及RTCP NADU APP包,得到丢包率、抖动、往返时延、空闲缓冲区大小,将这些参数或者参数的变化与设定的阀值比较得到4个待定速率切换方向,当客户端不发送NADU包的时候仅根据RR包的分析控制速率切换方向;②将这些参数或者参数的变化按其调整因子乘以当前速率得到多个待定发送速率值,这些值成为待定发送速率的一部分;服务器端通过丢包率、往返时延、通路MTU估算可用的网络带宽,所用公式为BandWidth=A*MTU/(RTT*f(z,k)),其中A为常量,最大传送单元MTU为当前通路的MTU值,RTT为往返时延,f(z,k)为以当前丢包率为变量的k次函数;再用估算网络带宽按以下方法得到待定发送速率值的另一部分如果估算网络带宽小于当前速率,则取估算带宽为待定发送速率值;如果估算的网络带宽大于当前速率,则取当前速率减1为待定发送速率值;③最终的速率切换方向按下列方法确定根据丢包率、抖动、往返延时、空闲空间4参数与其阀值比较得出的切换指示分别为S1、S2、S3、S4,只要其中有一个为下切则最终的切换指示为下切;当S1、S2、S3都是上切时服务器判断是否收到了NADU包,如果没有收到则最终的切换指示为上切,如果收到了NADU包,则只有可播放时间大于等于目标保护时间的时候最终的切换指示才能被置为上切,其它情况下最终的速率切换指示均为不切换;最终的发送速率确定方式为当需要下切速率的时候,为了保持按阀值控制的预测特性,取待定发送速率和当前可用带宽两者中的最小值;当需要上切速率的时候,为了避免不当的切换,取当前可用带宽;将所取值最后圆整为该媒体流的预设速率序列中的最近值作为实际发送到网络去的媒体流速率。
2.如权利要求1所述的控制方法,其特征在于用NADU包控制客户端缓冲区边界避免溢出,使用RR包控制客户端缓冲区水位处于边界内部时的调整,尽量快速对带宽变化进行响应。
全文摘要
本发明是一种流媒体发送速率控制方法,属于移动网多媒体通信领域,涉及基于实时流协议和实时流控制协议的流媒体服务器发送速率控制技术,包括通过设置阈值分析RTCP RR包以及RTCP NADU包中的参数来决定速率切换方向并估算待定的服务器发送速率;通过RTCP RR包中的参数计算当前可用的网络带宽;决策器根据上面多个切换方向,估算的待定发送速率和计算的当前可用带宽进行决策分析,得到最终的发送速率和切换方向。本方法具有抗振荡性、带宽预测性、能快速响应网络状况变化、有效控制缓冲区上溢或者下溢的优点。
文档编号H04L12/56GK1848810SQ200610019060
公开日2006年10月18日 申请日期2006年5月15日 优先权日2006年5月15日
发明者吴桑, 许 鹏, 李卫兵 申请人:武汉虹旭信息技术有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1