专利名称:一种在流媒体系统中控制数据包发送速率的方法
技术领域:
本发明涉及一种在流媒体系统中控制数据包发送速率的方法,属于通信领域。特别涉及流媒体技术领域。
背景技术:
流媒体是指一种基于流式传输技术来传输的媒体,流式媒体在播放前并不需要下载整个文件,其数据流随时传送随时播放。利用流媒体技术,可以向用户提供数字广播组播电视、VOD点播、视频录像等诸多宽带多媒体业务。流媒体系统采用内容分发网络架构,将流媒体服务器部署到网络的相应节点。流媒体服务器利用流媒体协议将实时的媒体数据分发到流媒体终端,或将非实时的内容利用传统的文件传输协议分发到流媒体终端,由流媒体终端设备实时呈现给用户。
在流媒体系统中使用的流媒体服务器担负着将预先编码压缩或实时编码压缩的媒体以流的方式推送到网络中去的任务,对其有很高的性能和可靠性要求。在实际的应用过程中,由于媒体源端(实时编码压缩的设备)发送的数据包速率不稳定,传输网络延迟、流媒体服务器设备处理能力不稳定等因素,会造成流媒体设备发送出的数据包速率不稳定的现象,从而带来数据包到达流媒体终端的时间间隔不同于媒体源端发出数据包的时间间隔的问题。如果流媒体终端直接将接收到的具有这种延迟抖动的数据包进行视音频解码,将会出现声音的抖动或者是视频上的花屏,直接影响用户体验。
目前常规解决流媒体服务器发送数据包速率抖动的方法是通过将从媒体源端收到的数据包进行缓冲。如图1所示,流媒体服务器收到源端流数据包之后,将数据包存储在缓冲器中,而缓冲器以恒定的时间间隔读出各数据包,以便将不同时间到达的数据包重建成连续的数据流,并以此恒定的速率将数据包发送给机顶盒。该发包速率为流媒体服务器从源端接收到数据包的平均速率,平均速率与流媒体服务器收包总数成正比,与收包时间成反比。
如果源端在发送数据包过程中出现长时间的停止发送现象,在媒体源端恢复发送数据包之后,则该平均发送速率不准确,流媒体服务器会通过缓冲器中包的数量来对发送速率进行调整,但是在这个过程中,由于发送速率的不稳定,则恢复到发送数据包的正常速率所需的时间比较长,势必会出现上述提到的延迟抖动问题。
发明内容
本发明所要解决的技术问题是为了克服现有技术中在媒体源端出现长时间停止发送数据包,当恢复发送数据包之后,流媒体服务器发送数据包速率恢复到正常速率所需的时间比较长的缺点,并解决现有技术中存在的延迟抖动问题。
为了达到本发明所提到的目的,本发明提供了一种在流媒体系统中控制数据包发送速率方法,该方法采取的步骤如下S201、进入本次发包流程时,判断缓冲器中数据包数量是否小于不发包阈值,是的话,结束所述本次发包流程,否的话,进入步骤S202;S202、当本次发包时间大于发一个数据包的时间时,发送数据包,否则进入步骤S203;S203、判断总包数和总有效发包时间是否大于调整阈值,是的话,将所述总包数和所述总有效发包时间乘以调整系数并结束所述本次发包流程,否的话,结束所述本次发包流程。
所述S201的步骤具体包括发包开始;判断缓冲器中数据包数量是否小于不发包阈值,如果是,则结束所述本次发包流程;如果否,将所述本次发包时间加入总有效发包时间,并计算发包速率,然后进入步骤S202。
所述不发包阈值是一个系统设定的整数;以及,所述缓冲器是指流媒体服务器存储未发送至流媒体终端的数据包,即未发包,所开辟的系统内存区。
所述总有效发包时间是流媒体服务器发包的累计时间;所述发包速率与总有效发包时间成正比,与总包数成反比;所述总包数为未发包数与已发包数之和。
所述S202的步骤具体包括当所述本次发包时间大于发一个数据包的时间时,发送所述数据包到流媒体终端,并对所述未发包数减一,所述已发包数加一,从所述本次发包时间中减去所述发一个数据包的时间;直到所述本次发包时间小于所述发一个数据包的时间时,进入步骤S203。
所述发一个数据包的时间为发包速率的倒数。
所述步骤S203中,所述调整阈值与所述发包速率成正比。
所述步骤S203中,所述总包数和所述总有效发包时间的调整阈值非必要相同。
所述步骤S203中,所述调整系数相同且必须小于1。
本发明,由于没有把无效的发包时间,即流媒体没有收到媒体源端发送的数据包的时间统计到总发包时间内,因此与现有技术相比,计算出的媒体平均发送速率更加精确。
本发明,由于将总包数和总有效发包时间随着时间的变化,进行了动态的调整,从而增加了最近时间流媒体服务器收数据包和发数据包数目的权重,达到了媒体源端发送流数据包出现异常情况下,流媒体服务器可以快速恢复到正常发送数据包速率的目的。
综合以上两点,采用本发明,可以有效改善流媒体服务器发送数据包的延迟抖动问题,提高了流媒体系统的性能和用户体验。
图1是目前常规解决流媒体服务器发送数据包速率抖动的方法示意图;图2是本发明控制媒体发送速率的流程图;图3是本发明的一个具体实施例流程图。
具体实施例方式
下面结合附图和实施例对本发明进行进一步说明。
图2是本发明控制媒体发送速率的流程图。在本发明中,通过以下步骤对媒体的发送速率进行控制S201、进入本次发包流程时,判断缓冲器中数据包数量是否小于不发包阈值,是的话,结束所述本次发包流程,否的话,进入步骤S202;S202、当本次发包时间大于发一个数据包的时间时,发送数据包,否则进入步骤S203;S203、判断总包数和总有效发包时间是否大于调整阈值,是的话,将所述总包数和所述总有效发包时间乘以调整系数并结束所述本次发包流程,否的话,结束所述本次发包流程。
所述S201的步骤具体包括发包开始;判断缓冲器中数据包数量是否小于不发包阈值,如果是,则结束所述本次发包流程;如果否,将所述本次发包时间加入总有效发包时间,并计算发包速率,然后进入步骤S202。
所述不发包阈值是一个系统设定的整数;以及,所述缓冲器是指流媒体服务器存储未发送至流媒体终端的数据包,即未发包,所开辟的系统内存区。
所述总有效发包时间是流媒体服务器发包的累计时间;所述发包速率与总有效发包时间成正比,与总包数成反比;所述总包数为未发包数与已发包数之和。
所述S202的步骤具体包括当所述本次发包时间大于发一个数据包的时间时,发送所述数据包到流媒体终端,并对所述未发包数减一,所述已发包数加一,从所述本次发包时间中减去所述发一个数据包的时间;直到所述本次发包时间小于所述发一个数据包的时间时,进入步骤S203。
所述发一个数据包的时间为发包速率的倒数。
所述步骤S203中,所述调整阈值与所述发包速率成正比。
所述步骤S203中,所述总包数和所述总有效发包时间的调整阈值非必要相同。
所述步骤S203中,所述调整系数相同且必须小于1。
图3是本发明的一个具体实施例流程图,其步骤具体如下S301,流媒体服务器接收到媒体源端发送来的数据包后,(流媒体服务器接收数据包,以及对数据包的相应的处理过程,由于与本发明要保护的内容无关,所以不在这个进行详细说明),将数据包放入缓冲器。并等待系统的调度,进行发送缓冲器中数据包到流媒体客户端的操作。系统从等待状态到发包状态,进入步骤S302。其中流媒体服务器接受数据包并将后者放入缓冲器的操作与等待系统调度的过程,是同时进行的。并且,进入发包状态后,流媒体服务器不能将数据包放入缓冲器,因为要对缓冲器中的数据包进行操作,这样可以防止缓冲器中的数据包数量动态变化而令数据不准确以及,在进入发包状态时,系统需提供本次发包时间,该时间规定了发包状态的持续时间。
S302,流媒体服务器将缓冲器中的包数与系统设定的不发包阈值进行比较。其中如果前者小于后者,则说明缓冲器中的数据包的数量(未发包数)没有达到发送的要求,以此可以判断媒体源端最近没有数据包发送至流媒体服务器,所以停止发送,转至步骤S308。
如果前者大于后者,则说明缓冲器中的数据包的数量(未发包数)已经达到发送的要求,进入步骤S303。以及,在本实施例中,不发包阈值设置为1。
S303,流媒体服务器将步骤S301中的本次发包时间加入到有效发包时间中,并计算发包速率。其中有效发包时间为流媒体服务器发送数据包的总时间。并且,
总包数为未发包数与发包数之和。以及,在本实施例中,发包速率为单个包的发包时间,即用总有效发包时间除以总包数。
S304,流媒体服务器将步骤S303中的发包速率与步骤S301中的本次发包时间进行比较。其中如果前者小于后者,说明本次发包时间足以发送一个数据包,进入步骤S305。
如果前者大于后者,说明本次发包时间不足以发送一个数据包,因此,转至步骤S306。其中,发一个数据包时间为发包速率的倒数。
S305,发送数据包到流媒体终端。(由于发送数据包到流媒体终端的处理过程与本发明要保护的内容无关,所以不在这个进行详细说明)其中将已发包数进行加一操作。并且,将未发包数进行减一操作。以及,将步骤S301中的本次发包时间减掉步骤S303中的发包速率。
以上操作结束后,转至步骤S304。
S306,流媒体服务器将总包数和总有效发包时间和调整阈值进行比较。
本实施例中,总包数和总有效发包时间的调整阈值为二者是否能够同时被2的16次幂整除;如果不满足上述条件,则转至步骤S308。
如果满足上述条件,则进入步骤S307。
S307,流媒体服务器将总包数和总有效发包时间乘以调整系数。
调整系数在本实施例中为2的负16次幂。
改变了总包数和总有效发包时间之后,进入步骤S308。
S308,本次发包结束。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
权利要求
1.一种在流媒体系统中控制数据包发送速率的方法,其特征在于,包括S201、进入本次发包流程时,判断缓冲器中数据包数量是否小于不发包阈值,是的话,结束所述本次发包流程,否的话,进入步骤S202;S202、当本次发包时间大于发一个数据包的时间时,发送数据包,否则进入步骤S203;S203、判断总包数和总有效发包时间是否大于调整阈值,是的话,将所述总包数和所述总有效发包时间乘以调整系数并结束所述本次发包流程,否的话,结束所述本次发包流程。
2.按照权利要求1所述的一种在流媒体系统中控制数据包发送速率的方法,其特征在于所述S201的步骤具体包括发包开始;判断缓冲器中数据包数量是否小于不发包阈值,如果是,则结束所述本次发包流程;如果否,将所述本次发包时间加入总有效发包时间,并计算发包速率,然后进入步骤S202。
3.按照权利要求1或2所述的一种在流媒体系统中控制数据包发送速率的方法,其特征在于所述不发包阈值是一个系统设定的整数;以及,所述缓冲器是指流媒体服务器存储未发送至流媒体终端的数据包,即未发包,所开辟的系统内存区。
4.按照权利要求1或2所述的一种在流媒体系统中控制数据包发送速率的方法,其特征在于所述总有效发包时间是流媒体服务器发包的累计时间,所述发包速率与总有效发包时间成正比,与总包数成反比。
5.按照权利要求4所述的一种在流媒体系统中控制数据包发送速率的方法,其特征在于所述总包数为未发包数与已发包数之和。
6.按照权利要求1所述的一种在流媒体系统中控制数据包发送速率的方法,其特征在于所述S202的步骤具体包括当所述本次发包时间大于发一个数据包的时间时,发送所述数据包到流媒体终端,并对所述未发包数减一,所述已发包数加一,从所述本次发包时间中减去所述发一个数据包的时间;直到所述本次发包时间小于所述发一个数据包的时间时,进入步骤S203。
7.按照权利要求1或6所述的一种在流媒体系统中控制数据包发送速率的方法,其特征在于所述发一个数据包的时间为发包速率的倒数。
8.按照权利要求1所述的一种在流媒体系统中控制数据包发送速率的方法,其特征在于所述步骤S203中,所述调整阈值与所述发包速率成正比。
9.按照权利要求1所述的一种在流媒体系统中控制数据包发送速率的方法,其特征在于所述步骤S203中,所述总包数和所述总有效发包时间的调整阈值非必要相同。
10.按照权利要求1所述的一种在流媒体系统中控制数据包发送速率的方法,其特征在于所述步骤S203中,所述调整系数相同且必须小于1。
全文摘要
本发明公开了一种在流媒体系统中控制数据包发送速率的方法,通过增加,对于缓冲器中数据包数量是否小于不发包阈值的判断,对于本次发包时间是否大于发一个数据包时间的判断,以及对于总包数和总有效发包时间是否大于调整阈值的判断,并进行相应的操作来控制媒体数据包的发送速率。
文档编号H04L12/16GK101090369SQ200710138558
公开日2007年12月19日 申请日期2007年8月1日 优先权日2007年8月1日
发明者桑卓, 陈重奋, 刘继年 申请人:中兴通讯股份有限公司