一种实时视频中保证视频质量的拥塞控制方法及系统与流程

文档序号:22397002发布日期:2020-09-29 18:06阅读:184来源:国知局
一种实时视频中保证视频质量的拥塞控制方法及系统与流程

本发明涉及网络传输技术领域,具体涉及一种实时视频中保证视频质量的拥塞控制方法及系统。



背景技术:

网络拥塞是基于ip协议的数据报交换网络中常见的一种网络传输问题,它对网络传输的质量有严重的影响,网络拥塞是导致网络吞吐降低,网络丢包等的主要原因之一,这些问题使得上层应用无法有效地利用网络带宽获得高质量的网络传输效果。特别是在通信领域,网络拥塞导致的丢包、延迟、抖动等问题,严重的影响了通信质量,如果不能很好的解决这些问题,一个通信产品就无法在现实环境中正常使用。

gcc(googlecongestioncontrol)拥塞控制算法主要分成两个部分:一个是基于丢包的拥塞控制,一个是基于延迟的拥塞控制。这两个拥塞控制算法分别是在发送端和接收端实现的,接收端的拥塞控制算法所计算出的估计带宽,会通过rtcp的remb报文反馈到发送端,发送端综合两个控制算法的结果得到一个最终的发送码率,并以此码率发送数据包。

基于丢包的拥塞控制的基本思想是根据丢包的多少来判断网络的拥塞程度,丢包越多则认为网络越拥塞,那么需要降低发送速率来缓解网络拥塞;如果没有丢包,这说明网络状况很好,这时候可以提高发送码率,向上探测是否有更多的带宽可用。基于延迟的拥塞控制,gcc使用延迟梯度来判断网络的拥塞程度,其算法分为几个部分:到达时间滤波器、过载检测器、速率控制器。

原有的gcc拥塞控制算法应用于本系统后,遇到带宽情况由差变好时,码率依然维持在较低水平,造成带宽浪费,用户接收视频质量较差。基于此缺点,对算法进行改进。

现有的gcc拥塞控制算法存在以下缺点:带宽由低开始增加时,算法计算的码流比带宽低很多,没有迅速跟踪带宽的变化提升码率。原因是状态机输入信号为underuse时,无论现态处于哪一状态,次态均为hold,处于hold状态时,码率变化策略是保持不变,导致码率没有实时增加;码率一旦开始增加就增的过高,超过带宽的范围,造成网络拥塞,丢包增多,视频出现卡顿,其原因是码率增加时采用乘性增加,增加后的码率过大,超过带宽范围。

图1示出了传统的gcc拥塞控制算法的带宽跟踪效果。其中带宽短时间波动时,检测低带宽的灵敏度高,可以在1-2s内跟踪上,但对带宽增加不敏感,码率增加很慢。下图的曲线反映的是优化前拥塞控制算法在带宽12秒变化一次时的码率变化曲线,从图中可以看出,带宽增加时码率维持在低码率下,对带宽的增加延迟10秒做出反应,增加时增加超过带宽300kbps。

可以看出,gcc拥塞控制算法的策略保守,无法快速反应利用可用的带宽资源,在看重视频质量的实时视频通信中不适用;码率增加策略使码率增加过多,加剧网络拥塞和丢包。现有的拥塞控制算法在视频传输过程中对带宽的跟踪速度较慢,增速不合适,不能满足需求。



技术实现要素:

有鉴于此,本发明提供了一种实时视频中保证视频质量的拥塞控制方法及系统,能够快速响应带宽变化、并克服码率增加过多的缺点,提高了码率对带宽的跟踪速度,提高了带宽利用率,克服了码率增加过多造成网络拥塞的缺点。

为达到上述目的,本发明的技术方案为:一种实时视频中保证视频质量的拥塞控制方法,包括如下步骤:

步骤一、实时接收视频数据包,并计算延迟梯度。

步骤二、根据延迟梯度对当前网络状态进行过载检测,获得当前网络状态信号;当前网络状态信号为过载状态信号overuse、正常状态信号normal或低载状态信号underuse。

步骤三、构建有限状态机:包括码率减小状态decrease、码率维持状态hold以及码率增加状态increase,预先设置有限状态机所处的初始状态,当前网络状态信号输入至有限状态机中,若输入为overuse,有限状态机直接转换为decrease状态;若输入为normal,有限状态机直接转换为hold状态;若输入为underuse,且有限状态机的当前状态是decrease,则有限状态机转换为hold状态;若输入为underuse,且有限状态机的当前状态不是decrease,则有限状态机转换为incease状态。

步骤四、根据状态机的当前状态,按照如下方式进行码率计算:

1)当状态机的当前状态为increase状态时,且距离探测带宽相差大于设定阈值时,则下一时刻即ti时刻的码率为:

ar(ti)=max(min(ar(ti-1)+max(0.2×ar(ti-1),1000),1.4×incoming_bitrate),incoming_bitrate)

其中ar(ti)为ti时刻的码率;ar(ti-1)为当前时刻即ti-1时刻的码率;incoming_bitrate是根据接收视频数据包统计计算得出的接收数据码率;根据接收所述视频数据包的速率计算距离探测带宽相差是否大于设定阈值;

2)当状态机的当前状态为increase状态时,且距离探测带宽相差不大于设定阈值时,则下一时刻即ti时刻的码率为

ar(ti)=max(min(ar(ti-1)+max(averofpacket,1000),1.4×incoming_bitrate),incoming_bitrate)

其中,averofpacket是视频数据包的平均数据量,incoming_bitrate是根据接收视频数据包统计计算得出的接收数据码率;

averofpacket=bits_per_frame/packets_per_frame

其中bits_per_frame是每帧数据量,packets_per_frame是一帧包含的数据包数量;

3)当状态机的当前状态为decrease状态时,则下一时刻即ti时刻的码率为

ar(ti)=min(0.75×incoming_bitrate,ar(ti-1))

其中incoming_bitrate是根据接收视频数据包统计计算得出的接收数据码率;

4)当状态机的当前状态信号为hold时,则码率保持不变,即下一时刻ti时刻的码率等于当前时刻ti-1时刻的码率;

步骤五、根据计算出来的下一时刻即ti时刻的码率设定视频数据包的发送码率。

进一步地,步骤一,实时接收视频数据包,并计算延迟梯度,具体为:

预先设定数据包组的时间间隔,在一个数据包组的时间间隔内接收的所有视频数据包为一组;对于当前一组视频数据包,以最后一个视频数据包的到达时间减去第一个视频数据包的发送时间作为时间延迟;当前一组视频数据包与上一组视频数据包的时间延迟相差作为当前一组视频数据包的延迟梯度。

进一步地,步骤二,具体为:

预先设定过载阈值th1和低载阈值th0,若延迟梯度大于过载阈值th1,则当前网络状态信号为overuse。

若延迟梯度小于低载阈值th0,则当前网络状态信号为underuse。

若延迟梯度处于[th0,th1]范围内,则当前网络状态信号为normal。

进一步地,步骤四中,根据接收视频数据包的速率计算距离探测带宽相差是否大于设定阈值,具体为:

所述视频数据包的接收速率为incoming_bitrate,设定平均最大码率avg_max_bitrate的初始值为第一组视频数据包的接收速率,每接收一组视频数据包更新平均最大码率avg_max_bitrate为:

avg_max_bitrate=(1-α)×avg_max_bitrate_last+α×incoming_bitrate

其中α为设定的系数常量,本发明中可以依经验设定系数常量,例如本发明实施例中可设定该系数常量α为0.05。

更新最大码率方差var_max_bitrate为:

var_max_bitrate=(1-α)×var_max_bitrate_last+α×(avg_max_bitrate-incoming_bitrate)2

更新最大码率标准差std_max_bitrate为:

increase状态时,接收码率incoming_bitrate大于avg_max_bitrate与std_max_bitrate之和,则认为距离探测带宽相差较大。每次进入decrease状态,认为距离探测带宽相差较小。

进一步地,bits_per_frame是每帧数据量,bits_per_frame在每次码率计算完成之后进行更新:

bits_per_frame=current_bitrate/frame_per_second。

其中frame_per_second是每秒的帧数;current_bitrate为当前比特率。

进一步地,设定码率调整时间间隔为4s以内,在每个码率调整时间间隔内,均执行步骤一~步骤五进行码率调整。

本发明另一实施例提供了一种实时视频中保证视频质量的拥塞控制系统,该系统包括视频发送端、视频接收端、时间滤波器、过载检测器、状态转换机以及码率计算器;

视频发送端,用于根据实时调整的发送码率进行视频数据包的接收。

视频接收端,用于实时接收视频数据包。

时间滤波器,用于根据视频数据包的发送时间和接收时间计算延迟梯度。

过载检测器,用于根据延迟梯度对当前网络状态进行过载检测,获得当前网络状态信号;当前网络状态信号为过载状态信号overuse、正常状态信号normal或低载状态信号underuse。

状态转换机,用于构建有限状态机:包括码率减小状态decrease、码率维持状态hold以及码率增加状态increase,预先设置有限状态机所处的初始状态,当前网络状态信号输入至有限状态机中,若输入为overuse,有限状态机直接转换为decrease状态;若输入为normal,有限状态机直接转换为hold状态;若输入为underuse,且有限状态机的当前状态是decrease,则有限状态机转换为hold状态;若输入为underuse,且有限状态机的当前状态不是decrease,则有限状态机转换为incease状态。

码率计算器,用于根据状态机的当前状态,按照如下方式进行码率计算:

1)当状态机的当前状态为increase状态时,且距离探测带宽相差大于设定阈值时,则下一时刻即ti时刻的码率为:

ar(ti)=max(min(ar(ti-1)+max(averofpacket,1000),1.4×incoming_bitrate),incoming_bitrate)

其中ar(ti)为ti时刻的码率;ar(ti-1)为当前时刻即ti-1时刻的码率;incoming_bitrate是根据接收视频数据包统计计算得出的接收数据码率;根据接收所述视频数据包的速率计算距离探测带宽相差是否大于设定阈值;

2)当状态机的当前状态为increase状态时,且距离探测带宽相差不大于设定阈值时,则下一时刻即ti时刻的码率为:

ar(ti)=max(min(ar(ti-1)+max(averofpacket,1000),1.4×incoming_bitrate),incoming_bitrate)

其中,averofpacket是视频数据包的平均数据量,incoming_bitrate是根据接收视频数据包统计计算得出的接收数据码率;

averofpacket=bits_per_frame/packets_per_frame

其中bits_per_frame是每帧数据量,packets_per_frame是一帧包含的数据包数量;

3)当状态机的当前状态为decrease状态时,则下一时刻即ti时刻的码率为

ar(ti)=min(0.75×incoming_bitrate,ar(ti-1))

其中incoming_bitrate是根据接收视频数据包统计计算得出的接收数据码率;

4)当状态机的当前状态信号为hold时,则码率保持不变,即下一时刻ti时刻的码率等于当前时刻ti-1时刻的码率。

码率计算器计算得到实时调整的发送码率送入到视频发送端。

进一步地,视频发送端根据设定的调整时间间隔,依照实时调整的发送码率进行码率调整。

有益效果:

本发明提供一种实时视频中保证视频质量的拥塞控制方法及系统,该方案基于传统的gcc拥塞控制算法方案,根据本系统的需求和技术特点,对原有的拥塞控制算法进行优化和适配,提高了码率对带宽的跟踪速度,提高了带宽利用率,克服了码率增加过多造成网络拥塞的缺点。本发明采用修改优化的状态转换机制,基于快速响应带宽变化的策略,克服了带宽增加时码率无法快速跟踪的问题,使计算出的码率快速跟踪带宽变化,提高了带宽利用率,以达到在带宽允许的范围内提高视频画面质量的目标需求。本发明采用优化的码率变化函数,克服码率增加过多的缺点,避免加剧网络拥塞。

附图说明

图1为传统的gcc拥塞控制算法的带宽跟踪效果图;

图2为本发明实施例中构建的有限状态机状态变化趋势图;

图3为本发明实施例中的实时视频中保证视频质量的拥塞控制方法流程图;

图4为本发明实施例中的实时视频中保证视频质量的拥塞控制系统框图;

图5为本发明实施例中带宽以4秒为变化间隔的带宽跟踪效果图;

图6为本发明实施例中带宽以6秒为变化间隔的带宽跟踪效果图。

具体实施方式

下面结合附图并举实施例,对本发明进行详细描述。

本发明提供了一种实时视频中保证视频质量的拥塞控制方法,其流程如图3所示其特征在于,包括如下步骤:

步骤一、实时接收视频数据包,并计算延迟梯度。

本发明实施例中,预先设定码率调整时间间隔,可以根据在码率调整时间间隔内接收一组视频数据包,对于当前一组视频数据包,以最后一个视频数据包的到达时间减去第一个视频数据包的达到时间作为达到时间差,以最后一个视频数据包的发送时间减去第一个视频数据的发送时间作为发送时间差,以到达时间差与发送时间差之间相差作为当前一组视频数据包的延迟梯度。

本发明实施例中,设定码率调整时间间隔为4s以内,在每个码率调整时间间隔内,均执行步骤一~步骤五进行码率调整。

步骤二、根据延迟梯度对当前网络状态进行过载检测,获得当前网络状态信号;当前网络状态信号为过载状态信号overuse、正常状态信号normal或低载状态信号underuse。

预先设定过载阈值th1和低载阈值th0,若延迟梯度大于过载阈值th1,则当前网络状态信号为overuse。

若延迟梯度小于低载阈值th0,则当前网络状态信号为underuse。

若延迟梯度处于[th0,th1]范围内,则当前网络状态信号为normal。

步骤三、构建有限状态机:包括码率减小状态decrease、码率维持状态hold以及码率增加状态increase,预先设置有限状态机所处的初始状态,当前网络状态信号输入至有限状态机中,若输入为overuse,有限状态机直接转换为decrease状态;若输入为normal,有限状态机直接转换为hold状态;若输入为underuse,且有限状态机的当前状态是decrease,则有限状态机转换为hold状态;若输入为underuse,且有限状态机的当前状态不是decrease,则有限状态机转换为incease状态。

本发明实施例中,所构建的有限状态机的状态变化趋势如图2所示。

步骤四、根据状态机的当前状态,按照如下方式进行码率计算:

1)当状态机的当前状态为increase状态时,且距离探测带宽相差大于设定阈值时,则下一时刻即ti时刻的码率为:

ar(ti)=max(min(ar(ti-1)+max(0.2×ar(ti-1),1000),1.4×incoming_bitrate),incoming_bitrate)

其中ar(ti)为ti时刻的码率;ar(ti-1)为当前时刻即ti-1时刻的码率;incoming_bitrate是根据接收视频数据包统计计算得出的接收数据码率。

本发明实施例中根据接收视频数据包的速率计算距离探测带宽相差是否大于设定阈值。

所述视频数据包的接收速率为incoming_bitrate,设定平均最大码率avg_max_bitrate的初始值为第一组视频数据包的接收速率,每接收一组视频数据包更新平均最大码率avg_max_bitrate为:

avg_max_bitrate=(1-α)×avg_max_bitrate_last+α×incoming_bitrate

其中α为设定的系数常量,本发明中可以依经验设定系数常量,例如本发明实施例中可设定该系数常量α为0.05。

更新最大码率方差var_max_bitrate为:

var_max_bitrate=(1-α)×var_max_bitrate_last+α×(avg_max_bitrate-incoming_bitrate)2

更新最大码率标准差std_max_bitrate为:

increase状态时,接收码率incoming_bitrate大于avg_max_bitrate与std_max_bitrate之和,则认为距离探测带宽相差大于设定阈值,每次进入decrease状态,认为距离探测带宽相差不大于设定阈值。

2)当状态机的当前状态为increase状态时,且距离探测带宽相差不大于设定阈值时,则下一时刻即ti时刻的码率为:

ar(ti)=max(min(ar(ti-1)+max(averofpacket,1000),1.4×incoming_bitrate),incoming_bitrate)

其中,averofpacket是视频数据包的平均数据量,incoming_bitrate是根据接收视频数据包统计计算得出的接收数据码率。

averofpacket=bits_per_frame/packets_per_frame

其中bits_per_frame是每帧数据量,packets_per_frame是一帧包含的数据包数量;本发明实施例中,按照设定,包最大为1200字节。

packets_per_frame=bits_per_frame/(8×1200)。

本发明实施例中,bits_per_frame是每帧数据量,bits_per_frame在每次码率计算完成之后进行更新:

bits_per_frame=current_bitrate/frame_per_second;

其中frame_per_second是每秒的帧数;current_bitrate为当前比特率。

3)当状态机的当前状态为decrease状态时,则下一时刻即ti时刻的码率为

ar(ti)=min(0.75×incoming_bitrate,ar(ti-1))

其中incoming_bitrate是根据接收视频数据包统计计算得出的接收数据码率。

4)当状态机的当前状态信号为hold时,则码率保持不变,即下一时刻ti时刻的码率等于当前时刻ti-1时刻的码率;

步骤五、根据计算出来的下一时刻即ti时刻的码率设定视频数据包的发送码率。

本发明另外一个实施例还提供了一种实时视频中保证视频质量的拥塞控制系统,如图4所示,该系统包括视频发送端、视频接收端、时间滤波器、过载检测器、状态转换机以及码率计算器。

视频发送端,用于根据实时调整的发送码率进行视频数据包的接收。

视频接收端,用于实时接收视频数据包。

时间滤波器,用于根据视频数据包的发送时间和接收时间计算延迟梯度;可以根据以上实施例中给出的计算法进行计算。

过载检测器,用于根据延迟梯度对当前网络状态进行过载检测,获得当前网络状态信号;当前网络状态信号为过载状态信号overuse、正常状态信号normal或低载状态信号underuse;可以根据以上实施例中给出的过载检测方法进行计算。

状态转换机,用于构建有限状态机:包括码率减小状态decrease、码率维持状态hold以及码率增加状态increase,预先设置有限状态机所处的初始状态,当前网络状态信号输入至有限状态机中,若输入为overuse,有限状态机直接转换为decrease状态;若输入为normal,有限状态机直接转换为hold状态;若输入为underuse,且有限状态机的当前状态是decrease,则有限状态机转换为hold状态;若输入为underuse,且有限状态机的当前状态不是decrease,则有限状态机转换为incease状态。

码率计算器,用于根据状态机的当前状态,按照如下方式进行码率计算:

1)当状态机的当前状态为increase状态时,且距离探测带宽相差大于设定阈值时,则下一时刻即ti时刻的码率为:

ar(ti)=max(min(ar(ti-1)+max(0.2×ar(ti-1),1000),1.4×incoming_bitrate),incoming_bitrate)

其中ar(ti)为ti时刻的码率;ar(ti-1)为当前时刻即ti-1时刻的码率;incoming_bitrate是根据接收视频数据包统计计算得出的接收数据码率;根据接收视频数据包的速率计算距离探测带宽相差是否大于设定阈值。

2)当状态机的当前状态为increase状态时,且距离探测带宽相差不大于设定阈值时,则下一时刻即ti时刻的码率为:

ar(ti)=max(min(ar(ti-1)+max(averofpacket,1000),1.4×incoming_bitrate),incoming_bitrate)

其中,averofpacket是视频数据包的平均数据量,incoming_bitrate是根据接收视频数据包统计计算得出的接收数据码率;

averofpacket=bits_per_frame/packets_per_frame

其中bits_per_frame是每帧数据量,packets_per_frame是一帧包含的数据包数量。按照设定,包最大为1200字节。

packets_per_frame=bits_per_frame/(8×1200)

3)当状态机的当前状态为decrease状态时,则下一时刻即ti时刻的码率为

ar(ti)=min(0.75×incoming_bitrate,ar(ti-1))

其中incoming_bitrate是根据接收视频数据包统计计算得出的接收数据码率。

4)当状态机的当前状态信号为hold时,则码率保持不变,即下一时刻ti时刻的码率等于当前时刻ti-1时刻的码率。

码率计算器计算得到实时调整的发送码率送入到视频发送端。

本发明实施例中,视频发送端根据设定的调整时间间隔,依照实时调整的发送码率进行码率调整。

图5示出了一种带宽以4秒为变化间隔的带宽跟踪效果图,可以看出使用本发明实施例提供的实时视频中保证视频质量的拥塞控制方案能够满足需求。

图6示出了一种带宽以6秒为变化间隔的带宽跟踪效果图,可以看出使用本发明实施例提供的实时视频中保证视频质量的拥塞控制方案能够满足需求。

综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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