CN112235234A - 数据处理方法、装置、电子设备及计算机可读存储介质 - Google Patents
数据处理方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN112235234A CN112235234A CN202010754834.7A CN202010754834A CN112235234A CN 112235234 A CN112235234 A CN 112235234A CN 202010754834 A CN202010754834 A CN 202010754834A CN 112235234 A CN112235234 A CN 112235234A
- Authority
- CN
- China
- Prior art keywords
- packet
- sequence number
- data packet
- data
- queue
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 41
- 238000000034 method Methods 0.000 claims abstract description 38
- 238000012163 sequencing technique Methods 0.000 claims abstract description 14
- 238000004590 computer program Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 description 10
- 238000004891 communication Methods 0.000 description 6
- 230000000903 blocking effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 3
- 230000003139 buffering effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/50—Queue scheduling
- H04L47/62—Queue scheduling characterised by scheduling criteria
- H04L47/6245—Modifications to standard FIFO or LIFO
-
- 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/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/765—Media network packet handling intermediate
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
Abstract
本发明提供了一种数据处理方法、装置、电子设备及计算机可读存储介质,方法包括:接收发送端依据UDP协议所发送的多个数据包,并按照接收多个数据包的先后顺序,存储到缓存队列中,按照先进先出的先后顺序,从缓存队列中获取第一数据包,将第一数据包加入到排序队列中,判断第一数据包的包序号与第一期望包序号的大小关系,第一期望包序号为接收端当前期望收到的数据包的包序号,在第一数据包的包序号与第一期望包序号相同的情况下,将第一数据包从排序队列中取出,并对第一数据包进行预设处理,使用本发明的数据处理方法可以对乱序到达的数据包进行排序整理,再进行预设处理,减轻视频卡顿或者花屏现象。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种数据处理方法、装置、 电子设备及计算机可读存储介质。
背景技术
在数据传输过程中,大多都是使用基于TCP(Transmission Control Protocol,传输控制协议)的协议来对数据进行传输,这是因为TCP协议是一 种面向连接的、可靠的、基于字节流的运输层通信协议,可以很好地保证数 据传输的可靠性。
但是在一些领域中,例如音视频领域,往往传输数据量大,网络带宽不 足,依然使用基于TCP的协议来对数据进行传输的话,在网络拥塞时会出 现卡顿,甚至无法恢复视频播放的情况。因此,为了保障音视频流的传输质 量,相关技术中也存在基于UDP(UserDatagram Protocol,用户数据报协议) 的协议进行传输,这主要是因为UDP协议具有TCP协议望尘莫及的速度优 势。
然而,由于UDP传输具有不可靠的特点,导致接收端接收到的数据包 存在乱序和丢包的问题,同样会造成视频卡顿或者花屏的现象,而现有技术 中还没有能够很好解决通过UDP协议传输数据导致的视频卡顿、花屏的问 题。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至 少部分地解决上述问题的一种数据处理方法、装置、电子设备及计算机可读 存储介质。
为了解决上述问题,本发明实施例公开了一种数据处理方法,应用于接 收端,所述方法包括:
接收发送端依据UDP协议所发送的多个数据包,并按照接收所述多个 数据包的先后顺序,存储到缓存队列中;
按照先进先出的先后顺序,从所述缓存队列中获取第一数据包,将所述 第一数据包加入到排序队列中;
判断所述第一数据包的包序号与第一期望包序号的大小关系,所述第一 期望包序号为所述接收端当前期望收到的数据包的包序号;
在所述第一数据包的包序号与所述第一期望包序号相同的情况下,将所 述第一数据包从所述排序队列中取出,并对所述第一数据包进行预设处理, 其中,所述预设处理包括转发和/或解码;
在所述第一数据包的包序号小于所述第一期望包序号的情况下,将所述 第一数据包从所述排序队列中删除。
本发明实施例还公开了一种数据处理装置,应用于接收端,所述装置包 括:
存储模块,用于接收发送端依据UDP协议所发送的多个数据包,并按 照接收所述多个数据包的先后顺序,存储到缓存队列中;
第一加入模块,用于按照先进先出的先后顺序,从所述缓存队列中获取 第一数据包,将所述第一数据包加入到排序队列中;
第一判断模块,用于判断所述第一数据包的包序号与第一期望包序号的 大小关系,所述第一期望包序号为所述接收端当前期望收到的数据包的包序 号;
第一处理模块,用于在所述第一数据包的包序号与所述第一期望包序号 相同的情况下,将所述第一数据包从所述排序队列中取出,并对所述第一数 据包进行预设处理,其中,所述预设处理包括转发和/或解码;
第一删除模块,用于在所述第一数据包的包序号小于所述第一期望包序 号的情况下,将所述第一数据包从所述排序队列中删除。
本发明实施例还公开了一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个计算机可读介质,当由所述一个或多个处 理器执行时,使得所述处理器执行如本发明实施例任一所述的数据处理方法。
本发明实施例还公开了一种计算机可读存储介质,其存储的计算机程序 使得处理器执行如本发明实施例所述的数据处理方法。
本发明实施例包括以下优点:
在本发明实施例提供的数据处理方法中,通过设置第一期望包序号,将 第一数据包的包序号与第一期望包序号进行比较,并在第一数据包的包序号 与第一期望包序号相同的情况下,将第一数据包从排序队列中取出进行预设 处理。本申请中,由于每次都是将与第一期望包序号相同的第一数据包取出 进行预设处理,可以保证每次取出进行预设处理的数据包都是接收端当前期 望收到的数据包,由于期望包序号是尽可能按照期望的正常顺序(例如数据 包包序号的顺序)进行排列的,例如,尽可能按照1、2、3、4、5等正常顺 序排列,因此,便也是按照期望的正常顺序从排序队列中依次取出数据包, 从而取出的各个数据包便也可以是1、2、3、4、5的顺序进行排列,从而使 得对乱序到达的数据包进行排序整理。这样,在对各第一数据包进行预设处 理时,便是按照正常的顺序进行转发或解码,一方面实现了按照数据包的正 常顺序进行转发,降低了另一接收端乱序接收数据包的风险。另一方面,按 照数据包的正常顺序解码,使得在解码播放数据包时,减轻视频卡顿或者花 屏的现象。
附图说明
图1是本申请一实施例的实施环境的示意图;
图2是本申请一实施例提供的一种数据处理方法的流程图;
图3是本申请一实施例提出的一种数据处理方法的流程示意图;
图4是本申请一实施例提出的另一种数据处理方法的流程示意图;
图5是本申请一实施例提出的另一种数据处理方法的流程示意图;
图6是本申请一实施例提供的一种数据处理装置的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图 和具体实施方式对本发明作进一步详细的说明。
请参考图1,图1是本申请一实施例的实施环境的示意图。如图1所示, 该实施环境包括:发送端和接收端。其中,发送端和接收端依据UDP协议 进行数据传输,其中,图1中的虚线表示UDP通信链路。
本实施例中,发送端和接收端可以互为客户端和服务器。也就是说,既 存在客户端向服务器发送数据包的过程,也存在服务器向客户端发送数据包 的过程,因此,在一种实施方式中,客户端向服务器发送数据包时,客户端 是发送端,服务器是接收端,客户端依据UDP协议向服务器发送数据包; 在另一种实施方式中,服务器向客户端发送数据时,服务器是发送端,客户 端是接收端,服务器依据UDP协议向客户端发送数据包。
参照图2,图2是本申请一实施例提供的一种数据处理方法的流程图, 该数据处理方法可以应用于接收端。
如图2所示,该方法具体可以包括如下步骤:
步骤S201,接收发送端依据UDP协议所发送的多个数据包,并按照接 收所述多个数据包的先后顺序,存储到缓存队列中。
本实施例中,发送端在依据UDP协议发送数据包到接收端之前,首先 需要获得数据包,具体地,发送端可以通过多种途径获得数据包。
在一种实施方式中,发送端在为客户端时,其可以安装于终端设备上, 终端设备可以具有音视频采集功能,因此,发送端可以调用终端设备的音视 频采集功能采集音视频数据,接着对所采集的音视频数据按照设定的大小采 用RTP(Real-time TransportProtocol,实时传输协议)进行封包。
发送端封包过程中,包序号从0开始,每封装一个数据包,数据包的包 序号加1。
在另一种实施方式中,发送端也可以从其他设备获得数据包,例如,发 送端中的数据包可以直接来自于其他发送端,或者来自于其他接收端,从而 不用本发送端对音视频数据进行采集,即可获得数据包。
发送端发送数据包时,发送端可以在封包过程中发送数据包,即封装一 个数据包便随即发送一个数据包,也可以在封包完成后统一发送所有的数据 包,不管采用哪种发送数据包的方式,发送端在发送各个数据包之后,还可 以对发送的数据包进行缓存,例如缓存在rtpPackets的内存中,如此,使得 发送端可以在接收端未接收到数据包的情况下重新发送对应的数据包,避免 数据包丢失,即避免丢包。
发送端在依据UDP协议发送音视频数据对应的多个数据包的同时,接 收端可以接收发送端发送的多个数据包,接收端在接收到数据包之后,可以 按照数据包接收的先后时间顺序,将多个数据包分别存储到缓存队列 packetQueue中。
步骤S202,按照先进先出的先后顺序,从所述缓存队列中获取第一数 据包,将所述第一数据包加入到排序队列中。
本实施例中,接收端内部可以预先设置处理数据包的取包线程packetProcessThread,该取包线程可以从缓存队列中循环获取数据包,此时 该取包线程获取的数据包即称为第一数据包。具体地,该取包线程在获取第 一数据包时,是按照缓存队列中的数据包的先入先出的先后顺序获取的。示 例地,缓存队列packetQueue先后接收的数据包的包序号依次为2、6、8、5、 4、3、9、15、11、13、16、14、11,则取包线程packetProcessThread从缓 存队列中获取第一数据包的顺序依次为2、6、8、5、4、3、9、15、11、13、 16、14、11。另外,接收端内部还预先设置有排序队列,也可以称为排序字 典,用于存储取包线程packetProcessThread从缓存队列中获取的第一数据包, 因此,取包线程packetProcessThread从缓存中获取的第一数据包之后,可以 将第一数据包加入到排序队列中。
步骤S203,判断所述第一数据包的包序号与第一期望包序号的大小关 系。
其中,所述第一期望包序号为所述接收端当前期望收到的数据包的包序 号。
本实施例中,首先需要知道第一期望包序号的值。具体地,取包线程首 先可以判断第一数据包是否为第一个接收到的数据包,如果是第一个接收到 的数据包,则将第一数据包的包序号作为第一期望包序号,进而以该第一期 望包序号进行后续的操作;如果不是第一个数据包,则说明之前已经确定了 期望包序号,此时,按照相应规则便可以直接获取到第一期望包序号。
步骤S204,在所述第一数据包的包序号与所述第一期望包序号相同的 情况下,将所述第一数据包从所述排序队列中取出,并对所述第一数据包进 行预设处理,其中,所述预设处理包括转发和/或解码。
本实施例中,如果判断第一数据包的包序号与第一期望包序号相同,则 可以认为获取的第一数据包是准确(未丢包、未乱序)到达的,此时,取包 线程便可以将第一数据包从排序队列中取出并进行预设处理。
考虑到接收端可以具有解码功能与转发功能,因此,接收端对第一数据 包进行预设处理可以包括转发和/或解码处理,转发处理具体为将第一数据包 转发到另外的接收端,例如,在客户端1-服务器-客户端2的网络架构中, 服务器作为中转,需要在接收客户端1上传的音视频数据包之后,将音视频 数据包转发到客户端2,以供客户端2根据音视频数据包进行播放;解码处 理具体为直接对第一数据包进行解码播放,例如,上述服务器也可以具有解 码功能,因此服务器在接收到第一数据包之后,可以直接对第一数据包进行 解码并播放。
需要说明的是,在上述客户端1-服务器-客户端2的网络架构中,由于 客户端1与服务器之间采用UDP协议发送数据包,因此,服务器在接收到 客户端1发送的数据包之后,会执行本申请实施例的数据处理方法的步骤, 服务器与客户端2之间也可以采用UDP协议发送数据包,因此,客户端2 在接收到服务器发送的数据包之后,也会执行本申请实施例的数据处理方法 的步骤。如此,可以使得最终到达客户端2的数据包尽可能准确,即尽可能不丢包、不乱序。
步骤S205,在所述第一数据包的包序号小于所述第一期望包序号的情 况下,将所述第一数据包从所述排序队列中删除。
本实施例中,如果判断第一数据包的包序号小于第一期望包序号,则可 以认为获取的第一数据包是过时的,再对过时的数据包进行预设处理没有意 义,此时,取包线程则可以将第一数据包从排序队列中删除。
采用本实施例的方法,通过设置第一期望包序号,将第一数据包的包序 号与第一期望包序号进行比较,并在第一数据包的包序号与第一期望包序号 相同的情况下,将第一数据包从排序队列中取出进行预设处理。本申请中, 由于每次都是将与第一期望包序号相同的第一数据包取出进行预设处理,可 以保证每次取出进行预设处理的数据包都是接收端当前期望收到的数据包, 由于期望包序号是尽可能按照期望的正常顺序(例如数据包包序号的顺序) 进行排列的,例如,尽可能按照1、2、3、4、5等正常顺序排列,因此,便 也是按照期望的正常顺序从排序队列中依次取出数据包,从而取出的各个数 据包便也可以是1、2、3、4、5的顺序进行排列,从而使得对乱序到达的数 据包进行排序整理。这样,在对各第一数据包进行预设处理时,便是按照正 常的顺序进行转发或解码,一方面实现了按照数据包的正常顺序进行转发, 降低了另一接收端乱序接收数据包的风险。另一方面,按照数据包的正常顺 序解码,使得在解码播放数据包时,减轻视频卡顿或者花屏的现象。
本实施例中,接收端可以设置两种不同的数据包处理模式,包括第一预 设模式和第二预设模式,不同的预设模式代表了对数据包处理的不同方式, 具体体现在取出数据包进行处理时所进行的方式上的不同。其中,第一预设 模式也可以称为快速模式,第二预设模式也可以称为慢速模式。用户在配置 接收端配置信息的时候,可以将两种模式均配置于接收端,进而提供给用户 选择,因此,用户可以根据需要选择第一预设模式或者第二预设模式。不管 是第一预设模式还是第二预设模式,前面所述(步骤S201至步骤S205)的 数据处理方法均相同。不同之处在于,在第一数据包的包序号大于第一期望 包序号的这种情况下,后续的数据包处理方法不同。
在一种实施方式中,如果用户选择的是第一预设模式,本实施例的数据 处理方法还可以包括以下步骤:
步骤S206A,在当前执行的数据处理模式为第一预设模式,且在所述第 一数据包的包序号大于所述第一期望包序号的情况下,判断重传队列中是否 存在与所述第一期望包序号相同的第一丢失包序号。
本实施例中,在用户选择的数据处理模式为第一预设模式的情况下,如 果判断第一数据包的包序号大于第一期望包序号,则可以认为获取的第一数 据包是超前到来的,对于超前到来的数据包,此时虽然不能进行预设处理, 但是后续等到期望包序号增加时,可能会存在期望包序号相同的数据包,到 时候便可以取出进行预设处理,因此,取包线程可以将第一数据包暂时存入 到超前包队列中,待到后续需要时再取出进行预设处理,避免将超前到来的 包丢弃或者请求重发,节约网络资源。
步骤S207A,在所述重传队列中存在所述第一丢失包序号的情况下,保 持所述第一期望包序号不变。
本实施例中,接收端设置有重传队列,重传队列用于存储需要重传的数 据包的序号,重传队列中的需要重传的数据包的序号即为丢失包序号。此外, 接收端还设置有重传线程,用于向发送端请求重传丢失包序号对应的数据包。
由于第一数据包的包序号大于第一期望包序号,说明第一数据包不是接 收端当前期望的数据包的包序号,也即认为第一期望包序号对应的数据包丢 失了,此时,可以查询重传队列中是否存在与第一期望包序号相同的第一丢 失包序号,如果重传队列中存在第一丢失包序号,则可以认为第一期望包序 号对应的数据包还在等待重传中,此时便可以保持第一期望包序号不变,再 次返回执行步骤S202,即再次从缓存队列中获取先后顺序中的下一个数据 包,并依次重复执行上述步骤。需要说明的是,此时的期望包序号未发生改变。
步骤S208A,在所述重传队列中不存在所述第一丢失包序号的情况下, 从所述排序队列中查找是否存在与所述第一期望包序号相同的第一目标数 据包,并在所述排序队列中存在所述第一目标数据包的情况下,从所述排序 队列中取出所述第一目标数据包,并对所述第一目标数据包进行所述预设处 理。
本实施例中,重传队列中的数据包不可能无限次重传,如此会导致接收 端数据包数量暴增,因此,重传队列中不可能一直存在第一期望包序号对应 的第一丢失包序号,而本实施例对应的正是判断重传队列中是否存在与第一 期望包序号相同的第一丢失包序号时的另一种情况,即在重传队列中不存在 第一丢失包序号的情况,也就是说,重传队列中的第一丢失包序号在被重传 线程请求重传多次后从重传队列中删除。这种情况下,可以在排序队列中查 找是否存在与第一期望包序号相同的第一目标数据包,如果在排序队列中查 找到第一目标数据包,则可以直接从排序队列中取出该第一目标数据包,并 对进行预设处理。
需要说明的是,如果从缓存队列中获取的不是第一个数据包,那么排序 队列中除了当前从缓存队列中获取的第一数据包之外,还可以存储多个之前 获取的第一数据包,此处便是在排序队列中,除去当前从缓存队列中获取的 第一数据包之外剩余的第一数据包中,查找是否存在与所述第一期望包序号 相同的第一目标数据包。
可以理解的是,如果与第一期望包序号相同的第一目标数据包即使请求 重传多次还是丢失了,排序队列中则不存在第一目标数据包,在这种情况下, 可以执行以下步骤:在所述排序队列中不存在所述第一目标数据包的情况下, 从所述排序队列中取出包序号最小的第二数据包,并对所述第二数据包进行 所述预设处理,以及将所述第一期望包序号更新为所述第二数据包的包序号。
本实施例中,如果排序队列中不存在第一目标数据包,此时,取包线程 可以取出排序队列中包序号最小的数据包,即称为第二数据包,并对第二数 据包进行预设处理,以及将所述第一期望包序号更新为所述第二数据包的包 序号,如此便可以直接获取到更新后的第一期望包序号。
当重传队列中不存在第一丢失包序号时,可以认为不会再重新请求发送 端发送第一丢失包序号对应的数据包,并且由于排序队列中也不存在第一目 标数据包,因此,为了保障较低的通信延迟,可以认为再也不会接收到第一 目标数据包,此时便可以跳过第一目标数据包,而直接从排序队列中选择包 序号最小的数据包进行预设处理。
在一种实施方式中,在对每个数据包进行预设处理之后,例如,对第一 目标数据包进行预设处理,或者,对第二数据包进行预设处理,以及将第一 期望包序号更新为所述第二数据包的包序号之后,为了简化获取数据包的流 程,在一种实施方式中,本申请的数据处理方法还可以包括以下步骤:
步骤S209A,按照预设增益增加所述第一期望包序号,得到第二期望包 序号;
步骤S210A,查询超前包队列中是否存在与所述第二期望包序号具有相 同包序号的第三数据包,所述超前包队列中的数据包的包序号大于所述第一 期望包序号;
步骤S211A,在所述超前包队列中存在所述第三数据包的情况下,从所 述超前包队列中取出所述第三数据包,并对所述第三数据包进行所述预设处 理,以及按照所述预设增益增加所述第二期望包序号,得到第三期望包序号。
本实施例中,预设增益是指第一期望包序号增加的幅度,如果第一期望 包序号每次增加1,则预设增益为1。其中,预设增益的大小为音视频数据 封包时,相邻的两个数据包之间的包序号的差值,例如,相邻的两个包的包 序号分别2和3,此时预设增益则为1,又例如,相邻的两个包的包序号分 别20和30,此时预设增益则为10。
如果当前期望包序号为2,且预设增益为1,那么按照预设增益增加第 一期望包序号,得到的第二期望包序号则为3。
在获得第二期望包序号之后,便可以首先在超前包队列中查找是否存在 与第二期望包序号具有相同包序号的第三数据包,如果超前包队列中存在第 三数据包,则可以直接从超前包队列中取出第三数据包,并对第三数据包进 行预设处理,接着,继续按照预设增益增加第二期望包序号,从而获得第三 期望包序号,以此类推,直到超前包队列中不存在与任意一个期望包序号对 应的数据包为止,如果超前包队列中不存在与任意一个期望包序号对应的数 据包,则需要再次返回执行上述步骤S202,即再次从缓存队列中获取先后顺序中的下一个数据包,并依次重复执行上述步骤。
需要说明的是,如果未获取数据包以及未对数据包进行预设处理,那么 此时的期望包序号就不会发生改变。
本实施例中,通过设置超前包队列,并在期望包序号发生改变之后,首 先从超前包队列中查找是否存在与期望包序号对应的数据包,可以避免将超 前来的数据包丢弃,同时还可以简化获取数据包的步骤。
在一种实施方式中,如果用户选择的是第二预设模式,本实施例的数据 处理方法还可以包括以下步骤:
步骤S206B,在当前执行的数据处理模式为第二预设模式,且在所述第 一数据包的包序号大于所述第一期望包序号的情况下,判断所述排序队列中 是否存在与所述第一期望包序号相同的第四数据包。
步骤S207B,在所述排序队列中存在与所述第一期望包序号相同的第四 数据包的情况下,从所述排序队列中取出所述第四数据包,并对所述第四数 据包进行所述预设处理。
本实施例中,在用户选择的数据处理模式为第二预设模式的情况下,如 果判断第一数据包的包序号大于第一期望包序号,则可以直接查询并判断排 序队列中是否存在与第一期望包序号相同的第四数据包,如果排序队列中存 在与第一期望包序号相同的第四数据包,直接从排序队列中取出第四数据包 进行预设处理。
可以理解的是,如果接收端长时间未接收到与第一期望包序号相同的第 四数据包,排序队列中则不会存在第四数据包,在这种情况下,可以执行以 下步骤:
步骤S208B,在所述排序队列中不存在与所述第一期望包序号相同的第 四数据包的情况下,判断重传队列中是否存在与所述第一期望包序号相同的 第二丢失包序号。
步骤S209B,在所述重传队列中存在所述第二丢失包序号的情况下,判 断所述排序队列中的数据包的数量是否大于第一预设数量。
步骤S210B,若否,则保持所述第一期望包序号不变。
步骤S211B,若是,则从所述排序队列中取出包序号最小的第五数据包, 并对所述第五数据包进行所述预设处理,以及将所述第一期望包序号更新为 所述第五数据包的包序号。
本实施例中,如果排序队列中不存在第四数据包,则接着判断重传队列 中是否存在与第一期望包序号相同的第二丢失包序号,如果重传队列中存在 第二丢失包序号,表明重传线程还会请求重传第二丢失包序号对应的数据包, 即第四数据包,此时,可以进一步判断排序队列中的数据包的数量是否大于 第一预设数量,其中,第一预设数量是设计人员根据需要确定的,通常情况 下,第一预设数量越大,表明等待接收第四数据包的时间越长,排序队列中 接收到第四数据包的可能性越大,可以保障通信质量,但是相对来说通信延迟也相对较大。
如果判断排序队列中的数据包的数量大于第一预设数量,可以认为是已 经等待了足够长的时间还是未接收到第四数据包,此时,取包线程可以取出 排序队列中包序号最小的数据包,即称为第五数据包,并对第五数据包进行 预设处理,以及将第一期望包序号更新为所述第五数据包的包序号,如此便 可以直接获取到更新后的第一期望包序号。
如果判断排序队列中的数据包的数量小于第一预设数量,可以认为是等 待的时间还不够,可以继续等待接收第四数据包,此时,取包线程可以保持 第一期望包序号不变,并再次返回执行上述步骤S202,即再次从缓存队列 中获取先后顺序中的下一个数据包,并依次重复执行上述步骤。
同样地,由于重传队列中的数据包不可能无限次重传,如此会导致接收 端数据包数量暴增,因此,重传队列中不可能一直存在第一期望包序号对应 的第二丢失包序号,因此,在这种情况下,在判断重传队列中是否存在与第 一期望包序号相同的第二丢失包序号之后,可能会出现重传队列中不存在第 二丢失包序号的情况,此时可以执行以下步骤:
步骤S212B,在所述重传队列中不存在所述第二丢失包序号的情况下, 判断所述排序队列中的数据包的数量是否大于第二预设数量,所述第二预设 数量大于所述第一预设数量。
步骤S213B,在所述排序队列中的数据包的数量小于第二预设数量的情 况下,保持所述第一期望包序号不变。
步骤S214B,在所述排序队列中的数据包的数量大于第二预设数量的情 况下,从所述排序队列中取出包序号最小的第六数据包,并对所述第六数据 包进行所述预设处理,以及将所述第一期望包序号更新为所述第六数据包的 包序号。
本实施例中,如果重传队列中不存在第二丢失包序号,此时可以进一步 判断排序队列中的数据包的数量是否大于第二预设数量,同样地,第二预设 数量是设计人员根据需要确定的,并且,第二预设数量大于第一预设数量。
如果判断排序队列中的数据包的数量大于第二预设数量,可以认为是已 经等待了足够长的时间还是未接收到第四数据包,此时,取包线程可以取出 排序队列中包序号最小的数据包,即称为第六数据包,并对第六数据包进行 预设处理,以及将第一期望包序号更新为所述第六数据包的包序号,如此便 可以直接获取到更新后的第一期望包序号。
如果判断排序队列中的数据包的数量小于第二预设数量,可以认为是等 待的时间还不够,可以继续等待接收第四数据包,此时,取包线程可以保持 第一期望包序号不变,并再次返回执行上述步骤S202,即再次从缓存队列 中获取先后顺序中的下一个数据包,并依次重复执行上述步骤。
在一种实施方式中,在对每个数据包进行预设处理之后,例如,对第四 数据包进行预设处理,或者,对第五数据包进行预设处理,以及将第一期望 包序号更新为第五数据包的包序号,或者,对所述第六数据包进行所述预设 处理,以及将所述第一期望包序号更新为第六数据包的包序号之后,考虑到 排序队列中存在多个数据包,因此,可以直接从排序队列中获取数据包,在 一种实施方式中,本申请的数据处理方法还可以包括以下步骤:
步骤S215B,按照所述预设增益增加所述第一期望包序号,得到第四期 望包序号。
步骤S216B,查询排序队列中是否存在与所述第四期望包序号具有相同 包序号的第七数据包。
步骤S217B,在所述排序队列中存在所述第七数据包的情况下,从所述 排序队列中取出所述第七数据包,并对所述第七数据包进行所述预设处理, 以及按照所述预设增益增加所述第四期望包序号,得到第五期望包序号。
本实施例中,关于预设增益的具体内容可以参见上述步骤S209A-步骤 S211A的内容,这里不再赘述。
在获得第四期望包序号之后,便可以首先在排序队列中查找是否存在与 第四期望包序号具有相同包序号的第七数据包,如果排序队列中存在第七数 据包,则可以直接从排序队列中取出第七数据包,并对第七数据包进行预设 处理,接着,继续按照预设增益增加第四期望包序号,从而获得第五期望包 序号,以此类推,直到排序队列中不存在与任意一个期望包序号对应的数据 包为止,如果排序队列中不存在与任意一个期望包序号对应的数据包,则需 要再次返回执行上述步骤S202,即再次从缓存队列中获取先后顺序中的下一个数据包,并依次重复执行上述步骤。
本实施例中,通过设置第一预设数量和第二预设数量,取包线程不会在 判断排序队列中不存在与第一期望包序号相同的第四数据包的情况下,便立 即选取排序队列中包序号最小的数据包进行预设处理,而是等待排序队列继 续接收一定数量的数据包,如此,使得排序队列可以设置一段接收等待时间, 以使得尽可能的接收与第一期望包序号相同的第四数据包,降低第四数据包 丢包的概率,保障通信质量。
需要说明的是,本实施例中,第一目标数据包、第一数据包、第二数据 包、第三数据包、第四数据包、第五数据包和第六数据包均为对具体某个数 据包的指代,在一些情况下,这些数据包之间的一个或者多个可以指代同一 个数据包。
在一种实施方式中,本申请的数据处理方法具体还可以包括以下步骤:
步骤S21,确定与获取所述第一数据包之前相邻获取的在先数据包的包 序号;
步骤S22,在所述第一数据包的包序号与所述在先数据包的包序号之间 的差值大于预设差值的情况下,将所述第一数据包的包序号与所述在先数据 包的包序号之间的包序号确定为丢失包序号;
步骤S23,将所述丢失包序号加入所述重传队列;
步骤S24,向所述发送端请求重传所述重传队列中与所述丢失包序号对 应的数据包。
本实施例中,预设差值的大小同样为音视频数据封包时,相邻的两个数 据包之间的包序号的差值大小。例如,相邻的两个包的包序号分别2和3, 此时预设增益则为1,又例如,相邻的两个包的包序号分别20和30,此时 预设增益则为10。
此外,由于会按照先进先出的先后顺序获取第一数据包,因此,第一数 据包可能存在两种情况,一种情况是,第一数据包为第一个获取的数据包, 此时,第一数据包之前不存在相邻获取的在线数据包的包序号,这种情况下, 可以将第一数据包之前相邻获取的在先数据包的包序号默认设置为0,进而 可以确定第一数据包的包序号与在先数据包的包序号之间的差值;另一种情 况是,第一数据包不是第一个获取的数据包,此时,第一数据包之前存在相 邻获取的在线数据包的包序号,这种情况下,同样可以确定第一数据包的包 序号与在先数据包的包序号之间的差值。
在确定第一数据包的包序号与在先数据包的包序号之间的差值之后,可 以判断差值是否大于预设差值,如果确定出的差值大于预设差值,则可以将 第一数据包的包序号与所述在先数据包的包序号之间的包序号确定为丢失 包序号,并将丢失包序号加入重传队列中。
示例地,假设预设差值为1,一种情况下,第一数据包为第一个获取的 数据包,其包序号为4,将其与0进行差值计算,得到差值为4,大于预设 差值1,因此,将0与3之间的包序号1、2、3确定为丢失包序号,并加入 重传队列中;另一种情况下,第一数据包不是第一个获取的数据包,同样假 设其包序号为4,第一数据包之前获取的数据包为2,将4与2进行差值计 算,得到差值为2,同样大于预设差值1,因此,将2与4之间的包序号3 确定为丢失包序号,并加入重传队列中。
此外,接收端还设置有处理重传的重传线程retryThread,该重传线程负 责从重传队列中取出丢失包序号发送到发送端,即实现向发送端请求重传重 传队列中与丢失包序号对应的数据包的功能。
此外,一方面考虑到重传队列中的丢失包序号可能存在多种情况,例如, 有的丢失包序号比期望包序号小,有的丢失包序号比期望包序号大,对于小 于期望包序号的丢失包序号,再进行重传没有意义,另一方面考虑到重传队 列中的数据包不可能无限次重传,如此会导致接收端数据包数量暴增,因此, 为了避免接收端数据包数量暴增,同时也为了节约网络传输资源,在一种实 施方式中,在将丢失包序号加入重传队列之后,本实施例的数据处理方法还 可以执行以下步骤:
步骤S25,从所述重传队列中删除丢失包序号小于所述第一期望包序号 的丢失包序号,得到剩余的多个丢失包序号。
本实施例中,可以从重传队列中删除丢失包序号小于第一期望包序号的 丢失包序号,得到剩余的多个丢失包序号,如此,可以减少请求小于期望包 序号的丢失包序号对应的数据包的重传操作,节约带宽,同时,也可以起到 移除脏数据的作用。
步骤S26,从所述剩余的多个丢失包序号中确定待重传的待重传包序号; 其中,所述待重传包序号为重传次数小于预设次数的丢失包序号,或为上一 次重传时间与当前时间的差值大于预设时间阈值,且重传次数小于预设次数 的丢失包序号。
本实施例中,设置多种确定待重传包序号的策略,具体可以根据需要进 行选用。其中,一种策略是直接根据重传次数确定待重传包序号,例如,直 接将重传次数小于预设次数的丢失包序号确定为待重传包序号;另一种则是 在重传次数的基础上考虑每次重传过程中所花费的重传时间,具体地,将上 一次重传时间与当前时间的差值大于预设时间阈值,且重传次数小于预设次 数的丢失包序号,如此,可以考虑到待重传数据包重传过程中所花费的时间, 尽量在每次重传之后等待接收端以正常的重传时间接收重传的数据包,降低 重传频率。
本实施例中,针对重传队列中的丢失包序号,可以构建数据结构 LossPacket,包含字段seq_num序号,retries重传次数,sent_at_time发送时 间,如此,便可以记录每个丢失包序号,每个丢失包序号对应的重传次数, 以及每个丢失包序号每次请求重传之后所花费的时间。
相应地,上述步骤S24具体为:向所述发送端请求重传所述重传队列中 与所述待重传包序号对应的数据包。
本实施例中,针对丢失包序号设置多种确定待重传包序号的策略,可以 根据需要进行选择,提高了通过UDP传输的可靠性以及丢包重传的灵活性。
具体实现时,根据多次测试结果表明,采用本实施例的数据处理方法可 以在50%的丢包下保障视频不卡顿。
综上所述,参考图3,图3是本申请一实施例提出的一种数据处理方法 的流程示意图。如图3所示,本发明实施例提供的一种数据处理方法的流程 为:
(1)取包线程从缓存队列中获取第一数据包,将第一数据包加入排序 队列,进入步骤(2);
(2)取包线程判断第一数据包是否是第一个获取的数据包,如果是, 则进入步骤(3),如果否,则进入步骤(4);
(3)取包线程将第一数据包的包序号作为第一期望包序号,从排序队 列中取出第一数据包并进行预设处理,将第一期望包序号加1,返回步骤(1);
(4)取包线程判断第一数据包的包序号与第一期望包序号的大小关系, 若第一数据包的包序号等于第一期望包序号,进入步骤(5),若第一数据包 的包序号大于第一期望包序号,进入步骤(7),若第一数据包的包序号小于 第一期望包序号,进入步骤(9);
(5)取包线程从排序队列中取出第一数据包并进行预设处理,将第一 期望包序号加1,获得第二期望包序号,判断超前包队列中是否存在与第二 期望包序号具有相同包序号的第三数据包,若是,则进入步骤(6),若否, 则返回步骤(1);
(6)取包线程从超前包队列中取出第三数据包并进行预设处理,将第 二期望包序号作为第一期望包序号,重复执行将第一期望包序号加1,判断 超前包队列中是否存在与第二期望包序号具有相同包序号的第三数据包,若 是,则进入步骤(6),若否,则返回步骤(1);
(7)取包线程将第一数据包加入超前包队列,并判断重传队列中是否 存在与第一期望包序号相同的第一丢失包序号,若存在,则保持第一期望包 序号不变,返回步骤(1),若不存在,则判断排序队列中是否存在与第一期 望包序号相同的第一目标数据包,若存在,则进入步骤(5),若不存在,则 进入步骤(8);
(8)取包线程从排序队列中取出包序号最小的第二数据包并进行预设 处理,将第一期望包序号更新为第二数据包的包序号,将第一期望包序号加 1,获得第二期望包序号,判断超前包队列中是否存在与第二期望包序号具 有相同包序号的第三数据包,若是,则进入步骤(6),若否,则返回步骤(1);
(9)从排序队列中删除第一期望包序号,返回步骤(1)。
参考图4,图4是本申请一实施例提出的另一种数据处理方法的流程示 意图。如图4所示,本发明实施例提供的一种数据处理方法的流程为:
(1)取包线程从缓存队列中获取第一数据包,将第一数据包加入排序 队列,进入步骤(2);
(2)取包线程判断第一数据包是否是第一个获取的数据包,如果是, 则进入步骤(3),如果否,则进入步骤(4);
(3)取包线程将第一数据包的包序号作为第一期望包序号,从排序队 列中取出第一数据包并进行预设处理,将第一期望包序号加1,返回步骤(1);
(4)取包线程判断排序队列中是否存在与第一期望包序号相同的第四 数据包,若存在,则进入步骤(5),若不存在,则进入步骤(7);
(5)从排序队列中取出第四数据包并进行预设处理,将第一期望包序 号加1,获得第四期望包序号,判断排序队列中是否存在与第四期望包序号 具有相同包序号的第七数据包,若是,则进入步骤(6),若否,则进入步骤 (1);
(6)取包线程从排序队列中取出第七数据包并进行预设处理,将第四 期望包序号作为第一期望包序号,重复执行将第一期望包序号加1,判断排 序队列中是否存在与第四期望包序号具有相同包序号的第七数据包,若是, 则进入步骤(6),若否,则返回步骤(1);
(7)取包线程判断重传队列中是否存在与第一期望包序号相同的第二 丢失包序号,若不存在,则进入步骤(10),若存在,则判断排序队列中的 数据包的数量是否大于第一预设数量,若是,进入步骤(9),若否,进入步 骤(8);
(8)保持第一期望包序号不变,返回步骤(1);
(9)取包线程从排序队列中取出包序号最小的第五数据包,并进行预 设处理,将第一期望包序号更新为第五数据包的包序号,重复执行将第一期 望包序号加1,判断排序队列中是否存在与第四期望包序号具有相同包序号 的第七数据包,若是,则进入步骤(6),若否,则返回步骤(1);
(10)取包线程判断排序队列中的数据包的数量是否大于第二预设数量, 若是,进入步骤(12),若否,进入步骤(11);
(11)保持第一期望包序号不变,返回步骤(1);
(12)取包线程从排序队列中取出包序号最小的第六数据包,并进行预 设处理,将第一期望包序号更新为第六数据包的包序号,重复执行将第一期 望包序号加1,判断排序队列中是否存在与第四期望包序号具有相同包序号 的第七数据包,若是,则进入步骤(6),若否,则返回步骤(1)。
参考图5,图5是本申请一实施例提出的另一种数据处理方法的流程示 意图。如图5所示,本发明实施例提供的一种数据处理方法的流程为:
客户端采集音视频数据,并对采集的音视频数据进行RTP封包,接着客 户端通过UDP协议将封包后的音视频数据发送到服务器端,同时对发送的 音视频数据包进行缓存。
服务器在接收到音视频数据包之后,对接收的音视频数据包采用本申请 实施例的数据处理方法进行排序处理和丢包处理,并向客户端发送重传请求, 请求客户端重传丢失的数据包,服务器再对重传后的音视频数据包以及未经 重传直接收的音视频数据包进行排序处理。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系 列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述 的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或 者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例 均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
基于相同的技术构思,请参考图6,图6示出了本申请实施例提供的一 种数据处理装置600的结构框图,应用于接收端,如图6所示,所述装置包 括:
存储模块601,用于接收发送端依据UDP协议所发送的多个数据包,并 按照接收所述多个数据包的先后顺序,存储到缓存队列中;
第一加入模块602,用于按照先进先出的先后顺序,从所述缓存队列中 获取第一数据包,将所述第一数据包加入到排序队列中;
第一判断模块603,用于判断所述第一数据包的包序号与第一期望包序 号的大小关系,所述第一期望包序号为所述接收端当前期望收到的数据包的 包序号;
第一处理模块604,用于在所述第一数据包的包序号与所述第一期望包 序号相同的情况下,将所述第一数据包从所述排序队列中取出,并对所述第 一数据包进行预设处理,其中,所述预设处理包括转发和/或解码;
第一删除模块605,用于在所述第一数据包的包序号小于所述第一期望 包序号的情况下,将所述第一数据包从所述排序队列中删除。
可选地,所述装置还包括:
第二判断模块,用于在当前执行的数据处理模式为第一预设模式,且在 所述第一数据包的包序号大于所述第一期望包序号的情况下,判断重传队列 中是否存在与所述第一期望包序号相同的第一丢失包序号;
第一保持模块,用于在所述重传队列中存在所述第一丢失包序号的情况 下,保持所述第一期望包序号不变;
第二处理模块,用于在所述重传队列中不存在所述第一丢失包序号的情 况下,从所述排序队列中查找是否存在与所述第一期望包序号相同的第一目 标数据包,并在所述排序队列中存在所述第一目标数据包的情况下,从所述 排序队列中取出所述第一目标数据包,并对所述第一目标数据包进行所述预 设处理。
可选地,所述装置还包括:
第三处理模块,用于在所述排序队列中不存在所述第一目标数据包的情 况下,从所述排序队列中取出包序号最小的第二数据包,并对所述第二数据 包进行所述预设处理,以及将所述第一期望包序号更新为所述第二数据包的 包序号
可选地,所述装置还包括:
第一增加模块,用于按照预设增益增加所述第一期望包序号,得到第二 期望包序号;
第一查询模块,用于查询超前包队列中是否存在与所述第二期望包序号 具有相同包序号的第三数据包,所述超前包队列中的数据包的包序号大于所 述第一期望包序号;
第四处理模块,用于在所述超前包队列中存在所述第三数据包的情况下, 从所述超前包队列中取出所述第三数据包,并对所述第三数据包进行所述预 设处理,以及按照所述预设增益增加所述第二期望包序号,得到第三期望包 序号。
可选地,所述装置还包括:
第三判断模块,用于在当前执行的数据处理模式为第二预设模式,且在 所述第一数据包的包序号大于所述第一期望包序号的情况下,判断所述排序 队列中是否存在与所述第一期望包序号相同的第四数据包;
第五处理模块,用于在所述排序队列中存在与所述第一期望包序号相同 的第四数据包的情况下,从所述排序队列中取出所述第四数据包,并对所述 第四数据包进行所述预设处理。
可选地,所述装置还包括:
第四判断模块,用于在所述排序队列中不存在与所述第一期望包序号相 同的第四数据包的情况下,判断重传队列中是否存在与所述第一期望包序号 相同的第二丢失包序号;
第五判断模块,用于在判断所述重传队列中存在所述第二丢失包序号的 情况下,判断所述排序队列中的数据包的数量是否大于第一预设数量;
第二保持模块,用于若否,则保持所述第一期望包序号不变;
第六处理模块,用于若是,则从所述排序队列中取出包序号最小的第五 数据包,并对所述第五数据包进行所述预设处理,以及将所述第一期望包序 号更新为所述第五数据包的包序号。
可选地,所述装置还包括:
第六判断模块,用于在所述重传队列中不存在所述第二丢失包序号的情 况下,判断所述排序队列中的数据包的数量是否大于第二预设数量,所述第 二预设数量大于所述第一预设数量;
第三保持模块,用于在所述排序队列中的数据包的数量小于第二预设数 量的情况下,保持所述第一期望包序号不变;
第七处理模块,用于在所述排序队列中的数据包的数量大于第二预设数 量的情况下,从所述排序队列中取出包序号最小的第六数据包,并对所述第 六数据包进行所述预设处理,以及将所述第一期望包序号更新为所述第六数 据包的包序号。
可选地,所述装置还包括:
第二增加模块,用于按照所述预设增益增加所述第一期望包序号,得到 第四期望包序号;
第二查询模块,用于查询排序队列中是否存在与所述第四期望包序号具 有相同包序号的第七数据包;
第八处理模块,用于在所述排序队列中存在所述第七数据包的情况下, 从所述排序队列中取出所述第七数据包,并对所述第七数据包进行所述预设 处理,以及按照所述预设增益增加所述第四期望包序号,得到第五期望包序 号。
可选地,所述装置还包括:
第一确定模块,用于确定与获取所述第一数据包之前相邻获取的在先数 据包的包序号;
第二确定模块,用于在所述第一数据包的包序号与所述在先数据包的包 序号之间的差值大于预设差值的情况下,将所述第一数据包的包序号与所述 在先数据包的包序号之间的包序号确定为丢失包序号;
第二加入模块,用于将所述丢失包序号加入所述重传队列;
重传模块,用于向所述发送端请求重传所述重传队列中与所述丢失包序 号对应的数据包。
可选地,所述装置还包括:
第二删除模块,用于从所述重传队列中删除丢失包序号小于所述第一期 望包序号的丢失包序号,得到剩余的多个丢失包序号;
第三确定模块,用于从所述剩余的多个丢失包序号中确定待重传的待重 传包序号;其中,所述待重传包序号为重传次数小于预设次数的丢失包序号, 或为上一次重传时间与当前时间的差值大于预设时间阈值,且重传次数小于 预设次数的丢失包序号;
所述重传模块,包括:
重传子模块,用于向所述发送端请求重传所述重传队列中与所述待重 传包序号对应的数据包。
本发明实施例还提供了一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个计算机可读存储介质,当由所述一个或多 个处理器执行时,使得所述处理器执行如本发明实施例任一所述的数据处理 方法。
本发明实施例还提供了一种计算机可读存储介质,其存储的计算机程序 使得处理器执行如本发明实施例所述的数据处理方法。
对于数据处理装置实施例而言,由于其与数据处理方法实施例基本相似, 所以描述的比较简单,相关之处参见数据处理方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明 的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见 即可。
以上对本发明所提供的一种数据处理方法、装置、电子设备及计算机可 读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施 方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核 心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实 施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为 对本发明的限制。
Claims (13)
1.一种数据处理方法,其特征在于,应用于接收端,所述方法包括:
接收发送端依据UDP协议所发送的多个数据包,并按照接收所述多个数据包的先后顺序,存储到缓存队列中;
按照先进先出的先后顺序,从所述缓存队列中获取第一数据包,将所述第一数据包加入到排序队列中;
判断所述第一数据包的包序号与第一期望包序号的大小关系,所述第一期望包序号为所述接收端当前期望收到的数据包的包序号;
在所述第一数据包的包序号与所述第一期望包序号相同的情况下,将所述第一数据包从所述排序队列中取出,并对所述第一数据包进行预设处理,其中,所述预设处理包括转发和/或解码;
在所述第一数据包的包序号小于所述第一期望包序号的情况下,将所述第一数据包从所述排序队列中删除。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在当前执行的数据处理模式为第一预设模式,且在所述第一数据包的包序号大于所述第一期望包序号的情况下,判断重传队列中是否存在与所述第一期望包序号相同的第一丢失包序号;
在所述重传队列中存在所述第一丢失包序号的情况下,保持所述第一期望包序号不变;
在所述重传队列中不存在所述第一丢失包序号的情况下,从所述排序队列中查找是否存在与所述第一期望包序号相同的第一目标数据包,并在所述排序队列中存在所述第一目标数据包的情况下,从所述排序队列中取出所述第一目标数据包,并对所述第一目标数据包进行所述预设处理。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述排序队列中不存在所述第一目标数据包的情况下,从所述排序队列中取出包序号最小的第二数据包,并对所述第二数据包进行所述预设处理,以及将所述第一期望包序号更新为所述第二数据包的包序号。
4.根据权利要求2或3所述的方法,其特征在于,在对所述第一目标数据包进行所述预设处理,或者,对所述第二数据包进行所述预设处理,以及将所述第一期望包序号更新为所述第二数据包的包序号之后,所述方法还包括:
按照预设增益增加所述第一期望包序号,得到第二期望包序号;
查询超前包队列中是否存在与所述第二期望包序号具有相同包序号的第三数据包,所述超前包队列中的数据包的包序号大于所述第一期望包序号;
在所述超前包队列中存在所述第三数据包的情况下,从所述超前包队列中取出所述第三数据包,并对所述第三数据包进行所述预设处理,以及按照所述预设增益增加所述第二期望包序号,得到第三期望包序号。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在当前执行的数据处理模式为第二预设模式,且在所述第一数据包的包序号大于所述第一期望包序号的情况下,判断所述排序队列中是否存在与所述第一期望包序号相同的第四数据包;
在所述排序队列中存在与所述第一期望包序号相同的第四数据包的情况下,从所述排序队列中取出所述第四数据包,并对所述第四数据包进行所述预设处理。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在所述排序队列中不存在与所述第一期望包序号相同的第四数据包的情况下,判断所述重传队列中是否存在与所述第一期望包序号相同的第二丢失包序号;
在判断所述重传队列中存在所述第二丢失包序号的情况下,判断所述排序队列中的数据包的数量是否大于第一预设数量;
若否,则保持所述第一期望包序号不变;
若是,则从所述排序队列中取出包序号最小的第五数据包,并对所述第五数据包进行所述预设处理,以及将所述第一期望包序号更新为所述第五数据包的包序号。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在所述重传队列中不存在所述第二丢失包序号的情况下,判断所述排序队列中的数据包的数量是否大于第二预设数量,所述第二预设数量大于所述第一预设数量;
在所述排序队列中的数据包的数量小于所述第二预设数量的情况下,保持所述第一期望包序号不变;
在所述排序队列中的数据包的数量大于所述第二预设数量的情况下,从所述排序队列中取出包序号最小的第六数据包,并对所述第六数据包进行所述预设处理,以及将所述第一期望包序号更新为所述第六数据包的包序号。
8.根据权利要求7所述的方法,其特征在于,在对所述第四数据包进行所述预设处理,或者,对所述第五数据包进行所述预设处理,以及将所述第一期望包序号更新为所述第五数据包的包序号,或者,对所述第六数据包进行所述预设处理,以及将所述第一期望包序号更新为所述第六数据包的包序号之后,所述方法还包括:
按照所述预设增益增加所述第一期望包序号,得到第四期望包序号;
查询排序队列中是否存在与所述第四期望包序号具有相同包序号的第七数据包;
在所述排序队列中存在所述第七数据包的情况下,从所述排序队列中取出所述第七数据包,并对所述第七数据包进行所述预设处理,以及按照所述预设增益增加所述第四期望包序号,得到第五期望包序号。
9.根据权利要求2或6所述的方法,其特征在于,所述方法包括:
确定与获取所述第一数据包之前相邻获取的在先数据包的包序号;
在所述第一数据包的包序号与所述在先数据包的包序号之间的差值大于预设差值的情况下,将所述第一数据包的包序号与所述在先数据包的包序号之间的包序号确定为丢失包序号;
将所述丢失包序号加入所述重传队列;
向所述发送端请求重传所述重传队列中与所述丢失包序号对应的数据包。
10.根据权利要求9所述的方法,其特征在于,在将所述丢失包序号加入所述重传队列之后,所述方法还包括:
从所述重传队列中删除丢失包序号小于所述第一期望包序号的丢失包序号,得到剩余的多个丢失包序号;
从所述剩余的多个丢失包序号中确定待重传的待重传包序号;其中,所述待重传包序号为重传次数小于预设次数的丢失包序号,或为上一次重传时间与当前时间的差值大于预设时间阈值,且重传次数小于预设次数的丢失包序号;
所述向所述发送端请求重传所述重传队列中与所述丢失包序号对应的数据包,包括:
向所述发送端请求重传所述重传队列中与所述待重传包序号对应的数据包。
11.一种数据处理装置,其特征在于,应用于接收端,所述装置包括:
存储模块,用于接收发送端依据UDP协议所发送的多个数据包,并按照接收所述多个数据包的先后顺序,存储到缓存队列中;
第一加入模块,用于按照先进先出的先后顺序,从所述缓存队列中获取第一数据包,将所述第一数据包加入到排序队列中;
第一判断模块,用于判断所述第一数据包的包序号与第一期望包序号的大小关系,所述第一期望包序号为所述接收端当前期望收到的数据包的包序号;
第一处理模块,用于在所述第一数据包的包序号与所述第一期望包序号相同的情况下,将所述第一数据包从所述排序队列中取出,并对所述第一数据包进行预设处理,其中,所述预设处理包括转发和/或解码;
第一删除模块,用于在所述第一数据包的包序号小于所述第一期望包序号的情况下,将所述第一数据包从所述排序队列中删除。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;和
其上存储有指令的一个或多个计算机可读存储介质,当由所述一个或多个处理器执行时,使得所述处理器执行如权利要求1至10任一项所述的数据处理方法的步骤。
13.一种计算机可读存储介质,其特征在于,其存储的计算机程序使得处理器执行如权利要求1至10任一项所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010754834.7A CN112235234A (zh) | 2020-07-30 | 2020-07-30 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010754834.7A CN112235234A (zh) | 2020-07-30 | 2020-07-30 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112235234A true CN112235234A (zh) | 2021-01-15 |
Family
ID=74116573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010754834.7A Pending CN112235234A (zh) | 2020-07-30 | 2020-07-30 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112235234A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113573159A (zh) * | 2021-06-11 | 2021-10-29 | 中国大恒(集团)有限公司北京图像视觉技术分公司 | 一种提高千兆网工业相机传输稳定性的方法及*** |
CN113645291A (zh) * | 2021-08-04 | 2021-11-12 | 百度在线网络技术(北京)有限公司 | 数据通信方法及装置、电子设备和存储介质 |
CN113992306A (zh) * | 2021-09-26 | 2022-01-28 | 北京连山科技股份有限公司 | 一种多链路数据重传方法及*** |
CN114531495A (zh) * | 2022-02-25 | 2022-05-24 | 北方工业大学 | 一种数据包、数据包生成方法及数据包生成*** |
CN115037703A (zh) * | 2021-03-04 | 2022-09-09 | 阿里巴巴新加坡控股有限公司 | 数据处理方法、装置、计算机存储介质及计算机程序产品 |
CN116074252A (zh) * | 2023-03-07 | 2023-05-05 | 国仪量子(合肥)技术有限公司 | Udp数据传输方法及udp数据传输装置 |
CN116775345A (zh) * | 2023-08-21 | 2023-09-19 | 荣耀终端有限公司 | 一种数据传输方法及电子设备 |
CN117527714A (zh) * | 2024-01-04 | 2024-02-06 | 柏科数据技术(深圳)股份有限公司 | 数据报文的读取方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050180327A1 (en) * | 2004-02-12 | 2005-08-18 | International Business Machines Corporation | Method and apparatus for handling reordered data packets |
CN101123580A (zh) * | 2007-09-11 | 2008-02-13 | 华为技术有限公司 | 包传输方法及基站设备 |
CN101394252A (zh) * | 2008-11-12 | 2009-03-25 | 北京佳讯飞鸿电气股份有限公司 | 一种基于rtp的数据传输方法 |
CN102685000A (zh) * | 2012-04-24 | 2012-09-19 | 中兴通讯股份有限公司 | 一种mp碎片序号同步实现方法、设备及*** |
CN105743815A (zh) * | 2016-04-06 | 2016-07-06 | 腾讯科技(深圳)有限公司 | 抖动缓冲数据处理的方法和装置 |
CN110430024A (zh) * | 2019-07-23 | 2019-11-08 | 视联动力信息技术股份有限公司 | 一种数据传输方法、装置、电子设备及存储介质 |
-
2020
- 2020-07-30 CN CN202010754834.7A patent/CN112235234A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050180327A1 (en) * | 2004-02-12 | 2005-08-18 | International Business Machines Corporation | Method and apparatus for handling reordered data packets |
CN101123580A (zh) * | 2007-09-11 | 2008-02-13 | 华为技术有限公司 | 包传输方法及基站设备 |
CN101394252A (zh) * | 2008-11-12 | 2009-03-25 | 北京佳讯飞鸿电气股份有限公司 | 一种基于rtp的数据传输方法 |
CN102685000A (zh) * | 2012-04-24 | 2012-09-19 | 中兴通讯股份有限公司 | 一种mp碎片序号同步实现方法、设备及*** |
CN105743815A (zh) * | 2016-04-06 | 2016-07-06 | 腾讯科技(深圳)有限公司 | 抖动缓冲数据处理的方法和装置 |
CN110430024A (zh) * | 2019-07-23 | 2019-11-08 | 视联动力信息技术股份有限公司 | 一种数据传输方法、装置、电子设备及存储介质 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115037703A (zh) * | 2021-03-04 | 2022-09-09 | 阿里巴巴新加坡控股有限公司 | 数据处理方法、装置、计算机存储介质及计算机程序产品 |
CN115037703B (zh) * | 2021-03-04 | 2024-04-19 | 阿里巴巴创新公司 | 数据处理方法、装置、计算机存储介质及计算机程序产品 |
CN113573159A (zh) * | 2021-06-11 | 2021-10-29 | 中国大恒(集团)有限公司北京图像视觉技术分公司 | 一种提高千兆网工业相机传输稳定性的方法及*** |
CN113645291B (zh) * | 2021-08-04 | 2022-11-18 | 百度在线网络技术(北京)有限公司 | 数据通信方法及装置、电子设备和存储介质 |
CN113645291A (zh) * | 2021-08-04 | 2021-11-12 | 百度在线网络技术(北京)有限公司 | 数据通信方法及装置、电子设备和存储介质 |
CN113992306A (zh) * | 2021-09-26 | 2022-01-28 | 北京连山科技股份有限公司 | 一种多链路数据重传方法及*** |
CN114531495A (zh) * | 2022-02-25 | 2022-05-24 | 北方工业大学 | 一种数据包、数据包生成方法及数据包生成*** |
CN114531495B (zh) * | 2022-02-25 | 2022-10-11 | 北方工业大学 | 一种数据包、数据包生成方法及数据包生成*** |
CN116074252A (zh) * | 2023-03-07 | 2023-05-05 | 国仪量子(合肥)技术有限公司 | Udp数据传输方法及udp数据传输装置 |
CN116074252B (zh) * | 2023-03-07 | 2023-06-06 | 国仪量子(合肥)技术有限公司 | Udp数据传输方法及udp数据传输装置 |
CN116775345A (zh) * | 2023-08-21 | 2023-09-19 | 荣耀终端有限公司 | 一种数据传输方法及电子设备 |
CN116775345B (zh) * | 2023-08-21 | 2023-12-19 | 荣耀终端有限公司 | 一种数据传输方法及电子设备 |
CN117527714A (zh) * | 2024-01-04 | 2024-02-06 | 柏科数据技术(深圳)股份有限公司 | 数据报文的读取方法、装置、设备及存储介质 |
CN117527714B (zh) * | 2024-01-04 | 2024-03-15 | 柏科数据技术(深圳)股份有限公司 | 数据报文的读取方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112235234A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
US20130227102A1 (en) | Chunk Request Scheduler for HTTP Adaptive Streaming | |
CN106612284B (zh) | 一种流数据的传输方法和装置 | |
CN109787722B (zh) | 数据传输方法、装置和服务器 | |
US20110032941A1 (en) | Systems and methods for accelerating tcp/ip data stream processing | |
CN111147606B (zh) | 数据传输的方法、装置、终端及存储介质 | |
KR100655600B1 (ko) | P2p기반 스트리밍 서비스 제공방법 및 장치 | |
US20150271231A1 (en) | Transport accelerator implementing enhanced signaling | |
KR102197974B1 (ko) | 멀티미디어 컨텐츠를 수신하도록 구성되는 클라이언트 단말기의 다운로딩 거동을 적응시키는 방법 및 대응 단말기 | |
US11350142B2 (en) | Intelligent video frame dropping for improved digital video flow control over a crowded wireless network | |
KR20070115944A (ko) | 핸드쉐이크리스 재송신 프로토콜 | |
JP2005192216A (ja) | トランスポートオフロードエンジンのための再送信システムおよび方法 | |
CN110830460A (zh) | 一种连接建立方法、装置、电子设备及存储介质 | |
US7203184B2 (en) | Data transmitter, data receiver, and data transmitting/receiving method | |
CN113708895A (zh) | 数据传输方法、装置及电子设备 | |
US9137088B2 (en) | Voice over internet protocol multi-routing with packet interleaving | |
JP2006287925A (ja) | エラー回復機構およびそれを備えるネットワーク要素 | |
EP3120475A1 (en) | Transport accelerator implementing selective utilization of redundant encoded content data functionality | |
WO2020163124A1 (en) | In-packet network coding | |
US8054847B2 (en) | Buffer management in a network device | |
CN113573003B (zh) | 一种基于弱网的音视频实时通信方法、装置以及设备 | |
US20030152080A1 (en) | System and method for fault tolerant multimedia communication | |
US10931584B2 (en) | Data frame transmission | |
CN110881018B (zh) | 媒体流的实时接收方法及客户端 | |
CN114979793A (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 |