一种RTP数据包排序方法、系统及存储介质与流程

文档序号:21606282发布日期:2020-07-24 17:27阅读:553来源:国知局
一种RTP数据包排序方法、系统及存储介质与流程
本发明涉及数据处理
技术领域
,特别是涉及一种rtp数据包排序方法、系统及存储介质。
背景技术
:rtp(realtimetransportprotocol)实时传输协议:是针对internet上多媒体数据流的一个传输协议,用于携带具有实时性的数据;rtp报头中有三个重要字段:ssrc、序列号和时间戳。在rtp协议中,(ssrc,synchronizationsource)字段标识同步源:为rtp包流的源,用rtp报头中32位数值的ssrc标识符进行标识,使其不依赖于网络地址。序列号(16位):对于发送的每个rtp数据分组递增一个,并且可被接收器用于检测分组丢失和恢复分组序列,序列号的初始值是随机的(不可预测)。时间戳(32位):反映rtp数据包中第一个八位字节的采样瞬间。采样时刻是从时钟中导出的,时钟在时间上单调和线性递增,以便进行同步和抖动计算。时钟的分辨率必须足以达到所需的同步精度和测量分组到达抖动(通常每个视频帧一个滴答声是不够的)。时钟频率取决于作为有效载荷携带的数据的格式,并且在定义该格式的简档或有效载荷格式规范中静态地指定,或者可以针对通过非rtp装置定义的有效载荷格式动态地指定。如果周期性地生成rtp包,则使用由采样时钟确定的标称采样瞬间,而不是读取系统时钟。时间戳的初始值是随机的。在rfc3550(实时传输协议)标准中,它没有定义如何处理重复或重新排序的数据包,而大部分厂商的实现也都基于标准进行相应处理。在实际应用中,一些设备并不完全符合rfc3550标准,有时这些设备会发出一个异常rtp包或坏的rtp包,比如某个rtp包的序列号与包序号排列在前的rtp包重复时,该rtp包会因为无法处理而只能丢弃。可见,现有技术还有待于改进和发展。技术实现要素:基于此,有必要针对上述技术问题,提供一种rtp数据包排序方法、系统及存储介质,旨在解决现有序列号异常的rtp数据包因为无法处理而只能丢弃的问题。本发明的技术方案如下:一种rtp数据包排序方法,其包括:接收rtp数据包,按照序列号及包序号逐一进行排序并存储所接收的rtp数据包;当遇到与已存储的rtp数据包序列号相同的rtp数据包时,将序列号重复且未存储的rtp数据包确认为异常rtp数据包;判断所述异常rtp数据包的ssrc与已存储rtp数据包的ssrc是否相同,若是则根据包序号对所述异常rtp数据包进行排序及存储。在进一步地优选方案中,所述判断所述异常rtp数据包的ssrc与已存储rtp数据包的ssrc是否相同,若是则根据包序号对所述异常rtp数据包进行排序及存储的步骤之前还包括:根据所述异常rtp数据包的包序号,判断所述异常rtp数据包的时戳与已存储rtp数据包的时戳相比是否保持相同的步长增加或减少,若是则执行下一步动作。在进一步地优选方案中,所述判断所述异常rtp数据包的ssrc与已存储rtp数据包的ssrc是否相同,若是则根据包序号对所述异常rtp数据包进行排序及存储的步骤具体包括:获取异常rtp数据包的ssrc与已存储rtp数据包的ssrc;将所获取的多个ssrc进行对比,判断二者是否相同;当判断所获取的多个ssrc相同时,根据包序号对所述异常rtp数据包进行排序及存储。在进一步地优选方案中,所述将所获取的多个ssrc进行对比,判断二者是否相同的步骤之后,所述当判断所获取的多个ssrc相同时,根据包序号对所述异常rtp数据包进行排序及存储的步骤之前还包括:根据所述异常rtp数据包的包序号,判断所述异常rtp数据包的时戳与已存储rtp数据包的时戳相比是否保持相同的步长增加或减少。在进一步地优选方案中,所述根据所述异常rtp数据包的包序号,判断所述异常rtp数据包的时戳与已存储rtp数据包的时戳相比是否保持相同的步长增加或减少的步骤具体包括:获取异常rtp数据包的包序号及时戳与多个已存储rtp数据包的包序号及时戳;根据多个已存储rtp数据包的时戳计算时戳变化步长;计算包序号与所述异常rtp数据包相邻的已存储rtp数据包的时戳,与异常rtp数据包的时戳之差;判断所计算的时戳之差是否与所计算的时戳变化步长相等。在进一步地优选方案中,所述当判断所获取的多个ssrc相同时,根据包序号对所述异常rtp数据包进行排序及存储的步骤具体为:当判断所获取的多个ssrc相同,且所计算的时戳之差与时戳变化步长相等时,根据包序号对所述异常rtp数据包进行排序及存储。在进一步地优选方案中,所述rtp数据包暂存于环形缓冲区。在进一步地优选方案中,所述判断所述异常rtp数据包的ssrc与已存储rtp数据包的ssrc是否相同,若是则根据包序号对所述异常rtp数据包进行排序及存储的步骤还包括:待所有的rtp数据包排序且存储完毕后,将所有连续的rtp数据包传输至dsp进行解码。一种rtp数据包排序系统,其包括存储器及处理器,所述存储器存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的rtp数据包排序方法的步骤。一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如上所述的rtp数据包排序方法的步骤。与现有技术相比,本发明提供的rtp数据包排序方法,包括步骤:接收rtp数据包,按照序列号及包序号逐一进行排序并存储所接收的rtp数据包;当遇到与已存储的rtp数据包序列号相同的rtp数据包时,将序列号重复且未存储的rtp数据包确认为异常rtp数据包;判断所述异常rtp数据包的ssrc与已存储rtp数据包的ssrc是否相同,若是则根据包序号对所述异常rtp数据包进行排序及存储。本发明所提供的rtp数据包排序方法,在检测到rtp数据包的序列号异常时,只要ssrc与已存储rtp数据包的ssrc相同,就可以在一定程度上保证该rtp数据包内容的正确性,序列号异常对内容无影响或影响不大,按照包序号对异常rtp数据包进行排序及存储即可,不用丢弃。附图说明图1是现有技术中包序号为pn-1的rtp数据包的存储位置示意图。图2是现有技术中包序号为pn的rtp数据包的存储位置示意图。图3是现有技术中包序号为pn+3的rtp数据包的存储位置示意图。图4是现有技术中包序号为pn+2的rtp数据包的存储位置示意图。图5是现有技术中包序号为pn+1的rtp数据包的存储位置示意图。图6是本发明中rtp数据包排序方法的流程图。图7是本发明中包序号为pn+1的异常rtp数据包的存储位置示意图。图8是本发明中rtp数据包排序系统的功能原理框图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。通常,rtp是在以太网中传输的,对于不同的路由器/延迟/拥塞,接收机可能接收到无序的rtp包;下文以g.71120ms间隔rtp流为示例说明现有的rtp数据包排序及存储方式:表1:典型rtp流包序号序列号时戳ssrc…………packetn345671541941761988223488packetn+1345681541943361988223488packetn+2345691541944961988223488packetn+3345701541946561988223488…………packetn+4345671541948161988223488递增1递增160保持一样图1至图5解释了当前重新排序的数据包过程,它使用rtp序列号进行判断:put表示接收rtp包并存储到缓冲区;get表示解码这些包;(i-1)(i)(i+1)(…)表示临时存储rtp包的环形缓冲区;pn表示表1所列的rtp包。由图1可知,首先将数据包packetn-1(简称pn-1,其余同理)存储到缓冲区位置(i-1),其次获取下一个包pn,并将数据包pn存储到下一个位置(i);再次获取包pn+3,由于pn+3的序列号比pn大3,所以它被存储到位置(i+3);而后获取包pn+2,由于pn+2的序列号比pn大2,则将其存储到位置(i+2);然后获取包pn+1,由于pn+1的序列号比pn大1,则将其存储到位置(i+1);最后获取包pn+4,由于该包序列号异常(与pn的序列号相同),因此按照现有的排序方法无法排序,只能做丢弃处理。而本发明所提供的rtp数据包排序方法则可以解决该问题,如图6所示,所述rtp数据包排序方法包括步骤:s100、接收rtp数据包,按照序列号及包序号逐一进行排序并存储所接收的rtp数据包。在rtp数据包序列号正常的情况下,按照现有的排序方式对rtp数据包进行排序及存储是没有问题的,因此,对于正常rtp数据包的排序方式,本发明在此不再详细赘述。s200、当遇到与已存储的rtp数据包序列号相同的rtp数据包时,将序列号重复且未存储的rtp数据包确认为异常rtp数据包。本步骤并不进行程序上的限定,也就是说,对于本发明所确认的异常rtp数据包可以进行打标签等方式进行特别标示,也可以不做特别标示而直接进行处理,对此本发明并不做具体限定。s300、判断所述异常rtp数据包的ssrc与已存储rtp数据包的ssrc是否相同,若是则根据包序号对所述异常rtp数据包进行排序及存储。仍以g.71120ms间隔rtp流为示例进行s300的说明:由上表可以看出,pn+4的ssrc与前面已存储的rtp数据包的ssrc都一样,皆为1988223488;在这种情况下,根据包序号对pn+4进行排序存储,将pn+4存储至位置(i+4)即可,如图7所示。本发明所提供的rtp数据包排序方法,在检测到rtp数据包的序列号异常时,只要ssrc与已存储rtp数据包的ssrc相同,就可以在一定程度上保证该rtp数据包内容的正确性,序列号异常对内容无影响或影响不大,按照包序号对异常rtp数据包进行排序及存储即可,不用丢弃;解决了现有序列号异常的rtp数据包因为无法处理而只能丢弃的问题。作为本发明地优选实施例,所述s300之前还包括:根据所述异常rtp数据包的包序号,判断所述异常rtp数据包的时戳与已存储rtp数据包的时戳相比是否保持相同的步长增加或减少,若是则执行下一步动作。仍以g.71120ms间隔rtp流为示例进行s300的说明:由上表可以看出,pn数据包至pn+3数据包的时戳皆以160的数值递增,而pn+4数据包的时戳为154194816,pn+3数据包的时戳为154194656,二者之差值亦为160。在确定异常rtp数据包的ssrc正常后,再次确定异常rtp数据包的时戳相对于已存储rtp数据包的变化(递增或递减)是否规律,若规律则可确认异常rtp数据包除序列号异常外,并无其他实质性的异常,其内容并未受较大影响,可以进行排序存储。根据本发明地另一方面,所述s300具体包括:s310、获取异常rtp数据包的ssrc与已存储rtp数据包的ssrc。s320、将所获取的多个ssrc进行对比,判断二者是否相同。s330、当判断所获取的多个ssrc相同时,根据包序号对所述异常rtp数据包进行排序及存储。进一步地,所述将所获取的多个ssrc进行对比,判断二者是否相同的步骤之后,所述当判断所获取的多个ssrc相同时,根据包序号对所述异常rtp数据包进行排序及存储的步骤之前还包括:根据所述异常rtp数据包的包序号,判断所述异常rtp数据包的时戳与已存储rtp数据包的时戳相比是否保持相同的步长增加或减少。具体地,所述根据所述异常rtp数据包的包序号,判断所述异常rtp数据包的时戳与已存储rtp数据包的时戳相比是否保持相同的步长增加或减少的步骤具体包括:获取异常rtp数据包的包序号及时戳与多个已存储rtp数据包的包序号及时戳;根据多个已存储rtp数据包的时戳计算时戳变化步长;计算包序号与所述异常rtp数据包相邻的已存储rtp数据包的时戳,与异常rtp数据包的时戳之差;判断所计算的时戳之差是否与所计算的时戳变化步长相等。仍以g.71120ms间隔rtp流为示例进行s300的说明:由上表可以看出,pn数据包至pn+3数据包的时戳皆以160的数值递增,而pn+4数据包的时戳为154194816,pn+3数据包的时戳为154194656,二者之差值亦为160。优选所述当判断所获取的多个ssrc相同时,根据包序号对所述异常rtp数据包进行排序及存储的步骤具体为:当判断所获取的多个ssrc相同,且所计算的时戳之差与时戳变化步长相等时,根据包序号对所述异常rtp数据包进行排序及存储。在确定异常rtp数据包的ssrc正常后,再次确定异常rtp数据包的时戳相对于已存储rtp数据包的变化(递增或递减)是否规律,若规律则可确认异常rtp数据包除序列号异常外,并无其他实质性的异常,其内容并未受较大影响,可以进行排序存储。根据本发明地另一方面,所述rtp数据包暂存于环形缓冲区;所述判断所述异常rtp数据包的ssrc与已存储rtp数据包的ssrc是否相同,若是则根据包序号对所述异常rtp数据包进行排序及存储的步骤还包括:待所有的rtp数据包排序且存储完毕后,将所有连续的rtp数据包传输至dsp进行解码。如图2所示,本发明还提供了一种rtp数据包排序系统,其包括存储器10及处理器20,所述存储器10存储有计算机程序,所述计算机程序被处理器20执行时实现如上所述的rtp数据包排序方法的步骤。本发明还提供了一种存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如上所述的rtp数据包排序方法的步骤。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1