基于流媒体丢包二次重传系统及其方法与流程

文档序号:12624496阅读:423来源:国知局
基于流媒体丢包二次重传系统及其方法与流程

本发明涉及流媒体播放领域,具体涉及一种基于流媒体丢包二次重传系统及其方法。



背景技术:

随着数字技术和互联网技术的发展,互联网多媒体的相关业务,如OTT(Over The Top TV,互联网电视)业务、IPTV(Interactive Personality TV,交互式网络电视)业务、数字广播业务等业务的应用日益兴旺的应用都。这些业务的共同特点就是使用互联网技术,把媒体流进行TS(Transport Stream,传输流)包封装,然后使用传输协议UDP(User Datagram Protocol,用户数据包协议)或者RTP(Real-time Transprot Protocol,实时传输协议)把数据包进行分发。但是UDP和RTP都不是可靠传输模式,网络传输过程中不可避免的会存在数据包丢失等情况。

现有技术中,利用RTP传输协议实现的ARQ(Automatic Repeat Requset,自动重传请求)功能可以解决这个问题,客户端向服务器发送重传请求,服务器会将接受到重传请求的数据包重新发给客户端。但是现有的普遍做法无法解决重传的数据包也丢失后引起的视频播放效果变差的问题。比如网络丢包率为2%的情况下,10000个数据包会丢失200个,这200个数据包重传后还是有2%概率丢失,即重传的数据包理论上还是会丢失4个。这样丢失的4个数据包还是会引起视频播放轻微卡顿或花屏,高码率的片源10000个数据包可能播放不超过10s,而10s有几次轻微卡顿或者花屏,给用户感觉播放不流畅,用户体验效果差。



技术实现要素:

针对现有技术中存在的缺陷,本发明的目的在于提供一种能降低网络丢包率的基于流媒体丢包二次重传系统。

为达到以上目的,本发明采取的技术方案是:一种基于流媒体丢包二次重传系统,包括控制模块以及与所述控制模块相连的数据接收模块、网络丢包检测模块、重传模块和视频播放模块,所述数据接收模块用于接收并保存数据包于链表中,以及判断所述数据包是否为重传数据包并对所述数据包进行排序处理;所述网络丢包检测模块用于解析所述数据包,并检测所述数据包的丢包情况;所述重传模块用于将丢失的数据包加入重传队列,并向服务器发起重传请求,且所述重传模块还将重传后还丢失的数据包加入重传队列,并向服务器发起二次重传请求;所述视频播放模块用于从所述链表中获取排序处理后的数据包进行播放。

在上述技术方案的基础上,所述网络丢包检测模块根据RTP协议解析所述数据包。

在上述技术方案的基础上,所述重传模块优先将重传后还丢失的数据包加入重传队列。

与此同时,本发明还提供一种基于上述流媒体丢包二次重传系统的流媒体丢包二次重传的方法,该方法能降低网络丢包率,提高用户的感知体验。

为达到以上目的,本发明采取的技术方案是:一种基于上述流媒体丢包二次重传系统的流媒体丢包二次重传的方法,该方法包括:

视频播放模块接收到播放命令后,数据接收模块接收数据包并创建保存数据包的链表,对所述链表进行初始化,且数据接收模块判断所述数据包是否为重传数据包并对所述数据包进行排序处理;

数据接收模块收到数据包后,网络丢包检测模块对数据包进行解析并检测是否丢包,若未丢包,数据接收模块对数据包进行排序处理后,由视频播放模块对数据包进行播放,若有丢包,找出并保存丢失的数据包,并设置丢包标示;

重传模块对丢失的数据包进行重传,并判断重传后是否还存在丢包现象,若还存在丢包现象,则进行二次重传;

数据接收模块对重传的数据包进行排序处理,使所述链表中的数据包保持连续,然后再由视频播放模块对排序处理后的数据包进行播放。

在上述技术方案的基础上,所述网络丢包检测模块检测是否存在丢包现象包括以下步骤;

S31:网络丢包检测模块对数据包进行解析;

S32:对解析出来的数据包序号进行保存,并计算出下一个数据包的序号;

S33:下一个数据包到达时,判断计算出来的数据包序号与解析的数据包序号是否相同;

S34:若S33的判断结果为否,则继续循环执行S31至S33,如果S33的判断结果为是,则数据包存在丢包现象,通过计算出来的数据包序号与解析出来的数据包序号计算出丢失的数据包的序号;

S35:保存丢失的数据包的序号,并设置丢包标示。

在上述技术方案的基础上,所述网络丢包检测模块根据RTP协议解析所述数据包。

在上述技术方案的基础上,所述重传模块重装丢失的数据包包括以下步骤;

S41:重传模块收到重传命令;

S42:获取需要重传的数据包序号,将需要重传的数据包加入到重传队列,并判断需要重传的数据包是否是重传后还丢失的数据包,如果是,则执行S43操作,如果不是则执行S44操作;

S43:把重传后还丢失的数据包加入到重传队列;

S44:根据重传队列中的信息,向服务器发起重传请求。

在上述技术方案的基础上,所述重传模块把重传后还丢失的数据包优先加入到重传队列。

在上述技术方案的基础上,所述数据接收模块判断所述数据包是否为重传数据包并对所述数据包进行排序处理包括以下步骤;

S51:创建保存数据包的链表,并对链表进行初始化;

S52:对收到的数据包进行判断,是否为重传的数据包;

S53:如果S52的判断结果为否,则把收到的数据包插入到链表尾;

S54:如果S52的判断结果为是,则根据解析到的数据包序号,对链表进行查询,把重传的数据包插入到链表中,使链表中的数据包序号保持连续。

与现有技术相比,本发明的优点在于:

本发明中基于流媒体丢包二次重传的方法利用RTP实时传输协议,客户端对收到的数据包进行解析,并计算下一个数据包的序号。根据RTP协议中数据包序号的连续性,开始对数据包进行实时监测,确认是否有丢包,如果存在丢包,记录丢失的数据包序号并设置丢包标志。

其次,客户端根据丢包情况决定是否需要发起重传流程,当达到重传门限时,客户端首先检查循环数组中是否存在已重传过的数据包还有丢失的情况,如果不存在,把需要重传的数据包序号加入到重传队列中;如果存在,把重传过还丢失的数据包序号优先加入到重传队列中,向服务器发起二次重传请求。然后,客户端对收到的重传数据包序号进行排序,并把排序好的数据包发给播放器进行播放。

从而在不修改ARQ重传协议的基础上,在客户端侧就能将网络丢包概率降低两个数量级,极大的降低了网络丢包率,提高用户的感知体验。

附图说明

图1为本发明中基于流媒体丢包二次重传系统的结构示意图;

图2为本发明中基于流媒体丢包二次重传的方法的流程示意图;

图3为本发明中网络丢包检测模块的监测流程图;

图4为本发明中重传模块的重传流程图;

图5为本发明中数据接收模块的处理流程图。

具体实施方式

以下结合附图及实施例对本发明作进一步详细说明。

参见图1所示,本发明提供一种基于流媒体丢包二次重传系统,其包括控制模块以及与控制模块相连的数据接收模块、网络丢包检测模块、重传模块和视频播放模块,控制模块控制数据接收模块、网络丢包检测模块、重传模块和视频播放模块协同工作。

数据接收模块用于接收并保存数据包于链表中,以及判断数据包是否为重传数据包并对数据包进行排序处理。本发明中重传模块优先将重传后还丢失的数据包加入重传队列。

网络丢包检测模块用于解析数据包,并检测数据包的丢包情况。本发明中的网络丢包检测模块根据RTP协议解析数据包。

重传模块用于将丢失的数据包加入重传队列,并向服务器发起重传请求,且重传模块还将重传后还丢失的数据包加入重传队列,并向服务器发起二次重传请求。

视频播放模块用于从链表中获取排序处理后的数据包进行播放。

参见图2所示,本发明还提供一种基于流媒体丢包二次重传的方法,该方法包括以下步骤:

S1:视频播放模块接收播放命令;

S2:数据接收模块开始对数据进行处理,即数据接收模块接收数据包并创建保存数据包的链表,对链表进行初始化,且数据接收模块还负责判断数据包是否为重传数据包并对数据包进行排序处理;

S3:数据接收模块收到数据包后,网络丢包检测模块对数据包进行解析并检测是否丢包,若未丢包,数据接收模块对数据包进行排序处理后,由视频播放模块对数据包进行播放,若有丢包,找出并保存丢失的数据包,并设置丢包标示;

参见图3所示,本发明中的网络丢包检测模块检测是否存在丢包现象包括以下步骤:

S31:网络丢包检测模块对数据包进行解析;

S32:对解析出来的数据包序号进行保存,并计算出下一个数据包的序号;

S33:下一个数据包到达时,判断计算出来的数据包序号与解析的数据包序号是否相同;

S34:若S33的判断结果为否,则继续循环执行S31至S33,如果S33的判断结果为是,则数据包存在丢包现象,通过计算出来的数据包序号与解析出来的数据包序号计算出丢失的数据包的序号;

S35:保存丢失的数据包的序号,并设置丢包标示。

S4:重传模块对丢失的数据包进行重传,并判断重传后是否还存在丢包现象,若还存在丢包现象,则进行二次重传;

参见图4所示,本发明中的重传模块重装丢失的数据包包括以下步骤:

S41:重传模块收到重传命令;

S42:获取需要重传的数据包序号,将需要重传的数据包加入到重传队列,并判断需要重传的数据包是否是重传后还丢失的数据包,如果是,则执行S43操作,如果不是则执行S44操作;

S43:把重传后还丢失的数据包加入到重传队列,本发明中重传模块把重传后还丢失的数据包优先加入到重传队列;

S44:根据重传队列中的信息,向服务器发起重传请求。

S5:数据接收模块对重传的数据包进行排序处理,使所述链表中的数据包保持连续;

参见图5所示,本发明中的数据接收模块判断数据包是否为重传数据包并对数据包进行排序处理包括以下步骤:

S51:创建保存数据包的链表,并对链表进行初始化;

S52:对收到的数据包进行判断,是否为重传的数据包;

S53:如果S52的判断结果为否,则把收到的数据包插入到链表尾;

S54:如果S52的判断结果为是,则根据解析到的数据包序号,对链表进行查询,把重传的数据包插入到链表中,使链表中的数据包序号保持连续。

综上所述,由于本发明对重传后还丢失的数据包进行二次重传处理,在不修改ARQ重传协议的基础上,在客户端侧就能将网络丢包概率降低两个数量级,极大的降低了网络丢包率,提高用户的感知体验。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

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