一种流媒体接收端缓冲区内数据包的动态调整方法

文档序号:7951492阅读:147来源:国知局
专利名称:一种流媒体接收端缓冲区内数据包的动态调整方法
技术领域
本发明涉及网络通信,尤其涉及网络中的流媒体接收端缓冲区内数据包的一种动态调整方法。
背景技术
随着技术的发展,流媒体(音频和视频)在终端上的应用越来越广泛。
当前的流媒体应用主要有两种方式流媒体服务和实时交互式应用。实时性和媒体质量对应用的影响很大。如果实时性比较差,就会出现双方同时说话、同时静默、应答延迟等情况,严重的导致客户无法使用;而媒体质量较差时,如出现咔咔声,马赛克等,影响客户满意度。
对于流媒体服务而言,其信息基本是单向的(服务器到客户端),交互性信息很少,这时对媒体质量的要求较高,而对实时性的要求较低。所以应采取的策略为在开始播放前缓存大量的数据,减少网络丢包,保证播放的平滑性。
而在实时交互式的媒体应用中,实时性的要求则占主体地位,如果双方或多方能有较好的实时性,即使媒体质量较差,也是可以使用的;否则,双方的交流就会因时延问题而发生困难。
现有技术中,流媒体数据的传送已由电路域转移到分组域。而分组域传输性能具有波动性(包抖动),由于流媒体传输固有的特点(数据量大,实时性或连续性要求高),一般在接收端进行缓冲处理,以消除或减轻数据包的延时、抖动、乱序、丢失,从而提高媒体播放的质量。
数据包缓冲技术就是从网络上接收的数据包在播放之前,在缓冲区内进行一定的缓冲处理(如排序,组包等),这样,播放的数据包就按照生成的顺序进行读取,从而消除数据包的传输抖动和乱序。
现有技术中,数据包缓冲技术分为如下两种情况。
现有技术一静态缓冲技术。
静态缓冲技术,就是缓冲区大小固定不变的缓冲技术。其原理如下程序在初始化时,申请一块大小恒定的内存区作为缓冲区。由于兼顾到网络状况很差的情况,该缓冲区一般需设置得比较大。
在程序运行过程中,接收到数据包时,首先判断缓冲区是否已满。如果缓冲区已满,则丢弃数据包;否则,把数据包插入到缓冲区中进行排序。
数据包按顺序进行读取,遇到序列号不连续的情况,则返回无数据。
现有静态缓冲技术的缺点如下1、延时具有累加效应。
一旦网络的延时变大,就会一直维持在最大值,不能根据网络情况自动变小。在实时性交互时,这种延时累加的结果,有可能导致双方或多方的动态交流无法进行。
2、占用资源多。
由于要在各种网络情况下尽量使缓冲区不出现上溢,减少被动丢包,一般按网络可能出现的最差情况设置缓冲区大小,这样,缓冲区需要设置得比较大,会导致大量的资源占用。
现有技术二动态缓冲区调整技术。
针对终端上资源紧张的情况,为了尽量减少资源的浪费,在静态缓冲区技术基础上发展了动态缓冲区调整技术。缓冲区的动态调整是指缓冲区并不是大小不变的,它可以根据网络数据包的传输状况,如抖动、丢包率、延时等,对缓冲区进行实时调整,以提高性能,减少资源占用。
该技术主要根据网络情况动态地调整缓冲区的大小,充分利用资源。其原理如下程序在初始化时,申请一块缓冲区,并设置缓冲区的最大值。
在程序运行过程中,接收到数据包时,首先判断缓冲区是否已满且大小是否已达到允许的最大值。如果缓冲区已满且达到最大值,则丢弃该数据包;如果缓冲区已满但未达到最大值,则按一定步长增大缓冲区,然后把数据包插入缓冲区中排序;如果缓冲区未满,则直接把数据包插入缓冲区并排序。
数据包按顺序进行读取,遇到序列号不连续的情况,则返回无数据。
现有动态缓冲区调整技术也具有延时累加的缺点。一旦网络的延时变大,就会一直维持在最大值,不能根据网络情况自动变小。在实时性交互时,这种延时累加的结果,有可能导致双方或多方的动态交流无法进行。

发明内容
本发明提供一种流媒体接收端缓冲区内数据包的动态调整方法,用以解决现有技术中存在的不能动态调整延时大小以及存储资源占用较多的问题。
本发明方法包括A、周期获取网络传输状况,确定出流媒体接收端缓冲区内数据包个数的最佳值;B、比较所述缓冲区内当前实际存储的数据包个数和所述最佳值;当缓冲区内当前实际存储的数据包个数小于所述最佳值时,进行补包处理;当缓冲区内当前实际存储的数据包个数大于所述最佳值时,进行丢包处理。
根据本发明的上述方法,根据所述最佳值确定出一个数据包个数的波动区间;当缓冲区内当前实际存储的数据包个数小于所述波动区间的下限值时,进行补包处理;当缓冲区内当前实际存储的数据包个数大于所述波动区间的上限值时,进行丢包处理。
根据本发明的上述方法,所述步骤A包括周期获取网络的传输时延和传输丢包率,并根据流媒体实时性优先或质量优先原则,确定出所述最佳值。
当选择流媒体实时性优先时,确定出所述最佳值的具体方法包括设定最佳值的初始值、最大延时门限值和最大容许丢包率门限值;当所述周期到达时,获取当前网络的传输时延和传输丢包率;如果当前传输时延大于所述最大延时门限值,则所述最佳值为上一个周期确定出的最佳值减去一个变化量;如果当前传输时延小于等于所述最大延时门限值,且当前传输丢包率小于所述最大容许丢包率门限值的一个下限值,则所述最佳值为上一个周期确定出的最佳值减去一个变化量;如果当前传输时延小于所述最大延时门限值的一个下限值,且当前传输丢包率大于所述最大容许丢包率门限值,则所述最佳值为上一个周期确定出的最佳值加上一个变化量;在其它情况下,所述最佳值保持上一个周期确定出的最佳值不变。
当选择流媒体质量优先时,确定出所述最佳值的具体方法包括设定最佳值的初始值、最大延时门限值和最大容许丢包率门限值;当所述周期到达时,获取当前网络的传输时延和传输丢包率;如果当前传输丢包率大于所述最大容许丢包率门限值,则所述最佳值为上一个周期确定出的最佳值加上一个变化量;如果当前传输丢包率小于等于所述最大容许丢包率门限值,且当前传输时延小于所述最大延时门限值的一个下限值,则所述最佳值为上一个周期确定出的最佳值加上一个变化量;如果当前传输丢包率小于所述最大容许丢包率的一个下限值,且当前传输时延大于所述最大延时波动门限值,则所述最佳值为上一个周期确定出的最佳值减去一个变化量;在其它情况下,所述最佳值保持上一个周期确定出的最佳值不变。
根据本发明的上述方法,所述变化量为1。
根据本发明的上述方法,根据不同的媒体质量要求等级,设置多组对应的所述最大延时门限值和所述最大容许丢包率门限值;当采用质量要求较高的一组门限值确定所述最佳值时,如果在一设定时段内网络的实际传输时延和传输丢包率不能同时满足小于所述最大延时门限值和最大容许丢包率门限值,则采用质量要求较低的一组门限值来确定所述最佳值;当采用质量要求较低的一组门限值确定所述最佳值时,如果在一设定时段内网络的实际传输时延和传输丢包率都同时满足小于所述最大延时门限值和最大容许丢包率门限值,则采用质量要求较高一组门限值来确定所述最佳值。
根据本发明的上述方法,步骤B中所述进行补包处理,具体包括将设置在所述流媒体接收端的数据包调整标志设置为补包标志;在读取所述缓冲区内的数据包时,判断所述数据包调整标志是否存在,如果所述数据包调整标志为补包标志,则该次数据读取返回空的数据包或复制当前数据包后读取该复制的数据包,并清除所述数据包调整标志。
根据本发明的上述方法,所述进行丢包处理,具体包括将设置在所述流媒体接收端的数据包调整标志设置为立即丢包标志;在读取所述缓冲区内的数据包时,判断所述数据包调整标志是否存在,如果所述数据包调整标志为立即丢包标志,则丢弃当前数据包,直接读取下一个数据包,并清除所述数据包调整标志。
根据本发明的上述方法,所述进行丢包处理,还包括将设置在所述流媒体接收端的数据包调整标志设置为需要丢包标志;在读取所述缓冲区内的数据包时,判断所述数据包调整标志是否存在,如果所述数据包调整标志为需要丢包标志,则判断当前数据包是否存在,若当前数据包存在,则读取该数据包;若当前数据包不存在,则直接读取下一个数据包,并清除所述数据包调整标志。
根据本发明的上述方法,当判断出需要进行丢包处理时,如果所述数据包调整标志为需要丢包标志,则将所述数据包调整标志设置为立即丢包标志;
在读取所述缓冲区内的数据包时,判断所述数据包调整标志是否存在,如果所述数据包调整标志为立即丢包标志,则丢弃当前数据包,并清除所述数据包调整标志。
本发明有益效果如下(1)本发明周期获取网络传输状况,动态确定出流媒体接收端缓冲区内数据包个数的最佳值;当缓冲区内当前实际存储的数据包个数小于所述最佳值时,进行补包处理;当缓冲区内当前实际存储的数据包个数大于所述最佳值时,进行丢包处理。这样,采用本发明方法能动态调整缓冲区延时大小,避免了现有技术中延时的累加效应。
(2)本发明可以根据流媒体实时性优先原则或传输质量优先原则来分别动态调整不同网络传输状态下的缓冲区数据包个数的最佳值,以充分满足用户的不同需求。为了尽可能地保持媒体质量,在每一个周期内仅补偿或丢弃一个数据包。
(3)采用本发明方法,还可以根据对媒体传输质量的要求设置多组门限值,当网络传输情况较好时,自动采用传输质量较高的满足延时门限和丢包率的门限值来动态调整缓冲区内数据包的最佳值,使媒体的传输质量维持在较好水平。
(4)采用本发明方法进行丢包处理时,尽量丢弃序列号不连续的数据包(即由于网络原故没有传送到接收端的数据包),这样,由于丢到的数据包接收端本来就没有收到,不会因丢包处理而降低媒体质量。
(5)由于本发明采用动态调整缓冲区中数据包个数的最佳值来保证流媒体传输的实时性和传输质量,因此,不必预先设置很大的缓存区来兼顾网络状况很差时的传输质量。


图1为本发明流媒体实时性优先情况下的缓冲区数据包最佳值调整策略;
图2为本发明流媒体传输质量优先情况下的缓冲区数据包最佳值调整策略;图3为根据缓冲区数据包最佳值确定出合理波动区间示意图。
具体实施例方式
本发明提供的流媒体接收端缓冲区内数据包的动态调整方法,基本实现原理为按照预先设定的调整周期,获取网络当前的传输状况,根据网络的当前传输状况确定流媒体接收端缓冲区内数据包个数的最佳值;比较当前缓冲区内实际存储的数据包个数和确定出的最佳值;当缓冲区内实际存储的数据包个数小于最佳值时,进行补包处理;当缓冲区内当前实际存储的数据包个数大于确定出的最佳值时,进行丢包处理。
上述调整周期,例如设定为10个媒体数据包。即流媒体接收端每读取完10个流媒体数据包,就获取网络当前的传输状况,如获取当前网络的丢包率、抖动和延时等,并结合流媒体是实时性优先还是媒体质量优先原则,确定出缓冲区内数据的最佳值。
例如,在实时性优先的情况下,如果用户允许的延时为200ms,每个数据包包含20ms的媒体数据,则一般情况下的最佳值为10(个数据包)。考虑抖动达到一定程度,可以略微把最佳值扩大,如抖动达到50ms时,最佳值变为11。
同样在媒体质量优先的情况下,就以丢包率为主要参考。起始按最大延时缓冲媒体数据,在运行过程中,可以在丢包率满足要求(如99%)的情况下,再缩短媒体缓冲时间。
在实现本发明方法时,流媒体接收端对接收数据包的处理、执行排序和插入操作等与现有技术相同。在流媒体接收端程序初始化时,配置进行缓冲区调整的必要参数,包括流媒体的采样周期、可以容忍的最大延时DelayMax、容许的丢包率、优先顺序(实时性优先或媒体质量优先)、缓冲区的最大值等。上述最大延时DelayMax是指数据包在缓冲区内的延时(也即缓冲区导致的延时),而不是数据包从发送到播放的延时。
对于缓冲区数据包的调整来说,延时和丢包率是相互矛盾的因素。为了减少延时,需要减小缓冲区内数据包的个数,使数据包在缓冲区内缓冲的时间变短,这将导致一些网络延时较大的数据包丢失,从而最终导致丢包率的上升;而为了降低丢包率,需要增加缓冲区内数据包的个数,对应的延时必然会增加。由于延时影响媒体的实时性,而丢包率影响媒体质量,因此,本发明在调整缓冲区内数据包的最佳值时,在实时性优先的情况下,由于延时对多媒体应用的影响最大,这样,媒体质量则可以相对较低;在媒体质量优先的情况下,媒体质量对多媒体应用的影响最大,而此时实时性的要求并不是很高,所以应尽量降低媒体的丢包率。
下面分别对流媒体实时性优先和流媒体质量优先的两种情况下,缓冲区内数据包个数最佳值的动态调整方法进行详细描述。
一、流媒体实时性优先时的缓冲区内数据包个数最佳值确定。
首先,设定最佳值的初始值、最大延时门限值和最大容许丢包率门限值。
当调整周期到达时,获取传输延时和传输丢包率。
缓冲区传输延时的获取方法为设缓冲区最后一个数据包的时标为TSl,缓冲区内第一个数据包的时标为TSf,媒体的采样频率为H,则当前缓冲区导致的延时为CurrentDelay=(TSl-TSf)/H秒。
由于网络具有波动性,任何一点的延时都不能代表一个特定时间段内的延时。因此,一段时间内的延时可以通过上述当前延时进行平滑得到,如下式计算Delay=Delay+(Delay-CurrentDelay)/16上述公式是对缓冲区传输延时的一种平滑处理,也就是在短期内延时剧烈波动时,保持得到结果的平稳性。由于从服务器到接收端的延时的计算需要一个统一的记时基准,而现在大部分的终端不支持网络时间调整,无法做到统一记时基准,因此,本发明中不考虑从服务器到接收端的延时。
传输丢包率的获取方法为在上一个调整周期内,记录读取的第一个数据包的序号,读取的最后一个数据包的序号,二者之差就是该周期内应该读取到的数据包个数。用应该读取到的数据包个数减去在该时间段内实际读取成功的数据包个数得到该时间段内的被丢弃数据包个数,用上一个调整周期内被丢弃的数据包个数与应该读取到的数据包个数的比值作为本周期的当前丢包率。
获取了当前网络的传输延时和丢包率后,根据图1所示调整策略,调整缓冲区中存储的数据包个数的最佳值;其中Delay表示当前的延时量,DelayMax表示设定的最大延迟门限值(可以根据具体情况或经验值确定)。具体调整策略如下(1)当Delay>DelayMax时,表示在最近一个时间段内缓冲区内的数据包个数太多,由此导致的延时超过了用户可以容忍的范围。在这种情况下,由于实时性相对于媒体质量来说更为重要,故不考虑丢包率的大小,减少缓冲区内期望的数据包个数,增强媒体的实时性。在图1中用“-”号表示,即将上一个周期确定出的最佳值减去一个变化量,作为本周期调整后的最佳值。为了尽可能保持媒体质量,每一个周期内只减少一个数据包。例如假设上一个周期确定出的最佳值为10个数据包,则调整后的最佳值为9个数据包(如果本周期为第一个调整周期,由于不存在上一个周期确定出的最佳值,因此,对于第一个调整周期,调整前的基准值为设定的最佳值的初始值)。
(2)当Delay<=DelayMax且Delay>=DelayMax*90%(此处90%仅为下限值的一个举例)时,如果当前的丢包率小于最大容许的丢包率门限值的一个下限值时,表明可以通过稍微降低媒体的播放质量来增强媒体的实时性,故应该减少缓冲区内期望的数据包个数。在图1中用“-”号表示,即将上一个周期确定出的最佳值减去一个变化量,作为本周期调整后的最佳值。为了尽可能保持媒体质量,每一个周期内只减少一个数据包。例如假设上一个周期确定出的最佳值为10个数据包,则调整后的最佳值为9个数据包。
(3)当Delay<=DelayMax且Delay>=DelayMa*90%时,如果当前的丢包率大于最大容许的丢包率门限值的一个下限值时,表明当前的丢包率在正常的波动范围或过大,由于媒体的实时性能满足最低要求,故保持缓冲区内期望的数据包个数不变。在图1中用“不”表示,即假设上一个周期确定出的最佳值为10个数据包,则在本周期不进行最佳值的调整,仍保持最佳值为10个数据包。
(4)当Delay<DelayMax*90%时,表明在最近一个时间段内的延时比较小,有通过降低实时性提高媒体质量的空间。如果当前的丢包率小于最大容许丢包率门限值的下限值时,表明媒体的实时性和媒体质量都能达到用户的要求,这时,可以通过降低媒体的播放质量来进一步增强媒体的实时性,故应该减少缓冲区内期望的数据包个数。在图1中用“-”号表示,即将上一个周期确定出的最佳值减去一个变化量,作为本周期调整后的最佳值。为了尽可能保持媒体质量,每一个周期内只减少一个数据包。例如假设上一个周期确定出的最佳值为10个数据包,则调整后的最佳值为9个数据包。
(5)当Delay<DelayMax*90%时,且当前的丢包率在容许的丢包率波动区间内(即当前丢包率大于最大容许丢包率门限值的下限值且小于设定的最大容许丢包率门限值),则当前的丢包率刚好满足媒体播放质量的要求,不能通过降低质量来增强实时性,故保持缓冲区内期望的数据包个数不变。在图1中用“不”表示,即假设上一个周期确定出的最佳值为10个数据包,则在本周期不进行最佳值的调整,仍保持最佳值为10个数据包。
(6)当Delay<DelayMax*90%时,且当前的丢包率大于设定的最大容许丢包率门限值时,当前的丢包率太大,媒体质量低于期望值,由于媒体的实时性比较好,可以通过降低媒体的实时性来提高媒体的质量,故应增加缓冲区内期望的数据包个数。在图1中用“+”号表示,即将上一个周期确定出的最佳值加上一个变化量,作为本周期调整后的最佳值。为了尽可能保持媒体质量,每一个周期内只增加一个数据包。例如假设上一个周期确定出的最佳值为10个数据包,则调整后的最佳值为11个数据包。
二、流媒体质量优先时的缓冲区内数据包个数最佳值确定。
首先,设定最佳值的初始值、最大延时门限值和最大容许丢包率门限值。
当调整周期到达时,获取传输延时和传输丢包率。
缓冲区传输延时的具体计算方法和传输丢包率的具体计算方法如上所述,不重复。
获取了当前的传输延时和丢包率后,根据图2所示调整策略,调整缓冲区中存储的数据包个数的最佳值;其中Lost表示当前的丢包率,LostMax表示设定的最大容许丢包率门限值(可以根据具体情况或经验值确定)。具体调整策略如下(1)当Lost>LostMax时,说明在最近一个时间段内缓冲区内的数据包个数太少,缓冲的时间太短,致使丢包率大于用户期望值。在这种情况下,由于媒体质量相对于实时性来说更为重要,故不考虑延时的大小,增加缓冲区内期望的数据包个数,提高媒体质量。在图2中用“+”号表示,即将上一个周期确定出的最佳值的基准值加上一个变化量,作为本周期调整后的最佳值。为了尽可能保持媒体质量,每一个周期内只增加一个数据包。例如假设上一个周期确定出的最佳值为10个数据包,则调整后的最佳值为11个数据包。
(2)当Lost<=LostMax且Lost>=LostMax*90%(此处90%仅为下限值的一个举例)时,表明在最近一个时间段内的媒体质量刚刚能满足用户的要求,如果当前的延时小于设定的最大延时门限值的一个下限值时,则可以通过增大延时来提高媒体的播放质量,故应该增加缓冲区内期望的数据包个数。在图2中用“+”号表示,即将上一个周期确定出的最佳值加上一个变化量,作为本周期调整后的最佳值。为了尽可能保持媒体质量,每一个周期内只增加一个数据包。例如假设上一个周期确定出的最佳值为10个数据包,则调整后的最佳值为11个数据包。
(3)当Lost<=LostMax且Lost>=LostMax*90%时,如果当前的延时大于设定的最大延时门限值的下限值时,表明当前的延时在正常的波动范围或过大,由于媒体质量能满足最低要求,故保持缓冲区内期望的数据包个数不变。在图2中用“不”表示,即假设上一个周期确定出的最佳值为10个数据包,则在本周期不进行最佳值的调整,仍保持最佳值为10个数据包。
(4)当Lost<LostMax*90%时,表明在最近一个时间段内的媒体质量比较好,有通过降低媒体质量来提高媒体实时性的空间。如果当前的延时小于最大延时门限值的下限值时,表明媒体质量和实时性都能达到用户的要求,这时,可以通过降低媒体的实时性来进一步提高媒体质量,故应该增加缓冲区内期望的数据包个数。在图2中用“+”号表示,即将上一个周期确定出的最佳值加上一个变化量,作为本周期调整后的最佳值。为了尽可能保持媒体质量,每一个周期内只增加一个数据包。例如假设上一个周期确定出的最佳值为10个数据包,则调整后的最佳值为11个数据包。
(5)当Lost<LostMax*90%时,如果当前的延时在最大延时波动区间内(即当前延时大于最大延迟门限值的下限值且小于设定的最大延迟门限值),说明当前的延时刚好满足媒体实时性的要求,不能通过降低实时性来提高媒体质量,故保持缓冲区内期望的数据包个数不变。在图2中用“不”表示,即假设上一个周期确定出的最佳值为10个数据包,则在本周期不进行最佳值的调整,仍保持最佳值为10个数据包。
(6)当Lost<LostMax*90%时,如果当前的延时大于设定的最大延迟门限值,则媒体实时性低于期望值,由于媒体的质量比较好,故可以通过降低媒体的质量来提高媒体的实时性,故应减少缓冲区内期望的数据包个数。在图2中用“-”号表示,即将上一个周期确定出的最佳值减去一个变化量,作为本周期调整后的最佳值。为了尽可能保持媒体质量,每一个周期内只减少一个数据包。例如假设上一个周期确定出的最佳值为10个数据包,则调整后的最佳值为9个数据包。
通过以上的调整策略获得了缓存区内数据包个数的最佳值后,可以得到缓冲区内数据包个数的合理波动区间,例如合理波动区间的下限值为该最佳值乘以80%,上限值为该最佳值乘以120%,由于存储的数据包个数为整数,因此,对得到的上限值和下限值进行取整。如图3所示,假设当前网络状态下,确定出的最佳值为5,则合理波动区间为4~6。合理波动区间是缓冲区内数据包个数的正常波动范围,如果当前缓冲区内存储的数据包个数在此区间内,不需要调整;否则需要调整最佳值。
确定了最佳值的合理波动区间后,根据缓冲区内当前实际存储的数据包个数与合理波动区间进行比较;如果缓冲区内实际数据包个数低于合理波动区间的下限值,则需要进行补包处理;如果缓冲区内实际数据包个数在合理波动区间之内,则不需要处理;如果缓冲区内实际数据包个数大于合理波动区间的上限值,则需要进行丢包处理。
具体的补包处理方法包括方法一在流媒体接收端设置一个数据包调整标志,当需要进行补包时,将数据包调整标志设置为“补包标志”;在读取缓冲区内的数据包时,首先判断数据包调整标志是否存在,如果数据包调整标志为“补包标志”,则该次数据读取返回空的数据包,并清除设置的数据包调整标志。这样,通过在读取数据包时返回一个空包的方式实现补包,使得缓冲区内数据包延迟增加,从而减少丢包率,提高媒体质量。
方法二在流媒体接收端设置一个数据包调整标志,当需要进行补包时,将数据包调整标志设置为“补包标志”;在读取缓冲区内的数据包时,首先判断数据包调整标志是否存在,如果数据包调整标志为“补包标志”,则复制当前数据包,并读取该复制的数据包,清除设置的数据包调整标志。这样,通过在读取数据包时重复读取同一个数据包实现补包,使得缓冲区内数据包延迟增加,从而减少丢包率,提高媒体质量。
具体的丢包处理方法包括
方法一将设置在流媒体接收端的数据包调整标志设置为“立即丢包标志”;在读取缓冲区内的数据包时,判断数据包调整标志是否存在,如果数据包调整标志为“立即丢包标志”,则丢弃当前数据包,直接读取下一个数据包,并清除数据包调整标志。采用该方法,可以立即丢弃当前数据包,接收端不对该数据包所包含的媒体信息进行播放。这样,通过稍微降低媒体的播放质量来减少读取的媒体数据,增强媒体的实时性。
方法二将设置在流媒体接收端的数据包调整标志设置为“需要丢包标志”;在读取缓冲区内的数据包时,判断数据包调整标志是否存在,如果数据包调整标志为“需要丢包标志”,则判断当前数据包是否存在(当前数据包,是指上次读取的数据包序列号加一的数据包,不是缓冲区内的第一个数据包,当出现网络丢包时,当前数据包为空),若当前数据包存在,则读取该数据包;若当前数据包不存在,则直接读取下一个数据包,并清除所述数据包调整标志。
采用该方法二进行丢包处理时,仅丢弃网络没有传送到接收端的数据包,不丢弃接收端已接收到的数据包,以充分保证媒体质量。
如果当前调整周期内,网络的传输状况非常好,没有传输过程中的丢包现象发生,则采用方法二进行丢包处理时,实际上不会丢弃任何一个数据包。在这种情况下,在下一个调整周期内,根据本发明的上述方法,如果仍然判断出需要进行丢包处理,则将数据包调整标志由“需要丢包标志”改为“立即丢包标志”,这样,本调整周期内,当读取数据包时,如果判断数据包调整标志为立即丢包标志,则立即丢弃当前数据包,并清除数据包调整标志。达到减少读取缓冲区内数据包个数,增强媒体实时性的目的。
以上在进行缓冲区数据包个数最佳值计算时,仅设置了一组最大延时门限值和最大容许丢包率门限值。在实际应用中,可以设置多组门限值,以分别对应多种质量情况。举例如下设媒体质量分为三等较好,一般,较差。对应的最大延时门限值和最大容许丢包率门限值分别为较好质量的最大延时门限值(DelayMaxgood)、较好质量的最大容许丢包率门限值(LostMaxgood);一般质量的最大延时门限值(DelayMaxnormal)、一般质量的最大容许丢包率门限值(LostMaxnormal);较差质量的最大延时门限值(DelayMaxbad)、较差质量的最大容许丢包率门限值(LostMaxbad)。
在进行最佳值调整时,每次使用一个质量等级的门限对。如果不能满足较好的质量,即延时和丢包率在一个设定的时段内不能同时满足小于DelayMaxgood和LostMaxgood时,自动使用质量一般的门限对DelayMaxnormal和LostMaxnormal进行最佳值调整。
如果延时和丢包率在一个设定的时段内不能同时满足小于DelayMaxnormal和LostMaxnormal,则自动使用质量较差的门限对LostMaxbad和LostMaxbad进行最佳值调整。
如果当前使用的门限对为DelayMaxnormal和LostMaxnormal,在一个设定的时段内,实际传输时延和传输丢包率都能同时满足小于DelayMaxnormalLostMaxnormal门限对,则自动采用质量要求较好的一组门限对DelayMaxgood和LostMaxgood来进行最佳值调整。
综上所述,本发明通过周期获取网络传输状况,动态确定出流媒体接收端缓冲区内数据包个数的最佳值;当缓冲区内当前实际存储的数据包个数小于所述最佳值时,进行补包处理;当缓冲区内当前实际存储的数据包个数大于所述最佳值时,进行丢包处理。这样,采用本发明方法能动态调整缓冲区延时大小,避免了现有技术中延时的累加效应。
本发明可以灵活地根据流媒体实时性优先原则或传输质量优先原则来分别动态调整不同网络传输状态下的缓冲区数据包个数的最佳值,充分满足用户的不同需求。
采用本发明方法,还可以根据对媒体传输质量的要求设置多组门限值,当网络传输情况较好时,自动采用传输质量较好一组延时和丢包率门限值来动态调整缓冲区内数据包的最佳值,使媒体的传输质量始终维持在较好水平。
由于本发明采用动态调整缓冲区中数据包个数的最佳值来保证流媒体传输的实时性和传输质量,因此,不必预先设置很大的缓存区来兼顾网络状况很差时的传输质量。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种流媒体接收端缓冲区内数据包的动态调整方法,其特征在于,包括A、周期获取网络传输状况,确定流媒体接收端缓冲区内数据包个数的最佳值;B、比较所述缓冲区内当前实际存储的数据包个数和所述最佳值;当缓冲区内当前实际存储的数据包个数小于所述最佳值时,进行补包处理;当缓冲区内当前实际存储的数据包个数大于所述最佳值时,进行丢包处理。
2.如权利要求1所述的方法,其特征在于,根据所述最佳值确定出一个数据包个数的波动区间;当缓冲区内当前实际存储的数据包个数小于所述波动区间的下限值时,进行补包处理;当缓冲区内当前实际存储的数据包个数大于所述波动区间的上限值时,进行丢包处理。
3.如权利要求1所述的方法,其特征在于,所述步骤A包括周期获取网络的传输时延和传输丢包率,并根据流媒体实时性优先或质量优先原则,确定出所述最佳值。
4.如权利要求3所述的方法,其特征在于,当选择流媒体实时性优先时,确定出所述最佳值的具体方法包括设定最佳值的初始值、最大延时门限值和最大容许丢包率门限值;当所述周期到达时,获取当前网络的传输时延和传输丢包率;如果当前传输时延大于所述最大延时门限值,则所述最佳值为上一个周期确定出的最佳值减去一个变化量;如果当前传输时延小于等于所述最大延时门限值,且当前传输丢包率小于所述最大容许丢包率门限值的一个下限值,则所述最佳值为上一个周期确定出的最佳值减去一个变化量;如果当前传输时延小于所述最大延时门限值的一个下限值,且当前传输丢包率大于所述最大容许丢包率门限值,则所述最佳值为上一个周期确定出的最佳值加上一个变化量;在其它情况下,所述最佳值保持上一个周期确定出的最佳值不变。
5.如权利要求3所述的方法,其特征在于,当选择流媒体质量优先时,确定出所述最佳值的具体方法包括设定最佳值的初始值、最大延时门限值和最大容许丢包率门限值;当所述周期到达时,获取当前网络的传输时延和传输丢包率;如果当前传输丢包率大于所述最大容许丢包率门限值,则所述最佳值为上一个周期确定出的最佳值加上一个变化量;如果当前传输丢包率小于等于所述最大容许丢包率门限值,且当前传输时延小于所述最大延时门限值的一个下限值,则所述最佳值为上一个周期确定出的最佳值加上一个变化量;如果当前传输丢包率小于所述最大容许丢包率的一个下限值,且当前传输时延大于所述最大延时波动门限值,则所述最佳值为上一个周期确定出的最佳值减去一个变化量;在其它情况下,所述最佳值保持上一个周期确定出的最佳值不变。
6.如权利要求4或5所述的方法,其特征在于,所述变化量为1。
7.如权利要求4或5所述的方法,其特征在于,根据不同的媒体质量要求等级,设置多组对应的所述最大延时门限值和所述最大容许丢包率门限值;当采用质量要求较高的一组门限值确定所述最佳值时,如果在一设定时段内网络的实际传输时延和传输丢包率不能同时满足小于所述最大延时门限值和最大容许丢包率门限值,则采用质量要求较低的一组门限值来确定所述最佳值;当采用质量要求较低的一组门限值确定所述最佳值时,如果在一设定时段内网络的实际传输时延和传输丢包率都同时满足小于所述最大延时门限值和最大容许丢包率门限值,则采用质量要求较高一组门限值来确定所述最佳值。
8.如权利要求1-5任意权项所述的方法,其特征在于,步骤B中所述进行补包处理,具体包括将设置在所述流媒体接收端的数据包调整标志设置为补包标志;在读取所述缓冲区内的数据包时,判断所述数据包调整标志是否存在,如果所述数据包调整标志为补包标志,则该次数据读取返回空的数据包或复制当前数据包后读取该复制的数据包,并清除所述数据包调整标志。
9.如权利要求1-5任意权项所述的方法,其特征在于,所述进行丢包处理,具体包括将设置在所述流媒体接收端的数据包调整标志设置为立即丢包标志;在读取所述缓冲区内的数据包时,判断所述数据包调整标志是否存在,如果所述数据包调整标志为立即丢包标志,则丢弃当前数据包,直接读取下一个数据包,并清除所述数据包调整标志。
10.如权利要求1-5任意权项所述的方法,其特征在于,所述进行丢包处理,具体包括将设置在所述流媒体接收端的数据包调整标志设置为需要丢包标志;在读取所述缓冲区内的数据包时,判断所述数据包调整标志是否存在,如果所述数据包调整标志为需要丢包标志,则判断当前数据包是否存在,若当前数据包存在,则读取该数据包;若当前数据包不存在,则直接读取下一个数据包,并清除所述数据包调整标志。
11.如权利要求10所述的方法,其特征在于,当判断出需要进行丢包处理时,如果所述数据包调整标志为需要丢包标志,则将所述数据包调整标志设置为立即丢包标志;在读取所述缓冲区内的数据包时,判断所述数据包调整标志是否存在,如果所述数据包调整标志为立即丢包标志,则丢弃当前数据包,并清除所述数据包调整标志。
全文摘要
本发明公开了一种流媒体接收端缓冲区内数据包的动态调整方法,包括周期获取网络传输状况,确定出流媒体接收端缓冲区内数据包个数的最佳值;比较所述缓冲区内当前实际存储的数据包个数和所述最佳值;当缓冲区内当前实际存储的数据包个数小于所述最佳值时,进行补包处理;当缓冲区内当前实际存储的数据包个数大于所述最佳值时,进行丢包处理。采用本发明方法可以根据网络的实际传输状况,通过动态调整接收端缓冲区内数据包的最佳值,对存储在接收端缓冲区内的数据包进行补包或丢包处理,从而实现动态调整网络延时;且不需要设置较大的缓存内存。
文档编号H04L12/56GK1996935SQ20061000021
公开日2007年7月11日 申请日期2006年1月4日 优先权日2006年1月4日
发明者杨明磊, 裘洪国, 严海峰, 赵瑞, 饶俊, 王纪会, 邓承 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1