本申请涉及一种vilte(videooverlong-termevolution,长期演进视频承载)视频通话实现方法,特别是涉及在vilte视频通话过程中通过计算rtp(real-timetransportprotocol,实时传输协议)数据包的延迟梯度(delayedgradient)累计值来判断出当前网络传输的状况、进而对vilte视频通话进行拥塞控制的方法。
背景技术:
vilte视频通话系统包含视频发送端和视频接收端。视频发送端通过摄像头采集原始视频,并通过视频编码器将原始视频编码为利于网络传输的压缩视频流格式(如h.264),然后再将压缩视频流打包为rtp数据包并通过移动通信网络发送出去。视频接收端通过移动通信网络接收到rtp数据包后,从rtp数据包中提取出压缩视频流,再通过视频解码器进行解码并最终在屏幕上进行显示。
rtp数据包在移动通信网络中传输时,当rtp数据包的传输比特率高于移动通信网络所能提供的信道容量(channelcapacity)时,就会发生rtp数据包的“拥塞”(congestion)现象,导致rtp数据包被缓存在通信链路的节点中,引入较大的传输延迟(transmissiondelay)。当“拥塞”严重到一定程度,就会导致rtp数据包在网络传输中被丢弃,造成接收端视频质量的大幅下降。
在vilte视频通话过程中,为了减少网络拥塞、避免丢包,就需要一种拥塞控制算法来对移动通信网络的拥塞状态进行实时探测,并利用它来控制rtp数据包的传输。当探测到网络拥塞比较严重时,视频发送端就要降低视频编码码率以降低rtp数据流的传输比特率,进而缓解网络拥塞,以减少延迟避免丢包。当探测到网络拥塞比较轻微时,视频发送端就可以提高视频编码码率,以提升视频流的编码质量。
由于vilte视频通话采用移动通信网络传输rtp数据流,导致其拥塞控制算法的设计具有如下难点。第一,移动通信网络链路复杂,节点众多,缺少全局性的客观参数来表征整条链路的网络传输状态。这就要求拥塞控制算法另辟蹊径,能够化繁为简,从更高的维度上对网络链路进行建模,找到更精简的算子(operator)参数来表征网络的传输状态。第二,移动通信网络通话带宽的易变性、通信节点排队延迟以及通话终端的移动导致的通信链路变化,造成了移动通信网络状态的“瞬变性”。这就要求拥塞控制算法具备对拥塞状态走势的预测能力,能够在严重拥塞发生之前进行及时预测和应对。第三,rtp协议自身缺少对网络拥塞控制算法的标准定义。为了保证兼容性和易用性,就要求算法尽量在不修改原有的rtp协议的前提下进行拥塞控制。
目前已有一些算法用于实现rtp网络拥塞控制,比如gcc(googlecongestioncontrl,谷歌拥塞控制)算法、nada(networkassisteddynamicadaptation,网络辅助动态适应)算法、scream(self-clockedrateadaptationformultimedia,多媒体自时钟速率适应)算法等。但是这些算法大多对标准的rtp和/或rtcp(rtpcontrolprotocol,rtp控制协议)协议进行了修改和增补,而这些修改目前还没有被3gpp正式采用。由于这些算法的实现依赖于“非标准的”rtp和/或rtcp协议,导致采用这些算法的终端在和使用标准rtp和/或rtcp协议的终端通信时,进行拥塞控制的效果会大幅下降甚至无法使用,兼容性较差。
技术实现要素:
本申请所要解决的技术问题是在不修改标准rtp和rtcp协议的前提下,对网络拥塞状况进行实时预测,并据此控制rtp数据的传输。
为解决上述技术问题,本申请提出了一种基于延迟梯度累积的vilte视频通话拥塞控制方法,包括如下步骤。步骤s10:启动vilte视频通话的数据传输,视频接收端在接收到每一个rtp数据包之后,计算出延迟梯度的累计值
进一步地,从第1个数据包到第n个数据包,延迟梯度的累计值
进一步地,所述步骤s20采用的是基于丢包的拥塞控制策略;当检测到丢包发生时,使用实时的实际数据包接收码率来评估网络信道容量并对数据传输率进行调整,使网络传输恢复到正常状态。这是步骤s20的整体策略的说明。
进一步地,所述步骤s30采用的是基于延迟的拥塞控制策略;在每一个数据包到达时计算出到目前为止的延迟梯度累计值,并与丢包发生时的丢包延迟阈值进行比较,探测出网络拥塞状态并对数据传输率进行调整,以缓解拥塞并避免丢包的发生。这是步骤s30的整体策略的说明。
进一步地,所述步骤s30进一步包括如下步骤。步骤s31:利用
进一步地,所述步骤s31中,
优选地,α=0.8;β=0.5。这是两个参数的优选取值。
进一步地,所述步骤s32中,基于延迟的拥塞控制策略总是在
进一步地,所述步骤s33中,当网络无拥塞时,视频发送端对编码比特率的调整为同时满足
本申请还提出了一种基于延迟梯度累积的vilte视频通话拥塞控制系统,包括计算单元、lbcc控制单元和dbcc控制单元。所述计算单元在接收到每一个rtp数据包之后,计算出延迟梯度的累计值
相对于已有的拥塞控制算法,本申请的技术优势在于以下几方面。第一,可以实时探测移动通信网络的拥塞状态,并对即将可能发生的丢包进行提前预测,进而在丢包发生前对网络数据传输进行控制,达到避免丢包发生的目的。第二,网络模型抽象简单,模型算子精简可调,使用者可以根据实际应用中对视频数据的延迟、质量等要求来对算法算子进行适配调整。第三,基于标准的rtp和rtcp协议,不需要对rtp或rtcp协议进行修改,可以适配所有采用标准rtp和/或rtcp协议的移动通信设备,兼容性和移植性好。
附图说明
图1是本申请构建的移动通信网络传输模型的示意图。
图2是延迟梯度为正值的示意图。
图3是延迟梯度为负值的示意图。
图4是本申请提出的基于延迟梯度累积的vilte视频通话拥塞控制方法的流程图。
图5是图4中的步骤s30的详细流程图。
图6是图4所示方法的整体过程的曲线示意图。
图7是申请提出的基于延迟梯度累积的vilte视频通话拥塞控制系统的结构示意图。
图中附图标记说明:10为计算单元;20为lbcc控制单元;30为dbcc控制单元。
具体实施方式
本申请提出了一种基于延迟梯度累积的vilte视频通话拥塞控制方法,其主要原理是:通过计算rtp传输丢包时延迟梯度的累计值,推算出rtp包在网络传输队列中的最大延时,并以这个延时作为阈值和后续每个rtp包到达时的延迟梯度累计值进行比较,以判断出当前网络传输队列的状态,进而对视频传输比特率进行调整;在延时较高时降低比特率以避免网络传输队列溢出(丢包),在延时较低时提高比特率以提升视频编码质量。
为了实现这个目的,首先需要对网络传输链路进行建模。为了隐藏移动通信链路的复杂性,本申请将整个移动通信链路作为一个整体来进行考量。请参阅图1,这是本申请所构建的移动通信网络传输模型。发送端(sender)的数据通过网络(network)到达接收端(receiver),当发送端产生数据的速度超过网络传输带宽时,数据包就会在网络传输队列中进行缓存。这些缓存,就构成了数据包在网络侧的延迟,它们所导致的网络传输性能下降的状态就是网络拥塞。而丢包则是当网络侧的缓存满了以后,新的数据包无法加入到缓存中,便只好丢弃。可见,在网络传输状况的检测上,使用延迟信息比使用丢包信息能够更早地发现网络拥塞。实际上,延迟信息表征了网络的“瞬时”拥塞状态(transientcongestion),而丢包信息表征了网络的“持续”拥塞状态(persistencecongestion)。本申请就是利用延迟梯度信息来表征网络的拥堵程度,在发生丢包之前将网络拥塞及时地探测出来,并采取相应的手段来减少拥塞并避免丢包。
在图1所示的移动通信网络传输模型图中,有一些关键变量,其含义如下。
请参阅图2和图3,它们展示了数据包传输的延迟梯度。其中变量含义如下。
这样,对于第i个数据包
那么从第1个数据包到第n个数据包,延迟梯度的累计值
公式二中,
当第j 1个数据包发生丢包时(假设第1个至第j个数据包未丢包),表明网络传输队列达到最大容量,有
当第k(k>j 1)个数据包到达时,有公式七。
若
可见,通过监测第k个数据包的延迟梯度的累计值
在实践中,本申请所提出的的基于延迟梯度累积的拥塞控制方法会采用两个策略对网络拥塞进行探测和调整。
其中一个是基于丢包的拥塞控制策略(adgdccmloss-basedcongestioncontrol,adgdccm-lbcc),主要用于对网络“持续”拥塞状态的调整。当检测到丢包发生时,会使用实时的实际数据包接收码率来评估网络信道容量并对数据传输率进行调整,使网络传输恢复到正常状态。需要注意的是,基于丢包的拥塞控制是一种滞后的调整策略,但是在adgdccm的实现中,丢包的出现是必须的(至少需要出现一次丢包),adgdccm需要利用丢包的发生来获取丢包延迟阈值供adgdccm-dbcc使用并切换到基于延迟的拥塞控制,从而在后续的传输过程中能够及时预测出网络拥塞并及时调整,以避免丢包的发生。
另一个是基于延迟的拥塞控制策略(adgdccmdelay-basedcongestioncontrol,adgdccm-dbcc),主要用于对网络“瞬时”拥塞状态的调整。在每一个数据包到达时,adgdccm会计算出到目前为止的延迟梯度累计值,并与丢包发生时的丢包延迟阈值进行比较,探测出网络拥塞状态并对数据传输率进行调整,以缓解拥塞并避免丢包的发生。
需要注意的是,在现有的rtp协议中,rtp数据包中并没有字段来直接描述数据包的发送时间,只能由rtp时间戳(timestamp)来替代。对于视频帧来说,一般是将一帧分割成多个rtp数据包来传输,属于同一帧的rtp数据包的rtp时间戳都是相同的,但是这些rtp数据包并不一定在同一时刻被发出。因而在计算视频数据包的延迟梯度时,仅使用每一帧的第一个rtp数据包的rtp时间戳信息来参与计算,准确度是最高的。从实验结果来看,使用rtp时间戳来代替rtp数据包的发送时间可以取得预期的效果。
请参阅图4,本申请提出的基于延迟梯度累积的vilte视频通话拥塞控制方法包括如下步骤。
步骤s10:启动vilte视频通话的数据传输,视频接收端在接收到每一个rtp数据包之后,计算出延迟梯度的累计值
这一步是adgdccm未激活阶段,adgdccm的两个拥塞控制策略并没有被激活。
步骤s20:当视频接收端检测到vilte视频通话的数据传输第一次出现丢包,就按照公式九估计当前的网络传输信道容量
这一步是基于丢包的拥塞控制策略(adgdccm-lbcc)拥塞控制阶段。
步骤s30:当视频接收端检测到vilte视频通话的数据传输不再出现丢包,视频接收端将当前数据包的延迟梯度累积值和延迟阈值进行比较,判断出网络的拥塞状态,然后对数据传输速率进行调整以预防丢包。直至视频接收端检测到vilte视频通话的数据传输再次出现丢包,则回到步骤s20。
这一步是基于延迟的拥塞控制策略(adgdccm-dbcc)拥塞控制阶段。
步骤s40:重复步骤s20至步骤s30,直至vilte视频通话的数据传输结束。
请参阅图5和图6,所述步骤s30采用adgdccm-dbcc具体包括如下步骤。图6中的横坐标为时间,纵坐标为延迟梯度累计值。
步骤s31:利用
在
在根据
步骤s32:自
上一段描述的是adbdccm-dbcc的工作原理,adgdccm-dbcc总是在
步骤s33:根据评估的网络拥塞状态,对数据传输速率进行调整以预防丢包。视频接收端通过adgdccm-dbcc评估出当前网络的状态后,通过发送rtcp的tmmbr消息来对视频发送端的视频编码码率进行调整。令
请参阅图7,本申请提出的基于延迟梯度累积的vilte视频通话拥塞控制系统包括计算单元10、lbcc控制单元20和dbcc控制单元30。
所述计算单元10在接收到每一个rtp数据包之后,计算出延迟梯度的累计值
所述lbcc控制单元20用来在检测到vilte视频通话的数据传输每一次出现丢包后,按照公式九估计当前的网络传输信道容量
所述dbcc控制单元30用来在检测到vilte视频通话的数据传输不再出现丢包后,将当前数据包的延迟梯度累积值和延迟阈值进行比较,判断出网络的拥塞状态,然后对数据传输速率进行调整以预防丢包。如果所述dbcc控制单元30检测到vilte视频通话的数据传输再次出现丢包,则交由所述lbcc控制单元20处理。
根据检测到vilte视频通话的数据传输是否出现丢包,分别由所述lbcc控制单元20、所述dbcc控制单元30进行处理,直至vilte视频通话的数据传输结束。
本申请所提出adgdccm方法以及adgdccm-lbcc控制策略、adgdccm-dbcc控制策略已有代码实现并运用于实际产品中。经实测检验,可以很好地对vilte视频通话过程中的网络拥塞进行评估和预测,达到降低网络延迟、避免丢包发生和提升视频质量的目的,满足设计预期。
以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
1.一种基于延迟梯度累积的vilte视频通话拥塞控制方法,其特征是,包括如下步骤;
步骤s10:启动vilte视频通话的数据传输,视频接收端在接收到每一个rtp数据包之后,计算出延迟梯度的累计值
步骤s20:当视频接收端检测到vilte视频通话的数据传输第一次出现丢包,就计算当前的网络传输信道容量
步骤s30:当视频接收端检测到vilte视频通话的数据传输不再出现丢包,视频接收端将当前数据包的延迟梯度累积值和延迟阈值进行比较,判断出网络的拥塞状态,然后对数据传输速率进行调整;直至视频接收端检测到vilte视频通话的数据传输再次出现丢包,则回到步骤s20;
步骤s40:重复步骤s20至步骤s30,直至vilte视频通话的数据传输结束。
2.根据权利要求1所述的基于延迟梯度累积的vilte视频通话拥塞控制方法,其特征是,从第1个数据包到第n个数据包,延迟梯度的累计值
3.根据权利要求1所述的基于延迟梯度累积的vilte视频通话拥塞控制方法,其特征是,所述步骤s20采用的是基于丢包的拥塞控制策略;当检测到丢包发生时,使用实时的实际数据包接收码率来评估网络信道容量并对数据传输率进行调整,使网络传输恢复到正常状态。
4.根据权利要求1所述的基于延迟梯度累积的vilte视频通话拥塞控制方法,其特征是,所述步骤s30采用的是基于延迟的拥塞控制策略;在每一个数据包到达时计算出到目前为止的延迟梯度累计值,并与丢包发生时的丢包延迟阈值进行比较,探测出网络拥塞状态并对数据传输率进行调整,以缓解拥塞并避免丢包的发生。
5.根据权利要求1所述的基于延迟梯度累积的vilte视频通话拥塞控制方法,其特征是,所述步骤s30进一步包括如下步骤;
步骤s31:利用
步骤s32:自
若
若
若
步骤s33:根据评估的网络拥塞状态,视频接收端通过发送rtcp的tmmbr消息来对视频发送端的视频编码码率进行调整以预防丢包;
当网络无拥塞时,视频接收端通知视频发送端提高视频编码码率和rtp传输数据率;
当网络拥塞严重时,视频接收端通知视频发送端降低视频编码码率rtp传输数据率;
当网络拥塞处于正常状态时,视频发送端维持当前的视频编码码率和rtp传输数据率不变。
6.根据权利要求5所述的基于延迟梯度累积的vilte视频通话拥塞控制方法,其特征是,所述步骤s31中,
7.根据权利要求6所述的基于延迟梯度累积的vilte视频通话拥塞控制方法,其特征是,α=0.8;β=0.5。
8.根据权利要求5所述的基于延迟梯度累积的vilte视频通话拥塞控制方法,其特征是,所述步骤s32中,基于延迟的拥塞控制策略总是在
9.根据权利要求5所述的基于延迟梯度累积的vilte视频通话拥塞控制方法,其特征是,所述步骤s33中,当网络无拥塞时,视频发送端对编码比特率的调整为同时满足
当网络拥塞严重时,视频发送端对编码比特率的调整为
当网络拥塞处于正常状态时,视频发送端对编码比特率的调整为
其中,
10.一种基于延迟梯度累积的vilte视频通话拥塞控制系统,其特征是,包括计算单元、lbcc控制单元和dbcc控制单元;
所述计算单元在接收到每一个rtp数据包之后,计算出延迟梯度的累计值
所述lbcc控制单元用来在检测到vilte视频通话的数据传输每一次出现丢包后,计算当前的网络传输信道容量
所述dbcc控制单元用来在检测到vilte视频通话的数据传输不再出现丢包后,将当前数据包的延迟梯度累积值和延迟阈值进行比较,判断出网络的拥塞状态,然后对数据传输速率进行调整以预防丢包;如果所述dbcc控制单元检测到vilte视频通话的数据传输再次出现丢包,则交由所述lbcc控制单元处理;
根据检测到vilte视频通话的数据传输是否出现丢包,分别由所述lbcc控制单元、所述dbcc控制单元处理,直至vilte视频通话的数据传输结束。
技术总结