一种流媒体传输的动态码率的调节方法、装置及传输系统与流程

文档序号:13169509阅读:448来源:国知局
一种流媒体传输的动态码率的调节方法、装置及传输系统与流程

本发明涉及一种通信领域,特别是一种适用于流媒体传输的动态码率调节方法、装置及传输系统。



背景技术:

流媒体技术广泛应用于各种音视频即时通信场景。然而internet只提供尽力而为(best-effort)的服务,无法提供qos保证。流媒体数据在复杂的网络环境中传输,会产生延时,抖动和丢包,处理不当,会严重影响用户体验。

在流媒体传输环境中,当网络状况较差时,码率越高反而会导致用户体验差,此时降低码率,有助于抵消网络质量不佳所带来的负面影响。

因此,针对现有问题,需要提供一种适用于流媒体传输的动态码率的调节方法及系统。



技术实现要素:

本发明的目的在于克服现有技术的缺点与不足,提供了一种适用于流媒体传输的动态码率调节方法及系统。

本发明通过以下的方案实现:一种适用于流媒体传输的动态码率调节方法,包括以下步骤:

s1:获取平均丢包率和平均抖动;当进行降码率调节时,执行步骤s2;当进行升码率调节时,执行步骤s3;

s2:判断丢包率是否大于设定门限值,若是,则直接切换;

若否,则继续判断抖动是否大于设定门限值;若是,则进行码率切换;若否,则不进行切换;

s3:判断丢包率是否大于设定门限值,若是,则不进行切换;

若否,则判断抖动是否大于设定门限值;若是,则不进行切换;若否,则进行码率切换。

作为本发明的进一步改进,所述步骤s1中,在获取平均丢包率时,通过缓存数组存储最新的3个丢包率,并对这3个丢包率进行平均计算。

作为本发明的进一步改进,当在对存储的丢包率进行更新时,对最新获取的丢包率进行异常判断,若该丢包率判断为异常,则不将该最新获取丢包率更新至缓存数组中;若连续两个丢包率判断为异常,则将这两个丢包率都更新至缓存数组中;在判断丢包率是否异常时,通过将最新获取的丢包率减去上一次更新的丢包率,若大于设定门限值,则判断为异常。

作为本发明的进一步改进,所述步骤s1中,在获取平均抖动时,通过缓存数组存储最新的3个抖动值,并对这3个抖动值进行平均计算。

作为本发明的进一步改进,当在对存储的抖动值进行更新时,对最新获取的抖动值进行异常判断,若该抖动值判断为异常,则不将该最新获取抖动值更新至缓存数组中;若连续两个抖动值判断为异常,则将这两个抖动值都更新至缓存数组中;在判断抖动值是否异常时,通过将最新获取的抖动值减去上一次更新的抖动值,若大于设定门限值,则判断为异常。

本发明还提供了一种流媒体传输的动态码率调节装置,包括平均丢包率获取模块、平均抖动获取模块、丢包率判断模块和抖动判断模块;

所述平均丢包率获取模块,用于获取平均丢包率;

所述平均抖动获取模块,用于获取平均抖动值;

当进行降码率调节时,通过所述丢包率判断模块,判断丢包率是否大于设定门限值,若是,则直接切换;若否,再通过所述抖动判断模块,判断抖动是否大于设定门限值,若是,则进行码率切换;若否,则不进行切换;

当进行升码率调节时,通过所述丢包率判断模块,判断丢包率是否大于门限值,若是,则不进行切换;若否,再通过所述抖动判断模块,判断抖动是否大于设定门限值,若是,则不进行切换;若否,则进行码率切换。

作为本发明的进一步改进,所述平均丢包率获取模块包括:丢包率计算模块,用于在获取平均丢包率时,通过缓存数组存储最新的3个丢包率,并对这3个丢包率进行平均计算。

作为本发明的进一步改进,所述平均丢包率获取模块包括:丢包率计算模块和丢包率异常判断模块;

所述丢包率计算模块用于在获取平均丢包率时,通过缓存数组存储最新的3个丢包率,并对这3个丢包率进行平均计算;

所述丢包率异常判断模块,用于当在对存储的丢包率进行更新时,对最新获取的丢包率进行异常判断,若该丢包率判断为异常,则不将该最新获取丢包率更新至缓存数组中;若连续两个丢包率判断为异常,则将这两个丢包率都更新至缓存数组中;所述丢包率异常判断模块在判断丢包率是否异常时,通过将最新获取的丢包率减去上一次更新的丢包率,若大于设定门限值,则判断为异常。

作为本发明的进一步改进,所述平均抖动获取模块包括:抖动值计算模块和抖动值异常判断模块;

所述抖动值计算模块,用于在获取平均抖动时,通过缓存数组存储最新的3个抖动值,并对这3个抖动值进行平均计算;

所述抖动值异常判断模块,用于当在对存储的抖动值进行更新时,对最新获取的抖动值进行异常判断,若该抖动值判断为异常,则不将该最新获取抖动值更新至缓存数组中;若连续两个抖动值判断为异常,则将这两个抖动值都更新至缓存数组中;所述抖动值异常判断模块在判断抖动值是否异常时,通过将最新获取的抖动值减去上一次更新的抖动值,若大于设定门限值,则判断为异常。

另外,本发明还提供了一种流媒体传输系统,其特征在于:包括第一客户端和第二客户端;

所述第一客户端包括第一网络下行质量评估模块、第一客户端网络控制交互模块、第一计算参数模块和第一网络收发模块;所述第一客户端网络控制交互模块包括所述的流媒体传输的动态码率调节装置;

所述第二客户端包括第二网络下行质量评估模块、第二客户端网络控制交互模块、第二计算参数模块和第二网络收发模块;所述第二客户端网络控制交互模块包括所述的流媒体传输的动态码率调节装置;

当第一客户端接收来自第二客户端的数据时,通过所述第一网络下行评估模块,对当前网络下行质量进行评估,得到所需要的网络性能参数,并通过第一客户端网络交互控制模块,获取第二客户端的当前码率并向第二客户端反馈应该修改的码率;根据当前下行网络的当前网络性能参数得到对方的当前码率,可计算得到对方应该修改的码率;所述第二客户端接受并解析出第一客户端需要修改的码率,判断该码率是否与当前实际码率一致,如果不一致,则进行修改;

当第二客户端接收来自第一客户端的数据时,通过所述第二网络下行评估模块,对当前网络下行质量进行评估,得到所需要的网络性能参数,并通过第二客户端网络交互控制模块,获取第一客户端的当前码率并向第一客户端反馈应该修改的码率;根据当前下行网络的当前网络性能参数得到对方的当前码率,可计算得到对方应该修改的码率;所述第一客户端接收并解析出第二客户端需要修改的码率,判断该码率是否与当前实际码率一致,如果不一致,则进行修改。

作为本发明的进一步改进,所述第一客户端网络交互控制模块通过端到端的透传协议向第二客户端发送应该修改的码率,所述透传协议每隔1/3t时长发送一次;

所述第二客户端网络交互控制模块通过端到端的透传协议向第一客户端发送应该修改的码率,所述透传协议每隔1/3t时长发送一次。

相比于现有技术,本发明提供的动态码率调节方法是一种能够自适应网络状况的实时流媒体传输机制,网络性能评估和码率调节策略是动态码率调节的两个重要模块,其表现直接影响到动态码率调节的效果。本发明提出采用丢包率和抖动相结合的调节策略,通过评估各码率在不同丢包率和抖动下的媒体传输质量,得到该码率下能够保证所需质量的丢包率和抖动门限,然后根据门限值实施具体的调节策略。

进一步,本发明实现简单,无需服务器参与,适用性广,能够有效确保不同网络传输环境下的即时通信质量。

为了更好地理解和实施,下面结合附图详细说明本发明。

附图说明

图1是端到端即时网络通信整体框图。

图2是本发明的流媒体传输的动态码率调节方法的步骤流程图。

图3是序列号的区间划分示意图。

图4是平均抖动的求解流程图。

图5是本发明的流媒体传输的动态码率调节装置的连接框图。

图6是本发明的流媒体传输系统框图。

具体实施方式

以下结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

请参阅图1,其为端到端即时网络通信整体框图。rtp数据流在网络传输过程中,会产生丢包、延时和抖动,当丢包、延时或抖动过大时,用户体验变差。因此,在本发明中通过网络交互控制模块对rtp数据流进行调节,可以改善流媒体传输质量,从而提升用户体验。针对现有技术的缺陷,本发明提供了一种适用于流媒体传输的动态码率调节方法和系统,具体通过以下实施例进行介绍:

实施例1

首先,介绍本发明的流媒体传输的动态码率调节方法的基本流程。具体请参阅图2,其为本发明的流媒体传输的动态码率调节方法的步骤流程图。

本发明提供了一种适用于流媒体传输的动态码率调节方法,包括以下步骤:

s1:获取平均丢包率和平均抖动;当进行降码率调节时,执行步骤s2;当进行升码率调节时,执行步骤s3。

具体的,当前码率要么是升,要么是降,要么是保持不变,而且是一次是能升一级或者降低一级。比如说有三种码率:14kbps,20kbps,26kbps,若当前码率是14kbps,如果要切换码率的话,只能升到20kbsp。有多少种码率以及各种码率下的切换门限都是预先设定的。

s2:判断丢包率是否大于设定门限值,若是,则直接切换。

若否,则继续判断抖动是否大于设定门限值;若是,则进行码率切换;若否,则不进行切换。

s3:判断丢包率是否大于设定门限值,若是,则不进行切换。

若否,则判断抖动是否大于设定门限值;若是,则不进行切换;若否,则进行码率切换。

具体的,当针对丢包率和平均抖动进行平均计算时,本实施例采取的方式如下:

所述步骤s1中,在获取平均丢包率时,通过缓存数组存储最新的3个丢包率,并对这3个丢包率进行平均计算。

具体的,为了防止丢包率异常的出现,而导致平均丢包率的计算出现偏差,本发明还针对异常丢包率进行如下的处理:当在对存储的丢包率进行更新时,对最新获取的丢包率进行异常判断,若该丢包率判断为异常,则不将该最新获取丢包率更新至缓存数组中;若连续两个丢包率判断为异常,则将这两个丢包率都更新至缓存数组中。

其中,在判断丢包率是否异常时,通过将最新获取的丢包率减去上一次更新的丢包率,若大于设定门限值,则判断为异常。

同理,在进行抖动值的计算时,其与丢包率的计算方式一致,具体为:所述步骤s1中,在获取平均抖动时,通过缓存数组存储最新的3个抖动值,并对这3个抖动值进行平均计算。

为了防止由于突然出现异常抖动,而导致平均抖动值出现偏差,当在对存储的抖动值进行更新时,对最新获取的抖动值进行异常判断,若该抖动值判断为异常,则不将该最新获取抖动值更新至缓存数组中;若连续两个抖动值判断为异常,则将这两个抖动值都更新至缓存数组中。

具体的,在判断抖动值是否异常时,通过将最新获取的抖动值减去上一次更新的抖动值,若大于设定门限值,则判断为异常。

另外,本发明采用丢包率和抖动相结合的策略,前提是要确定每一种码率可以接受的丢包率和抖动范围,即确定不同码率之间切换的门限值。本实施例以voip为例进行说明,首先确定所使用的码率,其次通过模拟各种丢包率和抖动下的网络状况,测试各码率在模拟网络状况下的语音质量表现,选择该码率下可以接受的语音质量所对应的丢包和抖动门限,作为动态码率调节的依据。

以下通过具体实例介绍如何针对丢包率和抖动进行计算:

本发明采用的网络性能参数包括丢包率和抖动,在通信过程中,每隔周期t计算一次丢包率和抖动。

在计算丢包率时,丢包率是根据一个计算窗口时长内的丢包数和总的收包数进行计算。丢包率根据所收到的rtp包中的序列号(sequence)计算得出,请同时参阅图3,其为序列号的区间划分示意图。在丢包率计算过程中,根据新收到包的sequence与当前丢包统计窗口的关系,将sequence的落入区间划分成了五个区间,分别由1~5标记。不同的区间代表不同的意义,处理方式也一样。

minseq对应当前计算窗口的最小值,maxseq对应当前计算窗口的最大值。在计算窗口时间内正常情况下minseq为上一个计算窗口的maxseq+1,maxseq会随着收包序号的递增而增大。发送端的发包序号是递增的,如果网络正常,先发出去的包应该先收到,因此收包序号也应该是递增的,对应区间4,此时,maxseq随着收包序号的增加而更新。

如果网络不正常,收到的包序号小于maxseq,但是大于minseq,则对应区间3。

如果收到的包序小于minseq,大于kmaxdisorder,即对应区间2,也表示该包是乱序包,但是乱序比区间3严重。

kmaxdisorder,表示允许的最大乱序门限,一般网络造成的乱序不会小于这个值,区间1对应的是对方断网的情况。

kmaxloss表示允许的最大丢包门限,区间5对应的本方断网的情况。

其中,区间1表示客户端退出频道重新进入的情况,区间5表示客户端断网重连的情况,这两种情况需要reset所有相关丢包统计参数。区间2表示严重乱序区间,落入该区间sequence不进行任何处理。区间3表示当前统窗口的乱序,这种情况算有效来包,但maxseq不会更新,区间4maxseq正常更新,区间3和区间4的sequence需要排除重复收包的情况。

另外,在进行抖动计算时,包括以下步骤:

步骤1、每收到一个rtp包,由其接收时间戳减去发送时间戳;

步骤2、对当前计算周内步骤1的所有结果进行排序;

步骤3、根据步骤2的排序结果,由最大值减去最小值得到当前周期内的抖动。

接下来,由于网络环境的不确定性,为了防止在动态码率调节过程中出现频繁的码率切换,需要对上述所求的丢包率和抖动进行平滑处理,具体为对丢包率和抖动值求取平均值,并排除异常值。请同时参阅图4,其为平均抖动的求解流程图。以下以抖动值为例,介绍如何进行平均抖动值的求解流程,具体包括如下步骤:

s101:初始化参数:avg_jitter=0;times=0;jitter_ct1=0;jitter[1]=jitter[2]=jitter[3]=0;jitter_disorder=0。

s102:判断是否停止求解,若否,则继续执行步骤s103;若是,则结束求解。

s103:接收new_jitter,以及将times加1。

s104:判断new_jitter-jitter[2]是否小于kjitterupdatethreshold,若是,则执行步骤s105;若否,则执行步骤s201;

s105:判断jitter_ct1是否为0;若是,则执行步骤s106;若否,则执行步骤s301;

s106:将jitter[2]赋值给jitter[1],jitter[3]赋值给jitter[2],new_jitter赋值给jitter[3];

s107:求解avg_jitter;具体为:判断times是否大于2,若是,则avg_jittter=(jitter[1]+jitter[2]+jitter[3])/3。

若否,则avg_jitter=(jitter[1]+jitter[2]+jitter[3])/((times+1)%3)。

输出avg_jitter,并返回步骤s102。

s201:判断jitter_ct1是否等于0;若是,则

将jitter_ct1赋值为1,将new_jitter赋值给jitter_disorder,并执行步骤:s107;

若否,则:

将jitter[2]赋值给jitter[1],将jitter_disorder赋值给jitter[2],将new_jitter赋值给jitter[3],将jitter_ct1赋值为0,将jitter_disorder赋值为0,并执行步骤s107。

s301:将jitter[1]赋值给jitter[1],将jitter[3]赋值给jitter[2],将new_jitter赋值给jitter[3];将jitter_ct1赋值为0;将jitter_disorder赋值为0,并执行步骤s107。

如上述流程所述,缓存数组只缓存最近三次更新的抖动,在缓存数组更新过程中,需要设定缓存数组的更新门限,如果新来的抖动减去上一次更新的抖动小于设定的门限值,则正常更新缓存数组,如果大于设定的门限值,并且是第一次大于门限值,则不更新,如果下一次新来的抖动减去上一次更新的抖动仍大于门限值,即连续两次新来的抖动减去上一次更新的抖动都大于门限值,则这两个抖动值都要更新到缓存数组。不论缓存数组是否更新,每隔周期t对缓存数组中的值取平均,得到平均抖动。

而丢包率的求解过程与上述抖动的求解过程一致,故不赘述。

实施例2

请同时参阅图5,其为本发明的流媒体传输的动态码率调节装置的连接框图。为了实现实施例1的动态码率调节方法,本实施例2还提供了一种流媒体传输的动态码率调节装置1,包括平均丢包率获取模块11、平均抖动获取模块12、丢包率判断模块13和抖动判断模块14。

所述平均丢包率获取模块11,用于获取平均丢包率;

所述平均抖动获取模块12,用于获取平均抖动值;

当进行降码率调节时,通过所述丢包率判断模块13,判断丢包率是否大于设定门限值,若是,则直接切换;若否,再通过所述抖动判断模块14,判断抖动是否大于设定门限值,若是,则进行码率切换;若否,则不进行切换;

当进行升码率调节时,通过所述丢包率判断模块13,判断丢包率是否大于门限值,若是,则不进行切换;若否,再通过所述抖动判断模块14,判断抖动是否大于设定门限值,若是,则不进行切换;若否,则进行码率切换。

进一步,所述平均丢包率获取模块11包括:丢包率计算模块111和丢包率异常判断模块112。

所述丢包率计算模块111,用于在获取平均丢包率时,通过缓存数组存储最新的3个丢包率,并对这3个丢包率进行平均计算。

所述丢包率异常判断模块112,用于当在对存储的丢包率进行更新时,对最新获取的丢包率进行异常判断,若该丢包率判断为异常,则不将该最新获取丢包率更新至缓存数组中;若连续两个丢包率判断为异常,则将这两个丢包率都更新至缓存数组中。

具体的,所述丢包率异常判断模块在判断丢包率是否异常时,通过将最新获取的丢包率减去上一次更新的丢包率,若大于设定门限值,则判断为异常。

所述平均抖动获取模块12包括:抖动值计算模块121和抖动值异常判断模块122。

所述抖动值计算模块121,用于在获取平均抖动时,通过缓存数组存储最新的3个抖动值,并对这3个抖动值进行平均计算。

所述抖动值异常判断模块122,用于当在对存储的抖动值进行更新时,对最新获取的抖动值进行异常判断,若该抖动值判断为异常,则不将该最新获取抖动值更新至缓存数组中;若连续两个抖动值判断为异常,则将这两个抖动值都更新至缓存数组中。

具体的,所述抖动值异常判断模块在判断抖动值是否异常时,通过将最新获取的抖动值减去上一次更新的抖动值,若大于设定门限值,则判断为异常。

在本实施例2中的流媒体传输的动态码率调节系统与实施例1中的动态码率调节方法的原理相同,故不赘述。

实施例3

本实施例中,将实施例2中的动态码率调节系统应用在现有的流媒体传输系统中,以解决现有技术在传输过程中的缺陷。具体请同时参阅图6,其为本发明的流媒体传输系统框图。本发明还提供了一种流媒体传输系统,其包括第一客户端2和第二客户端3。

所述第一客户端2包括第一网络下行质量评估模块21、第一客户端网络控制交互模块22、第一计算参数模块23和第一网络收发模块24;所述第一客户端网络控制交互模块22包括如实施例2中所述流媒体传输的动态码率调节装置1。

所述第二客户端3包括第二网络下行质量评估模块31、第二客户端网络控制交互模块32、第二计算参数模块33和第二网络收发模块34。所述第二客户端网络控制交互模块32包括如实施例2中所述流媒体传输的动态码率调节装置1。

本实施例3所采用的动态码率调节系统与实施例2中相同,故不赘述。以下简要介绍本实施例3中第一客户端和第二客户端的数据传输过程:

当第一客户端接2收来自第二客户端3的数据时,通过所述第一网络下行评估模块21,对当前网络下行质量进行评估,得到所需要的网络性能参数,并通过第一客户端网络交互控制模块22,获取第二客户端3的当前码率并向第二客户端反馈应该修改的码率。根据当前下行网络的当前网络性能参数得到对方的当前码率,可计算得到对方应该修改的码率;所述第二客户端接受并解析出第一客户端需要修改的码率,判断该码率是否与当前实际码率一致,如果不一致,则进行修改。

同理,当第二客户端接3收来自第一客户端的数据时,通过所述第二网络下行评估模块31,对当前网络下行质量进行评估,得到所需要的网络性能参数,并通过第二客户端网络交互控制模块32,获取第一客户端2的当前码率并向第一客户端反馈应该修改的码率;根据当前下行网络的当前网络性能参数得到对方的当前码率,可计算得到对方应该修改的码率;所述第一客户端接收并解析出第二客户端需要修改的码率,判断该码率是否与当前实际码率一致,如果不一致,则进行修改。

进一步,所述第一客户端网络交互控制模块22通过端到端的透传协议向第二客户端3发送应该修改的码率,所述透传协议每隔1/3t时长发送一次。

所述第二客户端网络交互控制模块32通过端到端的透传协议向第一客户端2发送应该修改的码率,所述透传协议每隔1/3t时长发送一次。

相比于现有技术,本发明提供的动态码率调节方法是一种能够自适应网络状况的实时流媒体传输机制,网络性能评估和码率调节策略是动态码率调节的两个重要模块,其表现直接影响到动态码率调节的效果。

同时,本发明实现简单,无需服务器参与,适用性广,能够有效确保不同网络传输环境下的即时通信质量。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1