一种低延迟实时视频流媒体无线传输的丢帧控制方法与流程

文档序号:11732341阅读:3096来源:国知局
一种低延迟实时视频流媒体无线传输的丢帧控制方法与流程

本发明涉及无线网络多媒体数据传输技术领域,尤其涉及一种低延迟实时视频流媒体无线传输的丢帧控制方法。



背景技术:

各种移动直播、无线监控摄像头以及无线同屏应用蓬勃发展。上述的应用都涉及实时视频流媒体无线传输技术。其中视频的压缩编码方式通常采用h.264等算法,视频流媒体的服务器端与客户端通过无线网络连接。

与有线网络相比,无线网络状况稳定性较差,具有带宽受限,无线信道时变等特点,终端的移动性也会导致无线传输速率的波动;而基于无线局域网的视频流媒体无线传输则容易受到同频干扰影响。这些因素都容易导致实时视频无线传输的时延增加、时延抖动、丢包率增加等情况,并造成无线网络拥塞。表现为明显的数据传输延迟,服务器端与客户端的显示内容无法保持实时一致,出现显示不同步的现象,甚至在客户端出现卡顿和马赛克现象,无法保证实时视频无线传输的qos。

服务器端可以根据对无线网络状况的判断,主动丢弃部分延时过大的视频帧,保证视频传输的实时性,减少延迟和拥塞,以适应网络变化。传统的丢帧算法需要客户端向服务器端反馈接收端统计信息,从而估计无线网络状态。但是在发生网络拥塞时,反馈报文也会受到影响,在传输过程中产生延迟,所反馈的信息滞后,不能及时反映当前的网络状态。文献中也有方法采用缓冲队列长度估算新进入队列的视频帧的传输时延,再确定丢帧策略。但是缓冲队列出队列速率的累计估计误差会严重影响传输时延的估计。



技术实现要素:

为了克服现有技术存在的缺点与不足,本发明提供一种低延迟实时视频流媒体无线传输的丢帧控制方法,与队列尾部丢弃方法相比,本方法减小了虚拟传输时延估计的累计误差,且不依赖客户端反馈信息,可以控制无线视频流媒体传输中的时延。

为解决上述技术问题,本发明提供如下技术方案:一种低延迟实时视频流媒体无线传输的丢帧控制方法,包括如下步骤:

s1、通过服务器端的虚拟传输时延估计模块,对服务器端发送队列中的封包从头至尾扫描,并判断封包是否在设定的扫描范围内,若在,则对封包的虚拟传输时延进行计算;若否,则结束;

s2、对步骤s1的虚拟传输时延与预设的丢帧时延阈值进行比较,若虚拟传输时延大于预设的丢帧时延阈值,则进入下一步骤s3,若否则返回步骤s1;

s3、对虚拟传输时延大于丢帧时延阈值的封包,进行按策略丢弃。

进一步地,所述步骤s1中的虚拟传输时延包括队列停留时延、队列发送时延与传输时延三部分,其计算方式为:

vir_trans_time=wait_delay+dq_delay+trans_delay

式中,vir_trans_time表示虚拟传输时延,wait_delay表示队列停留时延,dq_delay表示队列发送时延,trans_delay表示传输时延。

进一步地,所述队列停留时延wait_delay的计算方法为:

wait_delay=current_time-enqueue_time

其中,current_time为扫描该封包时的当前时间,enqueue_time为封包入队列时间。

进一步地,所述队列发送时延dq_delay,其具体计算方式为:

计算当前发送队列的出队列速率dq_rate,如下所示:

dq_rate=dq_count/dq_int

其中,dq_count为本次计算时间间隔内的出队列数据量总和,dq_int为计算的时间间隔;

平滑当前发送队列的出队列速率dq_rate,计算队列平均出队列速率avg_dqrate:

avg_dqrate=ε×avg_dqrate+(1-ε)×dq_rate

式中,ε表示平滑因子;

则封包的队列发送时延dq_delay计算方法如下:

dq_delay=qsize/avg_dqrate

式中,qsize表示队列中该封包与该封包之前的所有封包的总数据量大小。

进一步地,所述传输时延trans_delay通过对封包的发送进行监控,测量上一个封包出队列后成功发送或最终被丢弃所需的时间,作为当前封包的传输时延trans_delay。

进一步地,所述步骤s1中设定的扫描范围,其由参数α决定;所述参数α为0到1之间的一个数值;队列扫描范围为α*队列长度,参数α为一个预设常数或者根据网络情况进行动态改变。

进一步地,所述步骤s3中进行按策略丢弃,其丢弃策略包括:

在队列的扫描范围内,若丢弃的封包属于h.264编码组gop中的i帧,则丢弃同一个gop中的所有帧;若丢弃的封包属于h.264编码组gop中的p帧,则需要丢弃同一gop中依赖该p帧的其他p帧与b帧。

进一步地,所述步骤s3中进行按策略丢弃,其丢弃策略包括:

若丢弃的封包属于h.264编码组gop中的i帧,则保留此i帧,从该帧位置开始向后遍历队列中的同一个gop中的封包,并丢弃第1个找到的b帧的所有封包;若无法找到b帧封包,则丢弃第1个找到的p帧的所有封包;若仍无法找到,则从该帧位置开始向前遍历队列中的前一个gop中的封包,丢弃第1个找到的b帧的所有封包;若无法找到b帧封包,则丢弃第1个找到的p帧的所有封包;若丢弃的封包属于h.264编码组gop中的p帧,则暂时保留此p帧,从该帧位置开始向后遍历队列中的同一个gop中的封包,并丢弃第1个找到的b帧的所有封包;若无法找到b帧封包,则从该帧位置开始向前遍历队列中的同一个gop中的封包,丢弃第1个找到的b帧的所有封包;若仍无法找到,丢弃当前p帧的所有封包;若当前封包属于b帧,则直接丢弃该帧所有封包。

采用上述技术方案后,本发明至少具有如下有益效果:

1、与队列尾部丢弃方法相比,本方法可以减小虚拟传输时延估计的累计误差;

2、本方法的实现不依赖客户端反馈信息;

3、本方法可以控制无线视频流媒体传输中的时延。

附图说明

图1是本发明一种低延迟实时视频流媒体无线传输的丢帧控制方法的步骤流程图;

图2是本发明一种低延迟实时视频流媒体无线传输的丢帧控制方法中使用丢帧策略(策略二)的步骤流程图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本申请作进一步详细说明。

如图1所示,本发明提出的一种低延迟实时视频流媒体无线传输的丢帧控制方法,其包括了以下步骤描述。

步骤一:通过服务器端的虚拟传输时延估计模块,对服务器端发送队列中的封包从头至尾扫描,并判断封包是否在设定的扫描范围内,若在,则对封包的虚拟传输时延进行计算;若否,则结束。

虚拟传输时延包含队列停留时延、队列发送时延与传输时延三部分。

vir_trans_time=wait_delay+dq_delay+trans_delay

其中队列停留时延的计算方法为,当每个封包进入服务器端的发送队列时,记录系统的当前时间enqueue_time,当算法扫描发送队列中该封包时,记录系统的当前时间current_time,则队列停留时延wait_delay为:

wait_delay=current_time-enqueue_time

队列发送时延的计算方法为,初始化累计出队列的封包字节总数dq_count为0,当封包出队列时,记录系统的当前时间last_dequeue_time,dq_count累加该封包的字节数;当后续封包出队列时,dq_count累加出队封包的字节数;

当累计出队列的封包字节总数dq_count超过给定阈值dq_count_threshold时,记录系统的当前时间current_dequeue_time,计算时间间隔dq_int,如下所示:

dq_int=current_dequeue_time-last_dequeue_time

基于上述dq_int,估计当前发送队列的出队列速率,如下所示:

dq_rate=dq_count/dq_int

其中,dq_rate是计算得到当前队列的出队列速率,dq_count为本次计算时间间隔内的出队列数据量总和,dq_int为计算的时间间隔。

平滑当前发送队列的出队列速率,计算队列平均出队列速率avg_dqrate:

avg_dqrate=ε×avg_dqrate+(1-ε)×dq_rate

式中,avg_dqrate为平均出队列速率,ε为平滑因子。

则封包的队列发送时延dq_delay计算方法如下:

dq_delay=qsize/avg_dqrate

式中,qsize是队列中该封包与该封包之前的所有封包的总数据量大小。

传输时延trans_delay通过对封包的发送进行监控,测量上一个封包出队列后成功发送或最终被丢弃所需的时间,作为当前封包的传输时延。

步骤二:从头至尾扫描发送队列头中扫描范围内的封包,并根据步骤一中得到的每个封包的虚拟传输时延,与预设的丢帧时延阈值进行比较,按策略丢弃虚拟传输时延大于丢帧时延阈值的封包。

具体的实施方式为从头遍历队列,初始化封包计数器pkt_count为0,每遍历一个封包,计数器pkt_count加1,若当前pkt_count小于等于队列长度queue_length与比例因子α的乘积,则通过步骤一计算当前封包的虚拟传输时延vir_trans_time,与丢帧阈值drop_threshold比较。

若小于阈值,该封包被保留;若大于阈值,则按丢帧策略将封包移出队列。

本发明按照复杂度可以选用2种丢帧策略:

复杂度较低的丢帧策略一为,若丢弃的封包属于h.264编码组gop中的i帧,从该帧位置开始向后遍历队列,将发送队列中同一个gop的其他p帧、b帧封包一同移出队列。若丢弃的封包属于h.264编码组gop中的p帧,则将同一gop中依赖该p帧的其他p帧与b帧封包一同移出队列。

丢包策略二复杂度更高,但是可以更好地改善视频传输质量。若丢弃的封包属于h.264编码组gop中的i帧,则保留此i帧,从该帧位置开始向后遍历队列中的同一个gop中的封包,并丢弃第1个找到的b帧的所有封包;若无法找到b帧封包,则丢弃第1个找到的p帧的所有封包;若仍无法找到,则从该帧位置开始向前遍历队列中的前一个gop中的封包,丢弃第1个找到的b帧的所有封包;若无法找到b帧封包,则丢弃第1个找到的p帧的所有封包。若丢弃的封包属于h.264编码组gop中的p帧,则暂时保留此p帧,从该帧位置开始向后遍历队列中的同一个gop中的封包,并丢弃第1个找到的b帧的所有封包;若无法找到b帧封包,则从该帧位置开始向前遍历队列中的同一个gop中的封包,丢弃第1个找到的b帧的所有封包;若仍无法找到,丢弃当前p帧的所有封包;若当前封包属于b帧,直接丢弃该帧所有封包。

h.264gop中帧的优先级从高至低依次为i帧、p帧、b帧,即丢包策略二总是使用优先级最低的帧替代优先级高的帧。丢包策略二的具体流程如图2所示。

优选地,本方法可以通过设置合适参数α来控制算法的队头丢帧范围。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解的是,在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种等效的变化、修改、替换和变型,本发明的范围由所附权利要求及其等同范围限定。

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