一种基于rtp的视频流传输丢包重传方法、设备及存储设备

文档序号:1642188 发布日期:2019-12-20 浏览:21次 >En<

阅读说明:本技术 一种基于rtp的视频流传输丢包重传方法、设备及存储设备 (Video stream transmission packet loss retransmission method, device and storage device based on RTP ) 是由 程家明 王军明 孔繁东 周志祥 于 2019-08-07 设计创作,主要内容包括:本发明公开了一种基于RTP的视频流传输丢包重传方法、设备及存储设备。其方法具体步骤如下:发送终端和接收终端时间参数初始化;发送终端响应重传请求向接收终端发送数据包;接收终端检测是否接收完整,若完整,则重传成功;若不完整,则接收终端根据时间参数作出数据包有效性、重传频率有效性的判断;若数据包无效或重传频率无效,则不进行下一次重传请求;反之,接收终端进行下一次重传请求;发送终端根据时间参数判断是否响应该重传请求;若响应重传请求,则发送终端再次向接收终端发送数据包;否则,不响应重传请求。本发明的有益效果是:实现在高并发路数(至少64路)和高丢包率(30%以上)的情况下,实现视频流的流畅播放。(The invention discloses a video stream transmission packet loss retransmission method, equipment and storage equipment based on RTP. The method comprises the following specific steps: initializing time parameters of a sending terminal and a receiving terminal; the sending terminal responds to the retransmission request and sends a data packet to the receiving terminal; the receiving terminal detects whether the receiving is complete, if so, the retransmission is successful; if the data packet is not complete, the receiving terminal judges the validity of the data packet and the validity of the retransmission frequency according to the time parameter; if the data packet is invalid or the retransmission frequency is invalid, the next retransmission request is not carried out; otherwise, the receiving terminal carries out the next retransmission request; the sending terminal judges whether to respond to the retransmission request according to the time parameter; if the retransmission request is responded, the sending terminal sends the data packet to the receiving terminal again; otherwise, no retransmission request is responded. The invention has the beneficial effects that: the smooth playing of the video stream is realized under the conditions of high concurrent path number (at least 64 paths) and high packet loss rate (more than 30%).)

一种基于RTP的视频流传输丢包重传方法、设备及存储设备

技术领域

本发明涉及视频通信领域,尤其涉及一种基于RTP的视频流传输丢包重传方法、设备及存储设备。

背景技术

目前的视频传输由于对实时性要求较高,所以一般基于UDP协议进行传输,而UDP是一种非面向连接的不可靠协议,在数据包传输的过程中容易存在丢包的现象,特别是在网络状况较差的情况下,丢包比较严重。这样就会在收端解码时出现大量的花屏卡段现象,严重影响音视频的播放质量。

为解决此问题,在传输层上做改善是一种常见的解决方案。具体就是采用丢包重传的方式,收端在收到不连续的数据包时,会主动向发送方请求尚未收到的缺失包,发送方收到重传请求后,会向接收方重新发送请求的包(如图1所示)。此方案可解决部分花屏卡顿的问题,但仍会造成一定的视频延时,且当网络拥塞较为严重时,重复发送大量的数据包反而会使网络状况更加恶化,使得更多的数据包不可达,形成恶性循环。为此,接收方需要较好地控制请求的频率,而发送方也要较好地控制好重发包的频率。

webrtc是一个可支持网页浏览器进行实时语音对话和视频对话的开源接口,其媒体传输方面也有丢包重传的部分,其发端针对每一个请求的序号,每隔一个rtt(Round-Trip Time,往返时延)时间作一次检查重发,从而避免过于频繁地重传,在其收端,对每个需要发端重传的数据包,大概一个rtt时间再进行一次重传请求,并且同时维护缺失包列表和关键帧的包列表,对超出一定重传次数和过老的包,放弃重传请求。

对于媒体路数只有几路,双向互传媒体流的情况下,这种做法比较理想,但对于一个高性能视频转发服务器而言,收端过多的处理过程会对延时造成较大的影响,且使用重传的次数作为阈值很容易造成过早或过晚放弃重传的情况。所以webrtc并不能很好地应用于视频转发服务器。

为解决上述问题,本发明提出一种基于时间阈值的请求包队列模式,使收端能够合理地丢弃一些过时的缺失包,减小网络压力的同时,能最大限度地进行缺失包的请求,使得即使在网络状况恶劣的情况下,也能保证视频质量的基本可接受,避免画面大卡顿及卡停情况的出现。

发明内容

本发明的目的是提出一种基于RTP的视频流传输丢包重传方法、设备及存储设备。一种基于RTP的视频流传输丢包重传方法,包括以下步骤:

S101:根据实际网络带宽情况及服务器情况,对发送终端和接收终端中的时间参数进行初始化;

所述发送终端用于发送数据包至接收终端,所述接收终端用于接收所述数据包,并将丢失的数据包添加至重传队列,生成重传请求,进而将所述重传请求发送至发送终端;所述重传队列,由丢失的数据包组成;

S102:发送终端根据重传队列向接收终端发送上一次数据传输过程中丢失的数据包;

S103:接收终端接收所述丢失的数据包,并判断是否接收完整?若完整,则表明重传成功,并到步骤S106;若不完整,则表示接收失败,认为该数据包再次丢失,为丢失数据包,进入步骤S104;

S104:接收终端将所述丢失的数据包添加至重传队列,并清除重传队列中过旧的数据包;

所述过旧的数据包,由重传队列的长度定义;所述重传队列长度根据服务器情况不同而不同,为预设值;其中,清除重传队列中过旧的数据包的具体方法如下:

假定重传队列长度为L,新添加丢失的数据包至重传队列后,判断重传队列长度是否超过L,若是,则位于重传队列末尾的数据包为过旧数据包,接收终端对过旧数据包进行丢弃,若否,则不需要对重传队列进行清除;

S105:接收终端根据所述时间参数判断重传频率是否有效?若是,则进入步骤S106;否则进入步骤S107;

S106:接收终端进行下一次重传请求;发送终端根据时间参数判断是否响应该重传请求?若是,则返回步骤S102;否则,到步骤S107;

S107:重传程序结束。

进一步地,在步骤S101中,根据实际网络带宽情况及服务器情况,对发送终端和接收终端中的时间参数进行初始化,具体步骤如下:

在接收终端设定扫描周期T0和时间阈值T1;对第一次丢失的数据包,记录其第一次丢失的时间ts,并将其添加至重传队列;在发送终端设定响应重传请求的时间阈值的初值为avg_rtt_new;其中,avg_rtt_new的计算公式如下:

avg_rtt_new=avg_rtt_pre*0.7+avr_rtt_list*0.3

上式中,avg_rtt_list为最近5s内实际往返时延rtt值的平均值;avg_rtt_new为当前计算的最新平均值;avg_rtt_pre为avg_rtt_new上一次的值,其初值为avg_rtt_list;

所述的扫描周期T0,用于定时对重传队列进行扫描,其值为根据实际网络带宽情况及服务器情况的预设值;所述时间阈值T1,根据视频传输的延时要求不同而不同,为预设值。

进一步地,在步骤S105中,接收终端根据所述时间参数判断重传频率是否有效的,具体步骤如下:

S201:接收终端记录数据包当前丢失的时间tc

S202:接收终端根据重传队列进行下一次重传请求,并记录当前重传请求时间te

S203:判断条件te-tc>T0是否成立?若是,则重传频率有效,并到步骤S204;否则,重传频率无效;

S204:判断程序结束。

进一步地,在步骤S106中,发送终端根据时间参数判断是否响应该重传请求,具体步骤如下:

S301:判断条件te-ts>rtt&&te-ts<T1?若是,则认为数据包可以进行再次重传,符合重传要求,将其保留至重传队列,并到步骤S302;否则,不符合重传要求,将其清除出重传队列,并到步骤S302;

S302:接收终端发出重传请求,并记录当前重传请求的时间te′;发送终端判断条件te′-te>avg_rtt_new是否成立?若是,则响应重传请求;否则,不响应重传请求。

进一步地,所述存储设备存储指令及数据用于实现权利要求1~4所述的任意一种基于RTP的视频流传输丢包重传方法。

一种于RTP的视频流传输丢包重传设备,其特征在于:包括:处理器及存储设备;所述处理器加载并执行存储设备中的指令及数据用于实现权利要求1~4所述的任意一种基于RTP的视频流传输丢包重传方法。

本发明提供的技术方案带来的有益效果是:实现在高并发路数(至少64路)和高丢包率(30%以上)的情况下,实现视频流的流畅播放。

附图说明

下面将结合附图及实例对本发明作进一步说明,附图中:

图1是本发明实施例中一种基于RTP的视频流传输丢包重传方法的流程图;

图2是本发明实施例中丢包重传示意图;

图3是本发明实施例中硬件设备工作的示意图。

具体实施方式

为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。

本发明的实施例提供了一种基于RTP的视频流传输丢包重传方法、设备及存储设备。

请参考图1,图1是本发明实施例中一种基于RTP的视频流传输丢包重传方法、设备及存储设备的流程图,以一个丢失的数据包为例,具体来说明本技术方案,包括以下步骤:

本发明的目的是提出一种属于基于RTP的视频流传输丢包重传方法、设备及存储设备。一种属于基于RTP的视频流传输丢包重传方法,包括以下步骤:

S101:根据实际网络带宽情况及服务器情况,对发送终端和接收终端中的时间参数进行初始化;

所述发送终端用于发送数据包至接收终端,所述接收终端用于接收所述数据包,并将丢失的数据包添加至重传队列,生成重传请求,进而将所述重传请求发送至发送终端;所述重传队列,由丢失的数据包组成;

S102:发送终端响根据重传队列向接收终端发送上一次丢失的数据包;

S103:接收终端接收所述丢失的数据包,并判断是否接收完整?若完整,则表明重传成功,并到步骤S106;若不完整,则表示接收失败,认为该数据包再次丢失,为丢失数据包,进入步骤S104;

S104:接收终端将所述丢失的数据包添加至重传队列,并清除重传队列中过旧的数据包,以此得到更新后的重传队列;

所述过旧的数据包,由重传队列的长度定义;所述重传队列长度根据服务器情况不同而不同,为预设值;假定重传队列长度为L,新添加丢失的数据包至重传队列后,判断重传队列长度是否超过L,若是,则位于重传队列最末尾的数据包为过旧数据包,接收终端将依次对过旧数据包进行丢弃,若否,则不需要对重传队列进行清除;

S105:接收终端根据所述时间参数判断重传频率是否有效?若是,则进入步骤S106;否则进入步骤S107;

S106:接收终端进行下一次重传请求;发送终端根据时间参数判断是否响应该重传请求?若是,则返回步骤S102;否则,到步骤S107;

S107:重传程序结束。

在步骤S101中,根据实际网络带宽情况及服务器情况,对发送终端和接收终端中的时间参数进行初始化,具体步骤如下:

在接收终端设定扫描周期T0和时间阈值T1;对第一次丢失的数据包,记录其第一次丢失的时间ts,并将其添加至重传队列;在发送终端设定响应重传请求的时间阈值的初值为avg_rtt_new;其中,avg_rtt_new的计算公式如下:

avg_rtt_new=avg_rtt_pre*0.7+avr_rtt_list*0.3

上式中,avg_rtt_list为最近5s内实际往返时延rtt值的平均值;avg_rtt_new为当前计算的最新平均值;avg_rtt_pre为avg_rtt_new上一次的值,其初值为avg_rtt_list;

所述的扫描周期T0,用于定时对重传队列进行扫描,其值为根据实际网络带宽情况及服务器情况的预设值;所述时间阈值T1,根据视频传输的延时要求不同而不同,为预设值。

在步骤S105中,接收终端根据所述时间参数判断重传频率是否有效的,具体步骤如下:

S201:接收终端记录数据包当前丢失的时间tc

S202:接收终端根据更新后的重传队列进行下一次重传请求,并记录当前重传请求时间te

S203:判断条件te-tc>T0是否成立?若是,则重传频率有效,并到步骤S204;否则,重传频率无效;

S204:判断程序结束。

在步骤S106中,发送终端根据时间参数判断是否响应该重传请求,具体步骤如下:

S301:判断条件te-ts>rtt&&te-ts<T1?若是,则认为数据包可以进行再次重传,符合重传要求,将其保留至重传队列,并到步骤S302;否则,不符合重传要求,将其清除出重传队列,以对重传队列进行再次更新;

S302:接收终端发出重传请求,并记录当前重传请求的时间te′;发送终端判断条件te′-te>avg_rtt_new是否成立?若是,则响应重传请求;否则,不响应重传请求。

一种存储设备,所述存储设备存储指令及数据用于实现权利要求1~4所述的任意一种基于RTP的视频流传输丢包重传方法。

一种于RTP的视频流传输丢包重传设备,包括:处理器及存储设备;所述处理器加载并执行存储设备中的指令及数据用于实现权利要求1~4所述的任意一种基于RTP的视频流传输丢包重传方法。

请参考图2,图2是丢包重传示意图。在图2中,总共有3个队列,分别为接收队列、重传队列、发送队列;其中重传队列,主要由所需要重传的数据包组成,发送终端根据最新的重传队列中的数据包,来向接收终端发送,因此,重传队列中的数据包,在每次进行重传请求之前,都会进行更新,扫描,判断,确保重传队列中没有无效数据包,以达到缩小重传队列规模,降低带宽占用资源的目的。

请参见图3,图3是本发明实施例的硬件设备工作示意图,所述硬件设备具体包括:一种基于RTP的视频流传输丢包重传设备401、处理器402及存储设备403。

一种基于RTP的视频流传输丢包重传设备401:所述一种基于RTP的视频流传输丢包重传设备401实现所述一种基于RTP的视频流传输丢包重传方法。

处理器402:所述处理器402加载并执行所述存储设备403中的指令及数据用于实现所述一种基于RTP的视频流传输丢包重传方法。

存储设备403:所述存储设备403存储指令及数据;所述存储设备403用于实现所述一种基于RTP的视频流传输丢包重传方法。

本发明的有益效果是:实现在高并发路数(至少64路)和高丢包率(30%以上)的情况下,实现视频流的流畅播放。

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

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于带宽趋势的带宽复用方法和系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类