CN113014586A - Rtp数据包乱序处理及重组帧方法和系统 - Google Patents
Rtp数据包乱序处理及重组帧方法和系统 Download PDFInfo
- Publication number
- CN113014586A CN113014586A CN202110240553.4A CN202110240553A CN113014586A CN 113014586 A CN113014586 A CN 113014586A CN 202110240553 A CN202110240553 A CN 202110240553A CN 113014586 A CN113014586 A CN 113014586A
- Authority
- CN
- China
- Prior art keywords
- rtp
- data packet
- rtp data
- packet
- frame
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/762—Media network packet handling at the source
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/65—Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
RTP数据包乱序处理及重组帧方法和系统,包括:接收RTP数据包;根据该RTP数据包的序列号将其插入RTP数据包双向链表队列中的合适节点上,使RTP数据包在RTP数据包双向链表队列中从队首到队尾按序列号升序的顺序排列;每间隔防网络抖动阈值时间,循环一次重新组帧操作:将RTP数据包双向链表队列中已接收时间>认定丢失阈值的RTP数据包从队首开始一一取出并放入RTP帧链表队列中、重新组成一个完整的视频帧后将该帧放入解码缓冲区中,或者处理掉无法组成完整一帧的RTP数据包。本方法及系统解决了UDP/RTP数据包的乱序及重新组帧的问题,避免播放时的断断续续以及卡顿,减少了错误丢弃UDP/RTP数据包的概率。
Description
技术领域
本发明涉及即时通讯领域,尤其涉及一种即时通讯客户端流媒体接收方的RTP数据包乱序处理及重组帧方法和系统。
背景技术
即时通信(IM)是指能够即时发送和接收互联网消息等的业务。用户注册后,通过注册时的登录信息即可登录到用户端上的即时通讯软件中,用户端之间通过即时通讯系统可以进行即时通讯和信息交互。
目前市场上的即时通讯工具中,涉及到实时流媒体功能的通常有两种流媒体传送方法,一种是使用第三方实时流媒体服务商提供的实时流媒体服务,但存在一定的安全和隐私隐患,另一种是使用即时通讯系统自设的中转服务器中转,但在大用户量的情况下非常占用服务器的资源和服务器的带宽,此外,因为有了流媒体服务器的中转,会产生实时流媒体数据的延时,导致用户在实时音视频通信时会有一定时间的延时,影响即时通讯的质量。
因此,发明人提出一种基于JINGLE协议来实现P2P端到端的实时流媒体传输的系统架构,即时通讯服务器群组提供XMPP/JINGLE服务和STUN服务,即时通讯服务器群组之间使用TCP链接、并使用回调认证机制进行验证,然后协助两个即时通讯客户端建立直接端对端连接,使用UDP-RTP和UDP-RTCP进行实时流媒体的数据通信和流量控制,可以较好的解决的上述两种流媒体传送方法存在的问题。
UDP-RTCP协议和UDP-RTP协议的数据包传输过程中,即时通讯用户端发送方发送RTP数包时是线性匀速发出的,但由于IP网络中的路由选择路径不同,加上网络带宽的实时变化等网络因素造成了数据包在传输过程中的抖动现象,RTP数据包很可能是以曲线的形式到达即时通讯用户端接收方,因此,采用该系统架构进行即时通讯用户端之间的端对端直接流媒体通讯,需要解决的是接收方客户端接收的RTP数据包的乱序,以及RTP数据包重组帧两个新难题。
发明内容
本发明所要解决的技术问题在于提供一种即时通讯客户端流媒体接收方的RTP数据包乱序处理及重组帧方法和系统,将乱序处理和重组帧分解为两个独立的步骤,对到达的RTP数据包进行正确排序后再以阈值时间为单位进行重组帧操作,从而使视音频数据能连续正确地播放,防止即时通讯客户端流媒体接收方在播放流媒体数据时的抖动,即播放时的断断续续以及卡顿,以及减少错误丢弃RTP数据包的概率。
本发明是通过以下技术方案实现的:
RTP数据包乱序处理及重组帧方法,包括:
A:接收RTP数据包;
B:根据该RTP数据包的序列号将其插入RTP数据包双向链表队列中的合适节点上,使RTP数据包在RTP数据包双向链表队列中从队首到队尾按序列号升序的顺序排列;
C:每间隔防网络抖动阈值时间,循环一次重新组帧操作:将RTP数据包双向链表队列中已接收时间>认定丢失阈值的RTP数据包从队首开始一一取出并放入RTP帧链表队列中、重新组成一个完整的视频帧后将该帧放入解码缓冲区中,或者处理掉无法组成完整一帧的RTP数据包,包括:
C1:取出RTP数据包双向链表队列的队首RTP数据包,然后转入C2;
C2:判断该RTP数据包已接收时间是否>认定丢失阈值:
如是,转入C3;
如否,转入C2.1:将该RTP数据包重新放回RTP数据包双向链表队列的队首,然后转入C11;
C3:判断当前RTP帧链表队列是否为空:
如是,转入C4;
如否,转入C5;
C4:判断该RTP数据包是否是对应RTP帧的起始数据包:
如是,转入C4.1:直接把该RTP数据包加入RTP帧链表队列,然后转入C10;
如否,转入C4.2:丢弃该RTP数据包,然后转入C10;
C5:判断该RTP数据包的发送时间戳是否=RTP帧链表队列中最后一个RTP数据包的发送时间戳:
如是,转入C6:把该RTP数据包加入到RTP帧链表队列队尾,然后转入C8;
如否,转入C7;
C7:判断该RTP数据包的发送时间戳是否早于RTP帧链表队列中的最后一个RTP数据包的发送时间戳:
如是,转入C7.1:丢弃该RTP数据包,然后转入C10;
如否,转入C7.2:清空RTP帧链表队列,然后转入C4;
C8:判断该RTP数据包是否为对应帧的未尾数据包:
如是,转入C9;
如否,转入C10;
C9:判断RTP帧链表队列中所有RTP数据包的序列号是否连续:
如是,转入C9.1:该RTP帧完整,重新组帧后将该帧放入解码缓冲区中,然后转入C11;
如否,转入C9.2:该RTP帧不完整,清空RTP帧链表队列,然后转入C11;
C10:判断能否取到RTP数据包双向链表队列中的下一个RTP数据包:
如是,转入C2;
如否,转入C11;
C11:判断当前时刻减去C1时刻的时间差是否>防网络抖动阈值时间:
如是,转入C1;
如否,转入C11。
本方法中引入了防网络抖动阈值时间和认定丢失阈值时间两个阀值时间:
首先是防网络抖动阈值时间的引入:虽然发送方发送的RTP数据包是线性的,即同一视频帧被分解为多个RTP数据包后,以同一发出时间发出,不同帧的RTP数据包按对应的视频帧先后顺序发出,但由于IP网络中的路由选择路径不同,加上网络带宽的实时变化等网络因素造成了数据在传输过程中的抖动现象,RTP数据包很可能是以非发出时序到达接收方客户端。接收方客户端在接收到乱序的RTP数据包后,先利用RTP数据包双向链表队列将RTP数据包按正确的顺序重新排序,在某个防网络抖动阈值期间内,利用RTP帧链表队列将排好序的RTP数据包进行一次重新组帧操作,把重组好的完整一帧放入解码缓冲区,然后再在下一个防网络抖动阈值期间进行下一帧的重组,如此循环,即时通讯客户端的多媒体播放器就可以滞后匀速读取解码缓冲区中的视频帧数据,防止即时通讯客户端接收方播放流媒体数据时的抖动,避免播放时的断断续续以及卡顿。
然后是认定丢失阈值时间的引入:同样是因为网络原因,传输过程中不仅会有RTP数据包接收延时、例如先发送的RTP数据包反而会比后发送的RTP数据包后到的情况,并且在网络不好的情况下,某些RTP数据包还可能会丢失。认定丢失阈值含义是:假设即时通讯客户端接收方已经收到了某一帧的某一个数据包,则认定在丢失阈值时间内也会收到该帧的其它所有RTP数据包,如果在丢失阈值时间内没有收到该帧的某一个或者某几个数据包,才会认定该帧的RTP数据包丢失,该帧对应的RTP数据包不完整并及时处理掉。
如果没有引入认定丢失阈值时间,而是在对重新排好序的RTP数据包直接进行重组帧时,假设某一时刻RTP数据包双向链表队列中存在某一帧的起始数据包和末尾数据包,但是少了中间的某个RTP数据包,RTP重组帧处模块就会认定该帧不完整,丢弃该帧对应的所有RTP数据包,但实际情况可能是,RTP数据包双向链表队列中目前该帧的已存在RTP数据包是刚刚接收到的(例如1毫秒前),而缺失的那个RTP数据包会马上就会被接收到(例如1微秒后)。因此,如果是在对接收到的RTP数据包排序后直接进行重组帧,就有可能把本不该丢弃的RTP帧给丢弃,反之,如果使用认定丢失阈值时间,对每一个接收到的RTP数据包已接收时间进行甄别,只对已接收时间>认定丢失阈值的RTP数据包进行重组帧操作,就可以减少错误丢弃数据包的概率。
进一步的,所述步骤B中对RTP数据包的乱序重排序处理,可以按如下步骤进行:
B1:初始化该RTP数据包位置指针,使其指向RTP数据包双向链表队列末尾节点,然后转入B2;
B2:判断RTP数据包双向链表队列末尾节点是否为空:
如是,转入B3:直接将该RTP数据包插入到RTP数据包双向链表队列末尾节点上,该RTP数据包的乱序处理结束;
如否,转入B4:
B4:判断该RTP数据包序列号是否>该RTP数据包位置指针指向节点上的RTP数据包序列号:
如是,转入B5:将该RTP数据包插入到其位置指针指向节点上的RTP数据包后面,该RTP数据包的乱序处理结束;
如否,转入B6:该RTP数据包位置指针前移一步,指向RTP数据包双向链表队列的前一个节点,然后转入B4。
进一步的,所述步骤A中,即时通讯客户端接收方接收RTP数据包时,对接收到的RTP数据包分别标记接收时间戳;所述步骤A前,即时通讯客户端发送方发送RTP数据包时,给同一帧对应的所有RTP数据包标记相同的发出时间戳。
再进一步,所述防网络抖动阈值时间为固定值或者可调值,当防网络抖动阈值时间为可调值时,其大小根据RTP数据包网络传输时间调节,其中,RTP数据包网络传输时间=RTP数据包发出时间戳时间-RTP数据包接收时间戳时间。
进一步的,所述RTP数据包已接收时间=当前时刻-RTP数据包接收时间戳时间。
进一步的,所述认定丢失阈值时间为固定值或者可调值,当认定丢失阈值时间为可调值时,其大小根据RTP帧丢帧概率调节。
RTP数据包乱序处理及重组帧系统,包括:
RTP数据包接收模块,其接收RTP数据包;
RTP数据包乱序处理模块,其根据该RTP数据包的序列号将其插入RTP数据包双向链表队列中的合适节点上,使RTP数据包在RTP数据包双向链表队列中从队首到队尾按序列号升序的顺序排列;
RTP数据包重新组帧模块,每隔防网络抖动阈值时间,其循环一次重新组帧操作:将RTP数据包双向链表队列中已接收时间>认定丢失阈值的RTP数据包从队首开始一一取出并放入RTP帧链表队列中、重新组成一个完整的视频帧后将该视频帧放入解码缓冲区中,或者处理掉无法组成完整一帧的RTP数据包;
RTP数据包双向链表队列,其用于存储RTP数据包;
RTP帧链表队列,其用于临时存储某一帧对应的多个RTP数据包;
解码缓冲区,其用于存储重组后的视频帧。
进一步的,所述RTP数据包接收模块接收RTP数据包时,给接收到的RTP数据包标记接收时间戳。
进一步的,所述RTP数据包重新组帧模块取出RTP数据包双向链表队列的某个RTP数据包时,计算该RTP数据包的已接收时间。
本发明的有益效果在于:
1、解决了UDP/RTP数据包的乱序及重新组帧的问题。
2、通过引入防网络抖动阈值时间,解决了网络抖动的问题,避免播放时的断断续续以及卡顿。
3、通过引入UDP/RTP数据包认定丢失阈值时间,减少了错误丢弃UDP/RTP数据包的概率。
附图说明
图1为本RTP数据包乱序处理及重组帧系统的结构示意图
图2为防网络抖动阈值和认定丢失阈值时间与RTP数据发送、接收及播发时序关系示意图
图3为本RTP数据包乱序处理及重组帧方法的总体流程图
图4为图3中乱序处理时的流程图
图5为图3中重组帧处理时的流程图
具体实施方式
下面结合附图对本发明作进一步说明。
如图1所示实施例中,即时通讯客户端接收方RTP数据包乱序处理及重组帧系统包括:
RTP数据包接收模块,其接收RTP数据包并标记接收时间戳;
RTP数据包乱序处理模块,其根据RTP数据包接收模块接收的RTP数据包的序列号,将该RTP数据包插入RTP数据包双向链表队列中的合适节点上,使接收到的RTP数据包在RTP数据包双向链表队列中从队首到队尾按序列号升序的顺序排列;
RTP数据包重新组帧模块,每隔防网络抖动阈值时间,其循环一次重新组帧操作:计算RTP数据包双向链表队列中RTP数据包的已接收时间,将已接收时间>认定丢失阈值的RTP数据包从队首开始一一取出并放入RTP帧链表队列中、重新组成一个完整的视频帧后将该视频帧放入解码缓冲区中,或者处理掉无法组成完整一帧的RTP数据包;
RTP数据包双向链表队列,其用于存储RTP数据包;
RTP帧链表队列,其用于临时存储某一帧对应的多个RTP数据包;
解码缓冲区,其用于存储重组后的视频帧。
由于RTP帧很大,受UDP最大传输单元MTU的限制,流媒体的RTP帧通常会在即时通讯客户端发送方被分解成了若干RTP数据包再发送给即时通讯客户端接收方。同一RTP帧对应的所有RTP数据包会被标记上相同的发出时间戳,所有RTP帧的所有RTP数据包会被分别赋予唯一的、按从小到大顺序排列的序列号。如图2所示,即时通讯客户端发送方发送的RTP数据包序列号及发出时间关系大体呈线性分布。
但是,由于IP网络中的路由选择路径不同,加上网络带宽的实时变化等网络因素造成了数据在传输过程中的抖动现象,RTP数据包很可能是以非发出时序到达接收方客户端。如图2所示,即时通讯客户端接收方实际接收的RTP数据包的序列号及接收时间关系呈曲线分布。
如图2所示,为了防止即时通讯客户端接收方播放流媒体数据时的抖动,避免播放时的断断续续以及卡顿,接收方播发的音视频数据需要和播放时间大体呈线性关系,因此,在播发音视频和重组帧之间设置了防网络抖动阈值时间,例如1秒,该1秒中接收到的RTP数据包就可以在RTP数据包双向链表队列和RTP帧链表队列之间进行重组帧操作,多媒体播放器匀速滞后读取解码缓冲区中的数据,从而避免播放时的断断续续以及卡顿。
如图2所示实施例中,同样是UDP网络原因,会有RTP数据包传输延时,例如先发送的RTP数据包反而会比后发送的RTP数据包后到,并且在网络不好的情况下,UDP还可能把RTP数据包丢失。因此,在重组帧之前设置了认定丢失阈值时间,例如0.5秒,假设即时通讯客户端接收方已经收到了某一帧的某一个数据包,则认定在0.5秒内也会收到该帧的其它所有RTP数据包,因此会在接收到该RTP数据包后延时0.5秒再进行重组帧操作以等待该帧的其它所有RTP数据包到达,如果在对每一个RTP数据包都延时了认定丢失阈值时间再重组帧操作的前提下,直至接收到后续帧的RTP数据包、依然没有收到某一帧的某一个或者某几个RTP数据包,或者,直至接收到该帧的末尾RTP数据包、依然没有收到某一帧的某一个或者某几个RTP数据包,或者,每次重组帧循环中处理的第一个RTP数据包不是某一帧的首个RTP数据包,才会认定该帧的RTP数据包部分丢失、RTP数据包不完整并及时处理掉,从而避免对接收到的RTP数据包排序后直接进行重组帧把本不该丢弃的RTP帧给丢弃掉的情况,减少错误丢弃数据包的概率。
这两个阀值都是以时间作为单位,可以在即时通讯客户端流媒体程序中动态改变,变大或者变小。例如,可以把防网络抖动阈值从1秒减少为0.5秒,把认定丢失阈值从0.5秒减少为0.25秒。
动态改变的依据是即时通讯客户端流媒体程序中的两个哨兵参数,一个哨兵参数监视着RTP数据包双向链表队列中各个RTP数据包之间的网络传输时间差,RTP数据包网络传输时间=RTP数据包发出时间戳时间-RTP数据包接收时间戳时间,前者由即时通讯客户端发出方在发出RTP数据包时,给同一帧对应的所有RTP数据包标记相同的发出时间戳,后者由即时通讯客户端接收方在接收RTP数据包时标记;如果网络传输时间差很小,说明网络状况良好,则可以减少防网络抖动阈值,例如从1秒减少为0.5秒,反之则增大防网络抖动阈值。
另一个哨兵参数监视着丢弃RTP帧的概率,如果在一段时间内丢弃RTP帧的概率很小,说明网络状况好,则可以减少认定丢失阈值时间,例如从0.5秒减少为0.25秒,反之则增大认定丢失阈值。
如图3所示,为流媒体的RTP数据包从发出、接收、乱序处理、重组帧、语音视频同步处理直至播放的完整流程,包括:
即时通讯客户端发出方:
将流媒体的视频帧按播放的先后顺序分解为若干个序列号从小到大排列的RTP数据包,给同一帧对应的所有RTP数据包标记相同的发出时间戳并顺序发出RTP数据包;
即时通讯客户端接收方:
A:RTP数据包接收模块接收RTP数据包,并给接收到的RTP数据包标记接收时间戳;
B:RTP数据包乱序处理模块根据接收的RTP数据包序列号将其插入RTP数据包双向链表队列中的合适节点上,使RTP数据包在RTP数据包双向链表队列中从队首到队尾按序列号升序的顺序排列;
C:在认定丢失阈值后,RTP数据包重新组帧模块开始重新组帧操作:将RTP数据包双向链表队列中已接收时间>认定丢失阈值的RTP数据包从队首开始一一取出并放入RTP帧链表队列中、重新组成一个完整的视频帧后,将该帧存放到解码缓冲区中,或者处理掉无法组成完整一帧的RTP数据包;每间隔防网络抖动阈值时间,RTP数据包重新组帧模块循环一次步骤C;
D:语音视频同步模块对解码缓冲区中的语音视频进行语音视频同步处理;
E:媒体播放器播放同步后的语音视频。
如图4所示,步骤B具体包括:
B1:初始化该RTP数据包位置指针,使其指向RTP数据包双向链表队列末尾节点,然后转入B2;
B2:判断RTP数据包双向链表队列末尾节点是否为空:
如是,转入B3:直接将该RTP数据包插入到RTP数据包双向链表队列末尾节点上,该RTP数据包的乱序处理结束;
如否,转入B4:
B4:判断该RTP数据包序列号是否>该RTP数据包位置指针指向节点上的RTP数据包序列号:
如是,转入B5:将该RTP数据包插入到其位置指针指向节点上的RTP数据包后面,该RTP数据包的乱序处理结束;
如否,转入B6:该RTP数据包位置指针前移一步,指向RTP数据包双向链表队列的前一个节点,然后转入B4。
步骤B中,乱序处理采用的是RTP数据包双向链表队列,以确保RTP数据包插入到队列以及队列中删除RTP数据包的效率,具体的RTP数据包双向链表队列数据结构伪代码如下:
如图5所示,步骤C具体包括:
C1:取出RTP数据包双向链表队列的队首RTP数据包,然后转入C2;
C2:判断该RTP数据包已接收时间是否>认定丢失阈值:
如是,转入C3;
如否,转入C2.1:将该RTP数据包重新放回RTP数据包双向链表队列的队首,然后转入C11;
其中,RTP数据包已接收时间=当前时刻-RTP数据包接收时间戳时间;
C3:判断当前RTP帧链表队列是否为空:
如是,转入C4;
如否,转入C5;
C4:判断该RTP数据包是否是对应RTP帧的起始数据包:
如是,转入C4.1:直接把该RTP数据包加入RTP帧链表队列,然后转入C10;
如否,转入C4.2:丢弃该RTP数据包,然后转入C10;
C5:判断该RTP数据包的发送时间戳是否=RTP帧链表队列中最后一个RTP数据包的发送时间戳:
如是,转入C6:把该RTP数据包加入到RTP帧链表队列队尾,然后转入C8;
如否,转入C7;
C7:判断该RTP数据包的发送时间戳是否早于RTP帧链表队列中的最后一个RTP数据包的发送时间戳:
如是,转入C7.1:丢弃该RTP数据包,然后转入C10;
如否,转入C7.2:清空RTP帧链表队列,然后转入C4;
C8:判断该RTP数据包是否为对应帧的未尾数据包:
如是,转入C9;
如否,转入C10;
C9:判断RTP帧链表队列中所有RTP数据包的序列号是否连续:
如是,转入C9.1:该RTP帧完整,重新组帧后将该帧放入解码缓冲区中,然后转入C11;
如否,转入C9.2:该RTP帧不完整,清空RTP帧链表队列,然后转入C11;
C10:判断能否取到RTP数据包双向链表队列中的下一个RTP数据包:
如是,转入C2;
如否,转入C11;
C11:判断当前时刻减去C1时刻的时间差是否>防网络抖动阈值时间:
如是,转入C1;
如否,转入C11。
RTP数据包重新组帧模块的伪代码如下:
其中成员变量list指向了RTP数据包双向链表队列。每间隔防网络抖动阈值时间,就使用RTP数据包重新组帧模块,去把RTP数据包双向链表队列中的RTP帧一一取出,放入到RTP帧链表队列中。
需要重点指出的是,RTP数据包重新组帧模块只处理在RTP数据包双向链表队列中的已接收时间>认定丢失阈值的RTP数据包,通过这种处理方式,减少了错误丢弃RTP数据包的概率。
并且认定丢失阈值可以动态改变,在哨兵变量监视到网络状况好的情况下(丢弃RTP数据包的概率很小),RTP数据包乱序处理及重组帧系统会把如0.5秒的阀值变成0.25秒的阀值,甚至更小的阀值。
Claims (9)
1.RTP数据包乱序处理及重组帧方法,其特征在于,包括:
A:接收RTP数据包;
B:根据该RTP数据包的序列号将其插入RTP数据包双向链表队列中的合适节点上,使RTP数据包在RTP数据包双向链表队列中从队首到队尾按序列号升序的顺序排列;
C:每间隔防网络抖动阈值时间,循环一次重新组帧操作:将RTP数据包双向链表队列中已接收时间>认定丢失阈值的RTP数据包从队首开始一一取出并放入RTP帧链表队列中、重新组成一个完整的视频帧后将该帧放入解码缓冲区中,或者处理掉无法组成完整一帧的RTP数据包,包括:
C1:取出RTP数据包双向链表队列的队首RTP数据包,然后转入C2;
C2:判断该RTP数据包已接收时间是否>认定丢失阈值:
如是,转入C3;
如否,转入C2.1:将该RTP数据包重新放回RTP数据包双向链表队列的队首,然后转入C11;
C3:判断当前RTP帧链表队列是否为空:
如是,转入C4;
如否,转入C5;
C4:判断该RTP数据包是否是对应RTP帧的起始数据包:
如是,转入C4.1:直接把该RTP数据包加入RTP帧链表队列,然后转入C10;
如否,转入C4.2:丢弃该RTP数据包,然后转入C10;
C5:判断该RTP数据包的发送时间戳是否=RTP帧链表队列中最后一个RTP数据包的发送时间戳:
如是,转入C6:把该RTP数据包加入到RTP帧链表队列队尾,然后转入C8;
如否,转入C7;
C7:判断该RTP数据包的发送时间戳是否早于RTP帧链表队列中的最后一个RTP数据包的发送时间戳:
如是,转入C7.1:丢弃该RTP数据包,然后转入C10;
如否,转入C7.2:清空RTP帧链表队列,然后转入C4;
C8:判断该RTP数据包是否为对应帧的未尾数据包:
如是,转入C9;
如否,转入C10;
C9:判断RTP帧链表队列中所有RTP数据包的序列号是否连续:
如是,转入C9.1:该RTP帧完整,重新组帧后将该帧放入解码缓冲区中,然后转入C11;
如否,转入C9.2:该RTP帧不完整,清空RTP帧链表队列,然后转入C11;
C10:判断能否取到RTP数据包双向链表队列中的下一个RTP数据包:
如是,转入C2;
如否,转入C11;
C11:判断当前时刻减去C1时刻的时间差是否>防网络抖动阈值时间:
如是,转入C1;
如否,转入C11。
2.根据权利要求1所述的RTP数据包乱序处理及重组帧方法,其特征在于,所述步骤B包括:
B1:初始化该RTP数据包位置指针,使其指向RTP数据包双向链表队列末尾节点,然后转入B2;
B2:判断RTP数据包双向链表队列末尾节点是否为空:
如是,转入B3:直接将该RTP数据包插入到RTP数据包双向链表队列末尾节点上,该RTP数据包的乱序处理结束;
如否,转入B4:
B4:判断该RTP数据包序列号是否>该RTP数据包位置指针指向节点上的RTP数据包序列号:
如是,转入B5:将该RTP数据包插入到其位置指针指向节点上的RTP数据包后面,该RTP数据包的乱序处理结束;
如否,转入B6:该RTP数据包位置指针前移一步,指向RTP数据包双向链表队列的前一个节点,然后转入B4。
3.根据权利要求1所述的RTP数据包乱序处理及重组帧方法,其特征在于,所述步骤A中,RTP数据包被接收时被标记接收时间戳;所述步骤A前,RTP数据包发出时,同一帧对应的所有RTP数据包标记被标记相同的发出时间戳。
4.根据权利要求3所述的RTP数据包乱序处理及重组帧方法,其特征在于,所述防网络抖动阈值时间为固定值或者可调值,当防网络抖动阈值时间为可调值时,其大小根据RTP数据包网络传输时间调节,RTP数据包网络传输时间=RTP数据包发出时间戳时间-RTP数据包接收时间戳时间。
5.根据权利要求3所述的RTP数据包乱序处理及重组帧方法,其特征在于,所述RTP数据包已接收时间=当前时刻-RTP数据包接收时间戳时间。
6.根据权利要求1所述的RTP数据包乱序处理及重组帧方法,其特征在于,所述认定丢失阈值时间为固定值或者可调值,当认定丢失阈值时间为可调值时,其大小根据RTP帧丢帧概率调节。
7.RTP数据包乱序处理及重组帧系统,其特征在于,包括:
RTP数据包接收模块,其接收RTP数据包;
RTP数据包乱序处理模块,其根据该RTP数据包的序列号将其插入RTP数据包双向链表队列中的合适节点上,使RTP数据包在RTP数据包双向链表队列中从队首到队尾按序列号升序的顺序排列;
RTP数据包重新组帧模块,每隔防网络抖动阈值时间,其循环一次重新组帧操作:将RTP数据包双向链表队列中已接收时间>认定丢失阈值的RTP数据包从队首开始一一取出并放入RTP帧链表队列中、重新组成一个完整的视频帧后将该视频帧放入解码缓冲区中,或者处理掉无法组成完整一帧的RTP数据包;
RTP数据包双向链表队列,其用于存储RTP数据包;
RTP帧链表队列,其用于临时存储某一帧对应的多个RTP数据包;
解码缓冲区,其用于存储重组后的视频帧。
8.根据权利要求7所述的RTP数据包乱序处理及重组帧系统,其特征在于,所述RTP数据包接收模块接收RTP数据包时,给接收到的RTP数据包标记接收时间戳。
9.根据权利要求7所述的RTP数据包乱序处理及重组帧系统,其特征在于,所述RTP数据包重新组帧模块取出RTP数据包双向链表队列的某个RTP数据包时,计算该RTP数据包的已接收时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110240553.4A CN113014586B (zh) | 2021-03-04 | 2021-03-04 | Rtp数据包乱序处理及重组帧方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110240553.4A CN113014586B (zh) | 2021-03-04 | 2021-03-04 | Rtp数据包乱序处理及重组帧方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113014586A true CN113014586A (zh) | 2021-06-22 |
CN113014586B CN113014586B (zh) | 2022-09-13 |
Family
ID=76405357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110240553.4A Active CN113014586B (zh) | 2021-03-04 | 2021-03-04 | Rtp数据包乱序处理及重组帧方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113014586B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113890870A (zh) * | 2021-09-30 | 2022-01-04 | 兰州乐智教育科技有限责任公司 | Rtp数据包排序方法、装置、电子设备及存储介质 |
CN114024924A (zh) * | 2022-01-05 | 2022-02-08 | 北京安博通科技股份有限公司 | 一种tcp流重组方法、装置、电子设备及存储介质 |
CN114189487A (zh) * | 2021-11-09 | 2022-03-15 | 宜通世纪物联网研究院(广州)有限公司 | 一种基于rtp的数据重排序方法、系统、设备及介质 |
CN115802102A (zh) * | 2022-11-28 | 2023-03-14 | 武汉众智数字技术有限公司 | 视频流播放的方法、系统、电子设备和存储介质 |
CN116955247A (zh) * | 2023-09-18 | 2023-10-27 | 北京云豹创芯智能科技有限公司 | 一种缓存描述符管理装置及其方法、介质、芯片 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050063303A1 (en) * | 2003-07-29 | 2005-03-24 | Samuels Allen R. | TCP selective acknowledgements for communicating delivered and missed data packets |
CN1852100A (zh) * | 2005-07-22 | 2006-10-25 | 华为技术有限公司 | 一种接收端重组数据包的方法 |
CN101867453A (zh) * | 2010-06-04 | 2010-10-20 | 北京佳讯飞鸿电气股份有限公司 | 一种rtp抗丢包的方法 |
CN103069757A (zh) * | 2011-08-17 | 2013-04-24 | 华为技术有限公司 | 一种报文重组重排序方法、装置和系统 |
CN103108256A (zh) * | 2013-03-08 | 2013-05-15 | 苏州工业园区云视信息技术有限公司 | 一种接收rtp包时消除抖动乱序重包的方法 |
CN103607664A (zh) * | 2013-11-22 | 2014-02-26 | 天津市北海通信技术有限公司 | 一种嵌入式多媒体播放系统的音视频同步方法 |
WO2014075453A1 (zh) * | 2012-11-15 | 2014-05-22 | 掌赢信息科技(上海)有限公司 | 一种实时流媒体上传中的丢帧控制与续传方法及系统 |
CN106341738A (zh) * | 2015-07-08 | 2017-01-18 | 杭州海康威视数字技术股份有限公司 | 流媒体网络传输的带宽计算方法、服务器端和系统 |
CN112383512A (zh) * | 2020-10-26 | 2021-02-19 | 深圳Tcl新技术有限公司 | Rtp帧序纠错方法、装置、接收端及计算机可读存储介质 |
-
2021
- 2021-03-04 CN CN202110240553.4A patent/CN113014586B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050063303A1 (en) * | 2003-07-29 | 2005-03-24 | Samuels Allen R. | TCP selective acknowledgements for communicating delivered and missed data packets |
CN1852100A (zh) * | 2005-07-22 | 2006-10-25 | 华为技术有限公司 | 一种接收端重组数据包的方法 |
CN101867453A (zh) * | 2010-06-04 | 2010-10-20 | 北京佳讯飞鸿电气股份有限公司 | 一种rtp抗丢包的方法 |
CN103069757A (zh) * | 2011-08-17 | 2013-04-24 | 华为技术有限公司 | 一种报文重组重排序方法、装置和系统 |
WO2014075453A1 (zh) * | 2012-11-15 | 2014-05-22 | 掌赢信息科技(上海)有限公司 | 一种实时流媒体上传中的丢帧控制与续传方法及系统 |
CN103108256A (zh) * | 2013-03-08 | 2013-05-15 | 苏州工业园区云视信息技术有限公司 | 一种接收rtp包时消除抖动乱序重包的方法 |
CN103607664A (zh) * | 2013-11-22 | 2014-02-26 | 天津市北海通信技术有限公司 | 一种嵌入式多媒体播放系统的音视频同步方法 |
CN106341738A (zh) * | 2015-07-08 | 2017-01-18 | 杭州海康威视数字技术股份有限公司 | 流媒体网络传输的带宽计算方法、服务器端和系统 |
CN112383512A (zh) * | 2020-10-26 | 2021-02-19 | 深圳Tcl新技术有限公司 | Rtp帧序纠错方法、装置、接收端及计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
张岩峰等: "一种基于时间驱动实时视频流缓冲区的设计与实现", 《东北大学学报(自然科学版)》 * |
曲丽君: "一种自适应的流媒体拥塞控制系统研究", 《青岛农业大学学报(自然科学版)》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113890870A (zh) * | 2021-09-30 | 2022-01-04 | 兰州乐智教育科技有限责任公司 | Rtp数据包排序方法、装置、电子设备及存储介质 |
CN113890870B (zh) * | 2021-09-30 | 2023-09-19 | 兰州乐智教育科技有限责任公司 | Rtp数据包排序方法、装置、电子设备及存储介质 |
CN114189487A (zh) * | 2021-11-09 | 2022-03-15 | 宜通世纪物联网研究院(广州)有限公司 | 一种基于rtp的数据重排序方法、系统、设备及介质 |
CN114189487B (zh) * | 2021-11-09 | 2024-05-14 | 广东宜通联云智能信息有限公司 | 一种基于rtp的数据重排序方法、系统、设备及介质 |
CN114024924A (zh) * | 2022-01-05 | 2022-02-08 | 北京安博通科技股份有限公司 | 一种tcp流重组方法、装置、电子设备及存储介质 |
CN115802102A (zh) * | 2022-11-28 | 2023-03-14 | 武汉众智数字技术有限公司 | 视频流播放的方法、系统、电子设备和存储介质 |
CN116955247A (zh) * | 2023-09-18 | 2023-10-27 | 北京云豹创芯智能科技有限公司 | 一种缓存描述符管理装置及其方法、介质、芯片 |
CN116955247B (zh) * | 2023-09-18 | 2024-02-09 | 北京云豹创芯智能科技有限公司 | 一种缓存描述符管理装置及其方法、介质、芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN113014586B (zh) | 2022-09-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113014586B (zh) | Rtp数据包乱序处理及重组帧方法和系统 | |
US7639682B2 (en) | Communication quality management and apparatus | |
US6778493B1 (en) | Real-time media content synchronization and transmission in packet network apparatus and method | |
JP5788473B2 (ja) | 端末の出力を同期させる方法およびシステム | |
US9565482B1 (en) | Adaptive profile switching system and method for media streaming over IP networks | |
CN108696772B (zh) | 一种实时视频的传输方法及装置 | |
US20060007943A1 (en) | Method and system for providing site independent real-time multimedia transport over packet-switched networks | |
CN106301694B (zh) | 一种减少可靠组播传输中数据包重传次数的方法及装置 | |
US20040027991A1 (en) | Method of generating transmission control parameters and method of selective retransmission according to packet characteristics | |
WO2020034082A1 (zh) | 基于切片的rtp流传输方法、装置、终端及服务器 | |
CN108353074B (zh) | 用于拥塞控制的方法、多点控制单元和计算机可读装置 | |
US9838209B2 (en) | Method for subscribing to streams from multicast clients | |
CN101867453B (zh) | 一种rtp抗丢包的方法 | |
EP2566128B1 (en) | Method and server for obtaining key information during fast channel switching | |
EP2200220A1 (en) | Method and apparatus for reliable multicast streaming | |
KR20100070361A (ko) | 무선 근거리 네트워크들에서의 신뢰 가능한 멀티캐스트를 위해 병합된 자동 반복 요청으로 적응 순방향 에러 정정을 하기 위한 방법 및 장치 | |
US8990407B2 (en) | Fast setup response prediction | |
CN103329558B (zh) | 单播多播iptv网络中实现快速信道更改的方法和服务器 | |
EP1908259B1 (fr) | Appareil et procede d'estimation du taux de remplissage des tampons d'entree de clients d'une distribution de contenu temps reel | |
CN111263240B (zh) | Iptv 4k音视频播放管理方法、装置、显示设备 | |
CN101394252A (zh) | 一种基于rtp的数据传输方法 | |
US8068515B2 (en) | Faster multimedia synchronization of broadcast streams using router caching of RTCP packets | |
CN115189813A (zh) | Ott组播方法、系统、装置、组播代理和组播服务器 | |
Setton et al. | Congestion-distortion optimized peer-to-peer video streaming | |
CN113612649B (zh) | 往返估计 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |