CN112583524B - 数据包恢复方法及装置 - Google Patents

数据包恢复方法及装置 Download PDF

Info

Publication number
CN112583524B
CN112583524B CN201910945466.1A CN201910945466A CN112583524B CN 112583524 B CN112583524 B CN 112583524B CN 201910945466 A CN201910945466 A CN 201910945466A CN 112583524 B CN112583524 B CN 112583524B
Authority
CN
China
Prior art keywords
data packet
original data
encoded
original
packet
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.)
Active
Application number
CN201910945466.1A
Other languages
English (en)
Other versions
CN112583524A (zh
Inventor
邹翰
王兴鹤
辛安民
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Digital Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Hikvision Digital Technology Co Ltd filed Critical Hangzhou Hikvision Digital Technology Co Ltd
Priority to CN201910945466.1A priority Critical patent/CN112583524B/zh
Publication of CN112583524A publication Critical patent/CN112583524A/zh
Application granted granted Critical
Publication of CN112583524B publication Critical patent/CN112583524B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/06Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种数据包恢复方法及装置,属于通信技术领域。所述方法包括:发送原始数据包;对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组,所述第一编码数据包组中每个第一编码数据包的字节数相同;对所述第一编码数据包组进行前向纠错编码,得到第二编码数据包组;发送所述第二编码数据包组,所述原始数据包组在传输过程中未丢失的原始数据包和所述第二编码数据包组用于恢复所述原始数据包组在传输过程中丢失的原始数据包。本申请可以完成对传输过程中丢失的原始数据包的恢复,避免数据损失。

Description

数据包恢复方法及装置
技术领域
本申请涉及通信技术领域,尤其涉及一种数据包恢复方法及装置。
背景技术
随着多播技术的不断发展,其在各个领域都得到了广泛的应用。例如,视频会议或视频点播时就可以采用多播技术,此时一个设备可以将视频数据同时发送给多个设备。多播技术可以极大地节省数据传输时间,提高数据传输效率。
多播技术往往是使用UDP(User Datagram Protocol,用户数据报协议)来进行数据传输。UDP不提供数据传输的保证机制,即如果在从发送方到接收方的数据传输过程中出现数据包的丢失,UDP并不能做出任何检测或提示。
发明内容
本申请提供了一种数据包恢复方法及装置,可以恢复丢失的原始数据包。
所述技术方案如下:
第一方面,提供了一种数据包恢复方法,所述方法包括:
发送原始数据包;
对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组,所述第一编码数据包组中每个第一编码数据包的字节数相同;
对所述第一编码数据包组进行前向纠错编码,得到第二编码数据包组;
发送所述第二编码数据包组,所述原始数据包组在传输过程中未丢失的原始数据包和所述第二编码数据包组用于恢复所述原始数据包组在传输过程中丢失的原始数据包。
可选地,所述对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组,包括:
确定第一字节数,所述第一字节数大于或等于所述原始数据包组中每个原始数据包的字节数中的最大字节数;
对于所述原始数据包组中的任意一个原始数据包,根据所述第一字节数,在所述一个原始数据包的末端添加第一数据块,所述第一数据块的字节数是所述第一字节数减去所述一个原始数据包的字节数得到;
根据所述第一数据块的字节数,在添加所述第一数据块后的所述一个原始数据包中的预设位置处添加第二数据块,以得到所述第一编码数据包组中的一个第一编码数据包,所述第二数据块的字节数为预设字节数,所述第二数据块中包含所述第一数据块的字节数。
可选地,所述一个原始数据包的预设位置为所述一个原始数据包的首端。
可选地,视频图像中的I帧包括多个原始数据包,所述视频图像中的P帧包括一个或多个原始数据包,所述对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组之前,还包括:
将已发送的一个I帧的所有原始数据包划分到多个原始数据包组,将已发送的多个P帧的所有原始数据包划分到一个原始数据包组,每个原始数据包组中的所有原始数据包的包序连续。
可选地,所述发送所述第二编码数据包组之前,还包括:
对于所述第二编码数据包组中的任意一个第二编码数据包,在所述一个第二编码数据包中添加编码信息数据块;
其中,所述编码信息数据块包含所述一个第二编码数据包在所述第二编码数据包组中的位置信息、所述原始数据包组中第一个原始数据包的包序、所述原始数据包组的数据包个数和所述第二编码数据包组的数据包个数。
可选地,所述前向纠错编码为基于柯西矩阵的RS-FEC编码。
第二方面,提供了一种数据包恢复方法,所述方法包括:
接收原始数据包和第二编码数据包;
从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,所述多个第二编码数据包所属的第二编码数据包组与所述多个原始数据包所属的原始数据包组对应,所述第二编码数据包组是对第一编码数据包组进行前向纠错编码得到,所述第一编码数据包组是对所述原始数据包组中的每个原始数据包进行预编码得到,所述第一编码数据包组中每个第一编码数据包的字节数相同;
当所述多个原始数据包的包序不连续时,确定所述原始数据包组在传输过程中丢失原始数据包;
当所述多个第二编码数据包和所述多个原始数据包满足预设条件时,根据所述多个第二编码数据包和所述多个原始数据包,恢复所述原始数据包组在传输过程中丢失的原始数据包。
可选地,所述第二编码数据包中包含编码信息数据块,所述第二编码数据包中的编码信息数据块包含的目标包序为对应的原始数据包组中第一个原始数据包的包序,所述第二编码数据包中的编码信息数据块包含的目标数据包个数为对应的原始数据包组的数据包个数,所述从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,包括:
确定接收到的第二编码数据包中包含同一目标包序的多个第二编码数据包属于一个第二编码数据包组;
根据所述多个第二编码数据包中任一第二编码数据包中包含的目标包序和目标数据包个数,确定目标包序范围;
确定接收到的原始数据包中包序处于所述目标包序范围内的多个原始数据属于与所述一个第二编码数据包组对应的一个原始数据包组。
可选地,所述当所述多个第二编码数据包和所述多个原始数据包满足预设条件时,根据所述多个第二编码数据包和所述多个原始数据包,恢复所述原始数据包组在传输过程中丢失的原始数据包之前,还包括:
获取所述多个第二编码数据包中的任一第二编码数据包中包含的目标数据包个数;
将获取到的目标数据包个数减去所述多个原始数据包的个数,得到丢失数据包个数;
当所述丢失数据包个数小于所述多个第二编码数据包的个数时,确定所述多个第二编码数据包和所述多个原始数据包满足预设条件。
可选地,所述第二编码数据包中包含编码信息数据块,所述第二编码数据包中的编码信息数据块包含自身在所属的第二编码数据包组中的位置信息和所属的第二编码数据包组的数据包个数,所述根据所述多个第二编码数据包和所述多个原始数据包,恢复所述原始数据包组在传输过程中丢失的原始数据包,包括:
获取所述多个第二编码数据包中的任一第二编码数据包中包含的所述第二编码数据包组的数据包个数,以及获取所述多个第二编码数据包中的每个第二编码数据包中包含的自身在所述第二编码数据包组中的位置信息;
去除所述多个第二编码数据包中的每个第二编码数据包中的编码信息数据块;
将去除编码信息数据块后的所述多个第二编码数据包中的任一第二编码数据包的字节数作为第二字节数,所述第二字节数为所述第一编码数据包组中每个第一编码数据包的字节数;
根据所述第二字节数,对所述多个原始数据包中的每个原始数据包进行预编码,以得到属于所述第一编码数据包组的多个第一编码数据包;
根据所述多个第二编码数据包中的每个第二编码数据包在所述第二编码数据包组中的位置信息和所述第二编码数据包组的数据包个数,对所述多个第一编码数据包和去除编码信息数据块后的所述多个第二编码数据包进行前向纠错解码,以得到所述第一编码数据包组;
对所述第一编码数据包组中的每个第一编码数据包进行预解码,以得到所述原始数据包组。
可选地,所述根据所述第二字节数,对所述多个原始数据包中的每个原始数据包进行预编码,以得到属于所述第一编码数据包组的多个第一编码数据包,包括:
对于所述多个原始数据包中的任意一个原始数据包,根据所述第二字节数,在所述一个原始数据包的末端添加第一数据块,所述第一数据块的字节数是所述第二字节数减去所述一个原始数据包的字节数且减去预设字节数得到;
根据所述第一数据块的字节数,在添加所述第一数据块后的所述一个原始数据包中的预设位置处添加第二数据块,以得到属于所述第一编码数据包组的一个第一编码数据包,所述第二数据块的字节数为所述预设字节数,所述第二数据块中包含所述第一数据块的字节数。
可选地,所述对所述第一编码数据包组中的每个第一编码数据包进行预解码,以得到所述原始数据包组,包括:
对于所述第一编码数据包组中的任意一个第一编码数据包,根据所述一个第一编码数据包中的预设位置处的第二数据块中包含的字节数,从所述一个第一编码数据包的末端去除第一数据块;
根据所述预设字节数,从去除第一数据块后的所述一个第一编码数据包中的预设位置处去除第二数据块,以得到属于所述原始数据包组的一个原始数据包。
第三方面,提供了一种数据包恢复方法,所述方法包括:
第一设备将原始数据包发送给第二设备,并对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组,所述第一编码数据包组中每个第一编码数据包的字节数相同;
所述第一设备对所述第一编码数据包组进行前向纠错编码,得到第二编码数据包组,将所述第二编码数据包组发送给所述第二设备;
所述第二设备接收到所述第一设备发送的原始数据包和第二编码数据包时,从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,所述多个第二编码数据包属于所述第二编码数据包组,所述多个原始数据包属于所述原始数据包组;
所述第二设备在所述多个原始数据包的包序不连续时,确定所述原始数据包组在传输过程中丢失原始数据包;
所述第二设备在所述多个第二编码数据包和所述多个原始数据包满足预设条件时,根据所述多个第二编码数据包和所述多个原始数据包,恢复所述原始数据包组在传输过程中丢失的原始数据包。
第四方面,提供了一种数据包恢复装置,所述装置包括:
第一发送模块,用于发送原始数据包;
第一编码模块,用于对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组,所述第一编码数据包组中每个第一编码数据包的字节数相同;
第二编码模块,用于对所述第一编码数据包组进行前向纠错编码,得到第二编码数据包组;
第二发送模块,用于发送所述第二编码数据包组,所述原始数据包组在传输过程中未丢失的原始数据包和所述第二编码数据包组用于恢复所述原始数据包组在传输过程中丢失的原始数据包。
可选地,所述第一编码模块包括:
确定单元,用于确定第一字节数,所述第一字节数大于或等于所述原始数据包组中每个原始数据包的字节数中的最大字节数;
第一添加单元,用于对于所述原始数据包组中的任意一个原始数据包,根据所述第一字节数,在所述一个原始数据包的末端添加第一数据块,所述第一数据块的字节数是所述第一字节数减去所述一个原始数据包的字节数得到;
第二添加单元,用于根据所述第一数据块的字节数,在添加所述第一数据块后的所述一个原始数据包中的预设位置处添加第二数据块,以得到所述第一编码数据包组中的一个第一编码数据包,所述第二数据块的字节数为预设字节数,所述第二数据块中包含所述第一数据块的字节数。
可选地,所述一个原始数据包的预设位置为所述一个原始数据包的首端。
可选地,视频图像中的I帧包括多个原始数据包,所述视频图像中的P帧包括一个或多个原始数据包,所述装置还包括:
划分模块,用于将已发送的一个I帧的所有原始数据包划分到多个原始数据包组,将已发送的多个P帧的所有原始数据包划分到一个原始数据包组,每个原始数据包组中的所有原始数据包的包序连续。
可选地,所述装置还包括:
添加模块,用于对于所述第二编码数据包组中的任意一个第二编码数据包,在所述一个第二编码数据包中添加编码信息数据块;
其中,所述编码信息数据块包含所述一个第二编码数据包在所述第二编码数据包组中的位置信息、所述原始数据包组中第一个原始数据包的包序、所述原始数据包组的数据包个数和所述第二编码数据包组的数据包个数。
可选地,所述前向纠错编码为基于柯西矩阵的RS-FEC编码。
第五方面,提供了一种数据包恢复装置,所述装置包括:
接收模块,用于接收原始数据包和第二编码数据包;
第一获取模块,用于从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,所述多个第二编码数据包所属的第二编码数据包组与所述多个原始数据包所属的原始数据包组对应,所述第二编码数据包组是对第一编码数据包组进行前向纠错编码得到,所述第一编码数据包组是对所述原始数据包组中的每个原始数据包进行预编码得到,所述第一编码数据包组中每个第一编码数据包的字节数相同;
第一确定模块,用于当所述多个原始数据包的包序不连续时,确定所述原始数据包组在传输过程中丢失原始数据包;
恢复模块,用于当所述多个第二编码数据包和所述多个原始数据包满足预设条件时,根据所述多个第二编码数据包和所述多个原始数据包,恢复所述原始数据包组在传输过程中丢失的原始数据包。
可选地,所述第二编码数据包中包含编码信息数据块,所述第二编码数据包中的编码信息数据块包含的目标包序为对应的原始数据包组中第一个原始数据包的包序,所述第二编码数据包中的编码信息数据块包含的目标数据包个数为对应的原始数据包组的数据包个数,所述获取模块包括:
第一确定单元,用于确定接收到的第二编码数据包中包含同一目标包序的多个第二编码数据包属于一个第二编码数据包组;
第二确定单元,用于根据所述多个第二编码数据包中任一第二编码数据包中包含的目标包序和目标数据包个数,确定目标包序范围;
第三确定单元,用于确定接收到的原始数据包中包序处于所述目标包序范围内的多个原始数据属于与所述一个第二编码数据包组对应的一个原始数据包组。
可选地,所述装置还包括:
第二获取模块,用于获取所述多个第二编码数据包中的任一第二编码数据包中包含的目标数据包个数;
计算模块,用于将获取到的目标数据包个数减去所述多个原始数据包的个数,得到丢失数据包个数;
第二确定模块,用于当所述丢失数据包个数小于所述多个第二编码数据包的个数时,确定所述多个第二编码数据包和所述多个原始数据包满足预设条件。
可选地,所述第二编码数据包中包含编码信息数据块,所述第二编码数据包中的编码信息数据块包含自身在所属的第二编码数据包组中的位置信息和所属的第二编码数据包组的数据包个数,所述恢复模块包括:
获取单元,用于获取所述多个第二编码数据包中的任一第二编码数据包中包含的所述第二编码数据包组的数据包个数,以及获取所述多个第二编码数据包中的每个第二编码数据包中包含的自身在所述第二编码数据包组中的位置信息;
去除单元,用于去除所述多个第二编码数据包中的每个第二编码数据包中的编码信息数据块;
第四确定单元,用于将去除编码信息数据块后的所述多个第二编码数据包中的任一第二编码数据包的字节数作为第二字节数,所述第二字节数为所述第一编码数据包组中每个第一编码数据包的字节数;
编码单元,用于根据所述第二字节数,对所述多个原始数据包中的每个原始数据包进行预编码,以得到属于所述第一编码数据包组的多个第一编码数据包;
第一解码单元,用于根据所述多个第二编码数据包中的每个第二编码数据包在所述第二编码数据包组中的位置信息和所述第二编码数据包组的数据包个数,对所述多个第一编码数据包和去除编码信息数据块后的所述多个第二编码数据包进行前向纠错解码,以得到所述第一编码数据包组;
第二解码单元,用于对所述第一编码数据包组中的每个第一编码数据包进行预解码,以得到所述原始数据包组。
可选地,所述编码单元用于:
对于所述多个原始数据包中的任意一个原始数据包,根据所述第二字节数,在所述一个原始数据包的末端添加第一数据块,所述第一数据块的字节数是所述第二字节数减去所述一个原始数据包的字节数且减去预设字节数得到;
根据所述第一数据块的字节数,在添加所述第一数据块后的所述一个原始数据包中的预设位置处添加第二数据块,以得到属于所述第一编码数据包组的一个第一编码数据包,所述第二数据块的字节数为所述预设字节数,所述第二数据块中包含所述第一数据块的字节数。
可选地,所述第二解码单元用于:
对于所述第一编码数据包组中的任意一个第一编码数据包,根据所述一个第一编码数据包中的预设位置处的第二数据块中包含的字节数,从所述一个第一编码数据包的末端去除第一数据块;
根据所述预设字节数,从去除第一数据块后的所述一个第一编码数据包中的预设位置处去除第二数据块,以得到属于所述原始数据包组的一个原始数据包。
第六方面,提供了一种数据包恢复***,所述***包括:第一设备和第二设备;
所述第一设备,用于将原始数据包发送给所述第二设备,并对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组,所述第一编码数据包组中每个第一编码数据包的字节数相同;对所述第一编码数据包组进行前向纠错编码,得到第二编码数据包组,将所述第二编码数据包组发送给所述第二设备;
所述第二设备,用于接收到所述第一设备发送的原始数据包和第二编码数据包时,从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,所述多个第二编码数据包属于所述第二编码数据包组,所述多个原始数据包属于所述原始数据包组;在所述多个原始数据包的包序不连续时,确定所述原始数据包组在传输过程中丢失原始数据包;在所述多个第二编码数据包和所述多个原始数据包满足预设条件时,根据所述多个第二编码数据包和所述多个原始数据包,恢复所述原始数据包组在传输过程中丢失的原始数据包。
第七方面,提供了一种数据包恢复装置,所述装置包括:
处理器和存储器;
其中,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现第一方面所述的数据包恢复方法。
第八方面,提供了一种数据包恢复装置,所述装置包括:
处理器和存储器;
其中,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现第二方面所述的数据包恢复方法。
第九方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被运行时,执行第一方面所述的数据包恢复方法。
第十方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令被运行时,执行第二方面所述的数据包恢复方法。
第十一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行第一方面所述的数据包恢复方法的步骤。
第十二方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行第二方面所述的数据包恢复方法的步骤。
本申请提供的技术方案至少可以带来以下有益效果:
发送原始数据后,对已发送的原始数据包组中的每个原始数据包进行预编码,得到第一编码数据包组,然后对第一编码数据包组进行前向纠错编码,得到第二编码数据包组。最后,发送第二编码数据包组。原始数据包组在传输过程中未丢失的原始数据包和第二编码数据包组可以恢复原始数据包组在传输过程中丢失的原始数据包。如此,可以完成对传输过程中丢失的原始数据包的恢复,避免数据损失。
附图说明
图1是本申请实施例提供的第一种数据包恢复方法的流程图;
图2是本申请实施例提供的一种预编码处理过程的示意图;
图3是本申请实施例提供的一种前向纠错编码过程的示意图;
图4是本申请实施例提供的一种编码信息数据块的格式示意图;
图5是本申请实施例提供的一种第二编码数据包的格式示意图;
图6是本申请实施例提供的第二种数据包恢复方法的流程图;
图7是本申请实施例提供的一种数据包的发送顺序和接收顺序的示意图;
图8是本申请实施例提供的第三种数据包恢复方法的流程图;
图9是本申请实施例提供的第一种数据传输方式的示意图;
图10是本申请实施例提供的第二种数据传输方式的示意图;
图11是本申请实施例提供的第三种数据传输方式的示意图;
图12是本申请实施例提供的一种第一设备中的功能模块的示意图;
图13是本申请实施例提供的一种第二设备中的功能模块的示意图;
图14是本申请实施例提供的第一种数据包恢复装置的结构示意图;
图15是本申请实施例提供的第二种数据包恢复装置的结构示意图;
图16是本申请实施例提供的一种数据包恢复***的结构示意图;
图17是本申请实施例提供的第三种数据包恢复装置的结构示意图;
图18是本申请实施例提供的第四种数据包恢复装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细地解释说明之前,对本申请实施例的应用场景予以说明。
在单播场景或多播场景下,一个设备将数据传输给另一个设备时,往往会使用UDP来进行数据传输。由于UDP自身并不能提供数据传输的保证机制,所以在从发送方到接收方的数据传输过程中出现数据包丢失时,UDP并不能作出任何检测或提示。这种情况下,如果在数据传输过程中丢失数据包,则会导致接收方的数据损失。为此,本申请实施例提供了一种数据包恢复方法,可以恢复丢失的数据包。
图1是本申请实施例提供的一种数据包恢复方法的流程图。参见图1,该方法包括:
步骤101:发送原始数据包。
需要说明的是,原始数据包为包含原始数据的数据包,该原始数据可以为音频数据、视频数据等。当数据传输协议不同时,原始数据包的格式可以不同。例如,当数据传输协议是RTP(Real-time Transport Protocol,实时传输协议)时,原始数据包的格式可以如图2所示,该原始数据包中可以包括RTP Header(RTP包头)和Payload(有效载荷),该Payload为原始数据。
值得注意的是,在发送原始数据包时,可以每生成一个原始数据包,就发送这个原始数据包。并且,可以在每发送一个原始数据包后,就将这个原始数据包存储到缓存中,之后,可以对缓存中的原始数据包按照实际需求进行分组。例如,当原始数据包中包含的是视频数据时,视频图像中的I帧可以包括多个原始数据包,视频图像中的P帧可以包括一个或多个原始数据包,则此时可以将已发送的一个I帧的所有原始数据包划分到多个原始数据包组,将已发送的多个P帧的所有原始数据包划分到一个原始数据包组。其中,每个原始数据包组中的所有原始数据包的包序连续,也即是,一个原始数据包组中包括多个连续发送的原始数据包。
步骤102:对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组。
需要说明的是,预编码是为了对原始数据包组进行处理以得到能够用于进行前向纠错编码的第一编码数据包组。第一编码数据包组中每个第一编码数据包的字节数相同。
另外,由于参与前向纠错编码的多个数据包中的每个数据包的字节数必须相同,所以本申请实施例中通过对原始数据包组进行预编码来得到字节数相同的第一编码数据包组,可以便于后续对第一编码数据包组进行前向纠错编码。
具体地,步骤102的操作可以为:确定第一字节数;对于原始数据包组中的任意一个原始数据包,根据第一字节数,在这一个原始数据包的末端添加第一数据块,第一数据块的字节数是第一字节数减去这一个原始数据包的字节数得到;根据第一数据块的字节数,在添加第一数据块后的这一个原始数据包中的预设位置处添加第二数据块,以得到第一编码数据包组中的一个第一编码数据包,第二数据块的字节数为预设字节数。
需要说明的是,第一字节数大于或等于原始数据包组中每个原始数据包的字节数中的最大字节数。也即是,第一字节数可以直接为原始数据包组中每个原始数据包的字节数中的最大字节数,也可以为大于原始数据包组中每个原始数据包的字节数中的最大字节数的任一字节数。
另外,第一数据块是用于进行字节填充的数据块,其中可以不含有任何意义的信息,添加它只是为了保证后续参与前向纠错编码的第一编码数据包组的字节数相同。此时,在一个原始数据包的末端添加第一数据块,即是在这个原始数据包的末端添加字节数为第一字节数减去这个原始数据包的字节数后得到的字节数的数据块。如此,在原始数据包组中的每个原始数据包的末端添加相应的第一数据块后,添加第一数据块后的原始数据包组中每个原始数据包的字节数相同,且均为第一字节数。
再者,第二数据块是用于确定第一数据块的字节数的数据块,在一个原始数据包中添加的第二数据块中包含在这个原始数据包中添加的第一数据块的字节数。例如,当一个原始数据包中添加的第一数据块的字节数为5时,在这个原始数据包中添加的第二数据块中包含的数据就可以为5。由于第二数据块的字节数为预设字节数,所以在添加第一数据块后的原始数据包组中的每个原始数据包中的预设位置处添加第二数据块后,得到的第一编码数据包组的字节数相同,且均为预设字节数与第一字节数之和。
最后,预设字节数可以预先进行设置,只要保证预设字节数的字节能够用于表示第二数据块的字节数即可。预设位置也可以预先进行设置,例如,预设位置可以为添加第一数据块后的原始数据包的末端,也可以为原始数据包的中间位置(如可以为原始数据包的包头与有效载荷之间的位置),也可以为原始数据包的首端。
例如,如图2所示,可以在原始数据包组中的每个原始数据包的末端添加第一数据块,然后在原始数据包组中的每个原始数据包的首端添加字节数为预设字节数的第二数据块,来得到第一编码数据包组,此时第一编码数据包组的字节数相同,且均为预设字节数与第一字节数之和。
步骤103:对第一编码数据包组进行前向纠错编码,得到第二编码数据包组。
需要说明的是,前向纠错编码是指对数据包进行编码来得到冗余数据包。本申请实施例中,即是对第一编码数据包组进行前向纠错编码,来得到一组冗余数据包作为第二编码数据包组。例如,前向纠错编码可以为FEC(Forward Error Correction,前向纠错编码)中的RS(Reed-Solome)编码,即为RS-FEC编码,且可以为基于柯西矩阵的RS-FEC编码;当然,前向纠错编码也可以为其它编码,本申请实施例对此不作限定。
另外,进行前向纠错编码时,可以根据k:m的冗余度比例配置。也即是,可以对k个第一编码数据包进行前向纠错编码,来得到m个第二编码数据包。例如,如图3所示,进行前向纠错编码时,可以根据4:3的冗余度比例配置,即第一编码数据包组可以包括四个第一编码数据包,可以对四个第一编码数据包进行RS-FEC编码,来得到三个RS Data(冗余数据包)作为第二编码数据包组。
再者,对第一编码数据包组进行前向纠错编码,得到第二编码数据包组后,第二编码数据包组中的每个第二编码数据包的字节数也相同,且第二编码数据包组中的任一第二编码数据包的字节数与第一编码数据包组中的任一第一编码数据包的字节数相同。
其中,对第一编码数据包组进行前向纠错编码,得到第二编码数据包组的操作与相关技术中对多个数据包进行前向纠错编码,来得到多个冗余数据包的操作类似,本申请实施例对此不进行详细阐述。
值得说明的是,第二编码数据包组与原始数据包组对应,第二编码数据包组用于实现对原始数据包组的丢失保护,即第二编码数据包组用于恢复原始数据包组在传输过程中丢失的原始数据包。
步骤104:发送第二编码数据包组。
需要说明的是,原始数据包组在传输过程中未丢失的原始数据包和第二编码数据包组用于恢复原始数据包组在传输过程中丢失的原始数据包。
进一步地,在步骤104之前,为了便于后续根据第二编码数据包实现对丢失的原始数据包的恢复,还可以对于第二编码数据包组中的任意一个第二编码数据包,在这一个第二编码数据包中添加编码信息数据块。
需要说明的是,如图4所示,在这一个第二编码数据包中添加的编码信息数据块中可以包含这一个第二编码数据包在第二编码数据包组中的位置信息、原始数据包组中第一个原始数据包的包序、原始数据包组的数据包个数和第二编码数据包组的数据包个数。如此,后续根据这一个第二编码数据包中的编码信息数据块中包含的原始数据包组中第一个原始数据包的包序和原始数据包组的数据包个数,就可以确定这一个第二编码数据包能够用于恢复的原始数据包组,且后续根据这一个第二编码数据包在第二编码数据包组中的位置信息和第二编码数据包组的数据包个数,就可以对这一个第二编码数据包进行前向纠错解码。
进一步地,当数据传输协议不同时,第二编码数据包的格式可以不同。例如,当数据传输协议是RTP时,在发送第二编码数据包之前,可以先为第二编码数据包加上RTPHeader。
例如,如图5所示,在发送第二编码数据包组之前,可以先在第二编码数据包组中的每个第二编码数据包的首端添加EI(encode information,编码信息)数据块,再为第二编码数据包组中的每个第二编码数据包添加RTP Header。
值得注意的是,在发送原始数据包和第二编码数据包时,可以通过同一端口发送原始数据包和第二编码数据包;或者,可以通过不同的端口分别发送原始数据包和第二编码数据包。
在本申请实施例中,发送原始数据后,对已发送的原始数据包组中的每个原始数据包进行预编码,得到第一编码数据包组,然后对第一编码数据包组进行前向纠错编码,得到第二编码数据包组。最后,发送第二编码数据包组。原始数据包组在传输过程中未丢失的原始数据包和第二编码数据包组可以恢复原始数据包组在传输过程中丢失的原始数据包。如此,可以完成对传输过程中丢失的原始数据包的恢复,避免数据损失。
图6是本申请实施例提供的一种数据包恢复方法的流程图。参见图6,该方法包括:
步骤601:接收原始数据包和第二编码数据包。
需要说明的是,接收原始数据包和第二编码数据包的顺序不一定与发送原始数据包和第二编码数据包的顺序一致。例如,如图7所示,D1和D2为原始数据包,D1和D2属于两个不同的原始数据包组,R1和R2为第二编码数据包,R1和R2属于两个不同的第二编码数据包组,一组D1与一组R1对应,一组D2与一组R2对应。可以先发送一组D1,再发送一组R1,然后发送一组D2,最后发送一组R2。之后,在接收时可能会出现交叉乱序现象,即在一组D1尚未全部接收到时就接收到了R1;或者,在接收时可能会出现跨组乱序现象,即在一组D1和一组R1尚未全部接收到时就接收到了D2或R2。
这种情况下,在接收到原始数据包和第二编码数据包时,需要先对原始数据包和第二编码数据包进行排序。具体地,在接收到原始数据包和第二编码数据包时,可以将接收到的原始数据包按照其包序***到第一缓存中,将接收到的第二编码数据包按照其包序***到第二缓存中。例如,当是通过同一端口接收原始数据包和第二编码数据包时,可以根据接收到的数据包的包头中携带的数据包类型,来确定该数据包是原始数据包还是第二编码数据包,确定以后,就可以将原始数据包按照其包序***到第一缓存中,将第二编码数据包按照其包序***到第二缓存中;当是通过第一端口接收原始数据包且是通过第二端口接收第二编码数据包时,可以直接将通过第一端口接收到的数据包按照其包序***到第一缓存中,直接将通过第二端口接收到的数据包按照其包序***到第二缓存中。
此外,为了避免数据输出延时过高,当第一缓存中存储的原始数据包的个数达到一定的数目时,可以对第一缓存中存储的包序最小的原始数据包进行输出。同时,为了避免数据存储压力过大,当第二缓存中存储的第二编码数据包的个数达到一定的数目时,可以对第二缓存中存储的包序最小的第二编码数据包进行清理。
在对接收到的原始数据包进行排序的过程中,当发现接收到的原始数据包的包序不连续时,可以确定出现原始数据包丢失现象,此时可以先将包序位于丢失的原始数据包的包序后面的原始数据包存储到第三缓存中。等到后续恢复出丢失的原始数据包后,再将恢复的原始数据包与第三缓存中的原始数据包统一进行输出或存储。此外,为了避免数据输出延时过高,可以对第三缓存中存储的原始数据包的等待时间进行限制,即如果超过一定时间后还未恢复丢失的原始数据包,则可以直接对第三缓存中存储的原始数据包进行输出或存储。
步骤602:从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包。
需要说明的是,该多个第二编码数据包所属的第二编码数据包组与该多个原始数据包所属的原始数据包组对应。第二编码数据包组是第一编码数据包组进行前向纠错编码得到,第一编码数据包组是对原始数据包组中的每个原始数据包进行预编码得到,第一编码数据包组中每个第一编码数据包的字节数相同。
这种情况下,该多个第二编码数据包属于一个第二编码数据包组,该多个原始数据包属于一个原始数据包组,且这个第二编码数据包组与这个原始数据包组对应,这个第二编码数据包组用于实现对这个原始数据包组的丢失保护。也即是,根据这个第二编码数据包组中的第二编码数据包和这个原始数据包组中的原始数据包,可以实现对这个原始数据包组在传输过程中丢失的原始数据包的恢复。
需要说明的是,第二编码数据包中可以包含编码信息数据块,第二编码数据包中的编码信息数据块包含的目标包序为对应的原始数据包组中第一个原始数据包的包序,第二编码数据包中的编码信息数据块包含的目标数据包个数为对应的原始数据包组的数据包个数。
具体地,步骤602的操作可以为:确定接收到的第二编码数据包中包含同一目标包序的多个第二编码数据包属于一个第二编码数据包组;根据该多个第二编码数据包中任一第二编码数据包中包含的目标包序和目标数据包个数,确定目标包序范围;确定接收到的原始数据包中包序处于目标包序范围内的多个原始数据包属于与这个第二编码数据包组对应的一个原始数据包组。
需要说明的是,根据第二编码数据包中包含的目标包序和目标数据包个数,确定目标包序范围时,可以将目标包序作为第一包序,将目标包序加上目标数据包个数后得到的数值作为第二包序,将大于或等于第一包序且小于或等于第二包序的包序范围确定为目标包序范围。
当多个第二编码数据包中每个第二编码数据包中包含的目标包序相同时,表明该多个第二编码数据包均对应同一原始数据包组,从而可以确定该多个第二编码数据包属于一个第二编码数据包组。并且,由于第二编码数据包中的编码信息数据块包含的目标包序为该原始数据包组中第一个原始数据包的包序,且包含的目标数据包个数为该原始数据包组的数据包个数,所以根据第二编码数据包中的编码信息数据块包含的目标包序和目标数据包个数,就可以确定该原始数据包组的包序范围(即目标包序范围)。接收到的原始数据包中包序处于目标包序范围内的多个原始数据包均属于该原始数据包组。
步骤603:当该多个原始数据包的包序不连续时,确定原始数据包组在传输过程中丢失原始数据包。
需要说明的是,由于原始数据包组中的所有原始数据包的包序连续,且该多个原始数据包属于该原始数据包组,所以当该多个原始数据包的包序不连续时,可以确定该原始数据包组在传输过程中丢失了原始数据包。此时就可以进行后续对原始数据包的恢复操作。
步骤604:判断该多个第二编码数据包和该多个原始数据包是否满足预设条件。
需要说明的是,该多个第二编码数据包的个数为其所属的第二编码数据包组中被接收到的第二编码数据包的个数。该多个原始数据包的个数为其所属的原始数据包组中被接收到的原始数据包的个数。
另外,预设条件可以预先进行设置,预设条件为进行前向纠错解码时所需满足的条件。通过预设条件的判断可以确定使用该多个第二编码数据包和该多个原始数据包能否恢复出原始数据包组。也即是,当该多个第二编码数据包和该多个原始数据包满足预设条件时,才能恢复出原始数据包组,否则将不能恢复出原始数据包组。例如,预设条件可以为原始数据包组在传输过程中丢失的原始数据包的个数小于或等于对应的第二编码数据包组中被接收到的第二编码数据包的个数。
具体地,步骤604的操作可以为:获取该多个第二编码数据包中的任一第二编码数据包中包含的目标数据包个数;将获取到的目标数据包个数减去该多个原始数据包的个数,得到丢失数据包个数;当该丢失数据包个数小于该多个第二编码数据包的个数时,确定该多个第二编码数据包和该多个原始数据包满足预设条件;当该丢失数据包个数大于或等于该多个第二编码数据包的个数时,确定该多个第二编码数据包和该多个原始数据包不满足预设条件。
需要说明的是,该多个第二编码数据包中的任一第二编码数据包中的编码信息数据块包含的目标数据包个数就是对应的原始数据包组的数据包个数,所以将目标数据包个数减去该多个原始数据包的个数,就可以得到该原始数据包组在传输过程中丢失的原始数据包的个数(即丢失数据包个数)。
当该多个第二编码数据包和该多个原始数据包满足预设条件时,可以继续执行如下步骤605来恢复丢失的原始数据包。当该多个第二编码数据包和该多个原始数据包不满足预设条件时,不能恢复丢失的原始数据包,此时需要继续接收第二编码数据包和原始数据包,然后返回步骤602来继续获取属于同一第二编码数据包组的多个第二编码数据包和属于同一原始数据包组的多个原始数据包。
步骤605:当该多个第二编码数据包和该多个原始数据包满足预设条件时,根据该多个第二编码数据包和该多个原始数据包,恢复原始数据包组在传输过程中丢失的原始数据包。
需要说明的是,第二编码数据包中包含编码信息数据块,第二编码数据包中的编码信息数据块包含自身在所属的第二编码数据包组中的位置信息和所属的第二编码数据包组的数据包个数。
其中,根据该多个第二编码数据包和该多个原始数据包,恢复这原始数据包组在传输过程中丢失的原始数据包的操作可以包括如下步骤(1)-(5):
(1)获取该多个第二编码数据包中的任一第二编码数据包中包含的第二编码数据包组的数据包个数,以及获取该多个第二编码数据包中的每个第二编码数据包中包含的自身在第二编码数据包组中的位置信息。
(2)去除该多个第二编码数据包中的每个第二编码数据包中的编码信息数据块;将去除编码信息数据块后的该多个第二编码数据包中的任一第二编码数据包的字节数作为第二字节数,第二字节数为第一编码数据包组中每个第一编码数据包的字节数。
需要说明的是,在去除该多个第二编码数据包中的每个第二编码数据包中的编码信息数据块时,如果第二编码数据包中还包括包头,则在去除编码信息数据块的同时,可以将该多个第二编码数据包中的每个第二编码数据包的包头也去除。
另外,对第一编码数据包组进行前向纠错编码后,可以得到一组不包含编码信息数据块的第二编码数据包,此时第一编码数据包的字节数与不包含编码信息数据块的第二编码数据包的字节数相同。因而去除编码信息数据块后的该多个第二编码数据包中的任一第二编码数据包的字节数即为第一编码数据包的字节数(即第二字节数)。
(3)根据第二字节数,对该多个原始数据包中的每个原始数据包进行预编码,以得到属于第一编码数据包组的多个第一编码数据包。
需要说明的是,由于第二字节数为第一编码数据包组中的每个第一编码数据包的字节数,且该多个原始数据包属于原始数据包组,所以可以根据第二字节数,来对该多个原始数据包中的每个原始数据包进行预编码,以得到第一编码数据包组中的多个第一编码数据包。
具体地,对于该多个原始数据包中的任意一个原始数据包,可以根据第二字节数,在这一个原始数据包的末端添加第一数据块,第一数据块的字节数是第二字节数减去这一个原始数据包的字节数且减去预设字节数得到;根据第一数据块的字节数,在添加第一数据块后的这一个原始数据包中的预设位置处添加第二数据块,以得到属于第一编码数据包组的一个第一编码数据包,第二数据块的字节数为预设字节数。
需要说明的是,第二字节数减去预设字节数即为第一字节数,第一字节数即为这一个原始数据包的字节数与其所要添加的第一数据块的字节数之和。
另外,第一数据块是用于进行字节填充的数据块,其中可以不含有任何意义的信息。在该多个原始数据包中的每个原始数据包的末端添加相应的第一数据块后,添加第一数据块后的该多个原始数据包中每个原始数据包的字节数相同,且均为第一字节数。
再者,在一个原始数据包中添加的第二数据块中包含在这个原始数据包中添加的第一数据块的字节数。由于第二数据块的字节数为预设字节数,所以在添加第一数据块的该多个原始数据包中的每个原始数据包中的预设位置处添加第二数据块后,就可以得到字节数均为预设字节数与第一字节数之和的多个第一编码数据包。
(4)根据该多个第二编码数据包中的每个第二编码数据包在第二编码数据包组中的位置信息和第二编码数据包组的数据包个数,对该多个第一编码数据包和去除编码信息数据块后的该多个第二编码数据包进行前向纠错解码,以得到第一编码数据包组。
需要说明的是,由于是对第一编码数据包组进行前向纠错编码,来得到一组不包含编码信息数据块的第二编码数据包,所以对该多个第一编码数据包和去除编码信息数据块后的该多个第二编码数据包进行前向纠错解码后,可以得到这第一编码数据包组。
另外,对该多个第一编码数据包和去除编码信息数据块后的该多个第二编码数据包进行前向纠错解码,以得到第一编码数据包组的操作与相关技术中对一组数据包中的多个数据包和一组冗余数据包中的多个冗余数据包进行前向纠错解码,来得到这一组数据包的操作类似,本申请实施例对此不进行详细阐述。
(5)对第一编码数据包组中的每个第一编码数据包进行预解码,以得到原始数据包组。
需要说明的是,由于是对原始数据包组中的每个原始数据包进行预编码,来得到第一编码数据包组,所以对第一编码数据包组中的每个第一编码数据包进行预解码后,可以得到原始数据包组。如此,就完成了原始数据包组在传输过程中丢失的原始数据包的恢复。
具体地,对于第一编码数据包组中的任意一个第一编码数据包,可以根据这一个第一编码数据包中的预设位置处的第二数据块中包含的字节数,从这一个第一编码数据包的末端去除第一数据块;根据预设字节数,从去除第一数据块后的这一个第一编码数据包中的预设位置处去除第二数据块,以得到属于原始数据包组的一个原始数据包。
需要说明的是,根据这一个第一编码数据包中的预设位置处的第二数据块中包含的字节数,从这一个第一编码数据包的末端去除第一数据块,即是从这一个第一编码数据包的末端去除该字节数的字节,如此就可以实现对第一数据块的去除。
另外,根据预设字节数,从去除第一数据块后的这一个第一编码数据包中预设位置处去除第二数据块,即是从去除第一数据块后的这一个第一编码数据包中的预设位置处去除预设字节数的字节,如此就可以实现对第二数据块的去除。
在本申请实施例中,接收到原始数据包和第二编码数据包后,可以从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,该多个第二编码数据包所属的第二编码数据包组与该多个原始数据包所属的原始数据包组对应。在该多个原始数据包的包序不连续时,确定原始数据包组在传输过程中丢失原始数据包。当该多个第二编码数据包和该多个原始数据包满足预设条件时,根据该多个第二编码数据包和该多个原始数据包,恢复原始数据包组在传输过程中丢失的原始数据包。如此,可以完成对传输过程中丢失的原始数据包的恢复,避免数据损失。
图8是本申请实施例提供的一种数据包恢复方法的流程图。参见图8,该方法包括:
步骤801:第一设备将原始数据包发送给第二设备。
需要说明的是,第一设备为数据发送端,第二设备为数据接收端。在单播场景下,第一设备可以将数据发送给一个第二设备,在多播场景下,第一设备可以将数据发送给多个第二设备。
并且,第一设备在发送数据时,可以通过不同的端口发送不同的数据,也可以通过同一端口发送不同的数据。第二设备在接收数据时,可以通过不同的端口接收不同的数据,也可以通过同一端口接收不同的数据。例如,如图9所示,第一设备可以通过同一端口向第二设备发送不同的数据,第二设备可以通过同一端口接收第一设备发送的不同的数据;或者,如图10所示,第一设备可以通过不同的端口向第二设备发送不同的数据,第二设备可以通过同一端口接收第一设备发送的不同的数据;或者,如图11所示,第一设备可以通过不同的端口向第二设备发送不同的数据,第二设备可以通过不同的端口接收第一设备发送的不同的数据。
另外,步骤801的操作与上述步骤101的操作相同,本申请实施例在此不做赘述。
步骤802:第一设备对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组。
需要说明的是,步骤802的操作与上述步骤102的操作相同,本申请实施例在此不做赘述。
步骤803:第一设备对第一编码数据包组进行前向纠错编码,得到第二编码数据包组。
需要说明的是,步骤803的操作与上述步骤103的操作相同,本申请实施例在此不做赘述。
步骤804:第一设备将第二编码数据包组发送给第二设备。
需要说明的是,步骤804的操作与上述步骤104的操作相同,本申请实施例在此不做赘述。
值得注意的是,第一设备在向第二设备发送原始数据包和第二编码数据包时,第一设备可以通过同一端口向第二设备发送原始数据包和第二编码数据包,此时第二设备可以通过同一端口接收第一设备发送的原始数据包和第二编码数据包;或者,第一设备可以通过不同的端口向第二设备分别发送原始数据包和第二编码数据包,此时第二设备可以通过同一端口接收第一设备发送的原始数据包和第二编码数据包,或第二设备可以通过不同的端口分别接收第一设备发送的原始数据包和第二编码数据包。
第二设备在接收到原始数据包组中的原始数据包和第二编码数据包组中的第二编码数据包时,可以恢复原始数据包组在传输过程中丢失的原始数据包,具体可以通过如下步骤805-步骤809实现。
步骤805:第二设备接收到第一设备发送的原始数据包和第二编码数据包。
需要说明的是,步骤805的操作与上述步骤601的操作相同,本申请实施例在此不做赘述。
步骤806:第二设备从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包。
需要说明的是,步骤806的操作与上述步骤602的操作相同,本申请实施例在此不做赘述。
步骤807:第二设备在该多个原始数据包的包序不连续时,确定原始数据包组在传输过程中丢失原始数据包。
需要说明的是,步骤807的操作与上述步骤603的操作相同,本申请实施例在此不做赘述。
步骤808:第二设备判断该多个第二编码数据包和该多个原始数据包是否满足预设条件。
需要说明的是,步骤808的操作与上述步骤604的操作相同,本申请实施例在此不做赘述。
步骤809:第二设备在该多个第二编码数据包和该多个原始数据包满足预设条件时,根据该多个第二编码数据包和该多个原始数据包,恢复原始数据包组在传输过程中丢失的原始数据包。
需要说明的是,步骤809的操作与上述步骤605的操作相同,本申请实施例在此不做赘述。
为了便于理解,下面结合图12和图13对上述数据包恢复方法进行举例说明。
参见图12,第一设备中可以包括原始数据包打包模块、原始数据包发送模块、原始数据包分组模块、原始数据包预编码模块、前向纠错编码模块、第二编码数据包打包模块和第二编码数据包发送模块,第一设备上的操作可以包括如下步骤(1)-(7):
(1)原始数据包打包模块为原始数据添加RTP Header,得到原始数据包;
(2)原始数据包发送模块将原始数据包发送给第二设备;
(3)原始数据包分组模块将已发送的原始数据包送入缓存中,并进行分组;
(4)原始数据包预编码模块对缓存中存储的原始数据包组进行预编码,以得到第一编码数据包组;
(5)前向纠错编码模块对第一编码数据包组进行前向纠错编码,得到第二编码数据包组;
(6)第二编码数据包打包模块为第二编码数据包组中的每个第二编码数据包添加RTP Header和编码信息数据块;
(7)第二编码数据包发送模块将第二编码数据包组发送给第二设备。
参见图13,第二设备可以包括接收模块、缓存模块、保护关系映射模块、恢复分组模块、前向纠错解码模块和恢复数据输出模块,第二设备上的操作可以包括如下步骤(1)-(6):
(1)接收模块接收第一设备发送的原始数据包和第二编码数据包;
(2)缓存模块将接收到的原始数据包***第一缓存中,且将接收到的第二编码数据包***第二缓存中;
(3)保护关系映射模块从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包;
(4)恢复分组模块在该多个原始数据包的包序不连续时,确定原始数据包组在传输过程中丢失原始数据包,然后判断该多个第二编码数据包和该多个原始数据包是否满足预设条件;
(5)前向纠错解码模块在该多个第二编码数据包和该多个原始数据包满足预设条件时,根据该多个第二编码数据包和该多个原始数据包进行前向纠错解码,得到原始数据包组,以恢复原始数据包组在传输过程中丢失的原始数据包;
(6)恢复数据输出模块对原始数据包组进行输出。
在本申请实施例中,第一设备发送原始数据包给第二设备后,第一设备对已发送的原始数据包组中的每个原始数据包进行预编码,得到第一编码数据包组,然后对第一编码数据包组进行前向纠错编码,得到第二编码数据包组。最后,第一设备将第二编码数据包组发送给的第二设备。第二设备接收到第一设备发送的原始数据包和第二编码数据包后,可以从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包。第二设备在该多个原始数据包的包序不连续时,确定原始数据包组在传输过程中丢失原始数据包,当该多个第二编码数据包和该多个原始数据包满足预设条件时,根据该多个第二编码数据包和该多个原始数据包,恢复原始数据包组中丢失的原始数据包。如此,可以在第二设备中完成对传输过程中丢失的原始数据包的恢复,避免第二设备的数据损失。
图14是本申请实施例提供的一种数据包恢复装置的结构示意图。参见图14,该装置包括:
第一发送模块1401,用于发送原始数据包;
第一编码模块1402,用于对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组,第一编码数据包组中每个第一编码数据包的字节数相同;
第二编码模块1403,用于对第一编码数据包组进行前向纠错编码,得到第二编码数据包组;
第二发送模块1404,用于发送第二编码数据包组,原始数据包组在传输过程中未丢失的原始数据包和第二编码数据包组用于恢复原始数据包组在传输过程中丢失的原始数据包。
可选地,第一编码模块1402包括:
确定单元,用于确定第一字节数,第一字节数大于或等于原始数据包组中每个原始数据包的字节数中的最大字节数;
第一添加单元,用于对于原始数据包组中的任意一个原始数据包,根据第一字节数,在一个原始数据包的末端添加第一数据块,第一数据块的字节数是第一字节数减去一个原始数据包的字节数得到;
第二添加单元,用于根据第一数据块的字节数,在添加第一数据块后的一个原始数据包中的预设位置处添加第二数据块,以得到第一编码数据包组中的一个第一编码数据包,第二数据块的字节数为预设字节数,第二数据块中包含第一数据块的字节数。
可选地,一个原始数据包的预设位置为一个原始数据包的首端。
可选地,当视频图像中的I帧包括多个原始数据包,视频图像中的P帧包括一个或多个原始数据包时,该装置还包括:
划分模块,用于将已发送的一个I帧的所有原始数据包划分到多个原始数据包组,将已发送的多个P帧的所有原始数据包划分到一个原始数据包组,每个原始数据包组中的所有原始数据包的包序连续。
可选地,该装置还包括:
添加模块,用于对于第二编码数据包组中的任意一个第二编码数据包,在一个第二编码数据包中添加编码信息数据块;
其中,编码信息数据块包含一个第二编码数据包在第二编码数据包组中的位置信息、原始数据包组中第一个原始数据包的包序、原始数据包组的数据包个数和第二编码数据包组的数据包个数。
可选地,前向纠错编码为基于柯西矩阵的RS-FEC编码。
在本申请实施例中,发送原始数据后,对已发送的原始数据包组中的每个原始数据包进行预编码,得到第一编码数据包组,然后对第一编码数据包组进行前向纠错编码,得到第二编码数据包组。最后,发送第二编码数据包组。原始数据包组在传输过程中未丢失的原始数据包和第二编码数据包组可以恢复原始数据包组在传输过程中丢失的原始数据包。如此,可以完成对传输过程中丢失的原始数据包的恢复,避免数据损失。
图15是本申请实施例提供的一种数据包恢复装置的结构示意图。参见图15,该装置包括:
接收模块1501,用于接收原始数据包和第二编码数据包;
第一获取模块1502,用于从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,多个第二编码数据包所属的第二编码数据包组与多个原始数据包所属的原始数据包组对应,第二编码数据包组是对第一编码数据包组进行前向纠错编码得到,第一编码数据包组是对原始数据包组中的每个原始数据包进行预编码得到,第一编码数据包组中每个第一编码数据包的字节数相同;
第一确定模块1503,用于当多个原始数据包的包序不连续时,确定原始数据包组在传输过程中丢失原始数据包;
恢复模块1504,用于当多个第二编码数据包和多个原始数据包满足预设条件时,根据多个第二编码数据包和多个原始数据包,恢复原始数据包组在传输过程中丢失的原始数据包。
可选地,第二编码数据包中包含编码信息数据块,第二编码数据包中的编码信息数据块包含的目标包序为对应的原始数据包组中第一个原始数据包的包序,第二编码数据包中的编码信息数据块包含的目标数据包个数为对应的原始数据包组的数据包个数,第一获取模块1502包括:
第一确定单元,用于确定接收到的第二编码数据包中包含同一目标包序的多个第二编码数据包属于一个第二编码数据包组;
第二确定单元,,用于根据多个第二编码数据包中任一第二编码数据包中包含的目标包序和目标数据包个数,确定目标包序范围;
第三确定单元,用于确定接收到的原始数据包中包序处于目标包序范围内的多个原始数据属于与一个第二编码数据包组对应的一个原始数据包组。
可选地,该装置还包括:
第二获取模块,用于获取多个第二编码数据包中的任一第二编码数据包中包含的目标数据包个数;
计算模块,用于将获取到的目标数据包个数减去多个原始数据包的个数,得到丢失数据包个数;
第二确定模块,用于当丢失数据包个数小于多个第二编码数据包的个数时,确定多个第二编码数据包和多个原始数据包满足预设条件。
可选地,第二编码数据包中包含编码信息数据块,第二编码数据包中的编码信息数据块包含自身在所属的第二编码数据包组中的位置信息和所属的第二编码数据包组的数据包个数,恢复模块1504包括:
获取单元,用于获取多个第二编码数据包中的任一第二编码数据包中包含的第二编码数据包组的数据包个数,以及获取多个第二编码数据包中的每个第二编码数据包中包含的自身在第二编码数据包组中的位置信息;
去除单元,用于去除多个第二编码数据包中的每个第二编码数据包中的编码信息数据块;
第四确定单元,用于将去除编码信息数据块后的多个第二编码数据包中的任一第二编码数据包的字节数作为第二字节数,第二字节数为第一编码数据包组中每个第一编码数据包的字节数;
编码单元,用于根据第二字节数,对多个原始数据包中的每个原始数据包进行预编码,以得到属于第一编码数据包组的多个第一编码数据包;
第一解码单元,用于根据多个第二编码数据包中的每个第二编码数据包在第二编码数据包组中的位置信息和第二编码数据包组的数据包个数,对多个第一编码数据包和去除编码信息数据块后的多个第二编码数据包进行前向纠错解码,以得到第一编码数据包组;
第二解码单元,用于对第一编码数据包组中的每个第一编码数据包进行预解码,以得到原始数据包组。
可选地,编码单元用于:
对于多个原始数据包中的任意一个原始数据包,根据第二字节数,在一个原始数据包的末端添加第一数据块,第一数据块的字节数是第二字节数减去一个原始数据包的字节数且减去预设字节数得到;
根据第一数据块的字节数,在添加第一数据块后的一个原始数据包中的预设位置处添加第二数据块,以得到属于第一编码数据包组的一个第一编码数据包,第二数据块的字节数为预设字节数,第二数据块中包含第一数据块的字节数。
可选地,第二解码单元用于:
对于第一编码数据包组中的任意一个第一编码数据包,根据一个第一编码数据包中的预设位置处的第二数据块中包含的字节数,从一个第一编码数据包的末端去除第一数据块;
根据预设字节数,从去除第一数据块后的一个第一编码数据包中的预设位置处去除第二数据块,以得到属于原始数据包组的一个原始数据包。
在本申请实施例中,接收到原始数据包和第二编码数据包后,可以从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,该多个第二编码数据包所属的第二编码数据包组与该多个原始数据包所属的原始数据包组对应。在该多个原始数据包的包序不连续时,确定原始数据包组在传输过程中丢失原始数据包。当该多个第二编码数据包和该多个原始数据包满足预设条件时,根据该多个第二编码数据包和该多个原始数据包,恢复原始数据包组在传输过程中丢失的原始数据包。如此,可以完成对传输过程中丢失的原始数据包的恢复,避免数据损失。
图16是本申请实施例提供的一种数据包恢复***的结构示意图。参见图16,该***包括:第一设备1601和第二设备1602。
第一设备1601用于执行上述图1实施例提供的数据包恢复方法,第二设备1602用于执行上述图6实施例提供的数据包恢复方法。
在本申请实施例中,第一设备发送原始数据包给第二设备后,第一设备对已发送的原始数据包组中的每个原始数据包进行预编码,得到第一编码数据包组,然后对第一编码数据包组进行前向纠错编码,得到第二编码数据包组。最后,第一设备将第二编码数据包组发送给的第二设备。第二设备接收到第一设备发送的原始数据包和第二编码数据包后,可以从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包。第二设备在该多个原始数据包的包序不连续时,确定原始数据包组在传输过程中丢失原始数据包,当该多个第二编码数据包和该多个原始数据包满足预设条件时,根据该多个第二编码数据包和该多个原始数据包,恢复原始数据包组中丢失的原始数据包。如此,可以在第二设备中完成对传输过程中丢失的原始数据包的恢复,避免第二设备的数据损失。
图17是本申请实施例提供的一种数据包恢复装置的结构示意图,该装置可以应用于第一设备。参见图17,该装置可以为终端1700,终端1700可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1700还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1700包括有:处理器1701和存储器1702。
处理器1701可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1701可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1701也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1701可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1701还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1702可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1702还可包括高速随机存取存储器以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1702中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1701所执行以实现图1实施例提供的数据包恢复方法。
在一些实施例中,终端1700还可选包括有:***设备接口1703和至少一个***设备。处理器1701、存储器1702和***设备接口1703之间可以通过总线或信号线相连。各个***设备可以通过总线、信号线或电路板与***设备接口1703相连。具体地,***设备包括:射频电路17017、触摸显示屏1705、摄像头1706、音频电路1707、定位组件1708和电源1709中的至少一种。
***设备接口1703可被用于将I/O(Input/Output,输入/输出)相关的至少一个***设备连接到处理器1701和存储器1702。在一些实施例中,处理器1701、存储器1702和***设备接口1703被集成在同一芯片或电路板上;在一些其他实施例中,处理器1701、存储器1702和***设备接口1703中的任意一个或两个可以在单独的芯片或电路板上实现,本申请对此不加以限定。
射频电路1704用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1704通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1704将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1704包括:天线***、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等。射频电路1704可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1704还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1705用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1705是触摸显示屏时,显示屏1705还具有采集在显示屏1705的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1701进行处理。此时,显示屏1705还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1705可以为一个,设置在终端1700的前面板;在另一些实施例中,显示屏1705可以为至少两个,分别设置在终端1700的不同表面或呈折叠设计;在再一些实施例中,显示屏1705可以是柔性显示屏,设置在终端1700的弯曲表面上或折叠面上。甚至,显示屏1705还可以设置成非矩形的不规则图形,也即异形屏。显示屏1705可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-EmittingDiode,有机发光二极管)等材质制备。
摄像头组件1706用于采集图像或视频。可选地,摄像头组件1706包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1706还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1707可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1701进行处理,或者输入至射频电路17017以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1700的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1701或射频电路1704的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1707还可以包括耳机插孔。
定位组件1708用于定位终端1700的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1708可以是基于美国的GPS(GlobalPositioning System,全球定位***)、中国的北斗***、俄罗斯的格雷纳斯***或欧盟的伽利略***的定位组件。
电源1709用于为终端1700中的各个组件进行供电。电源1709可以是交流电、直流电、一次性电池或可充电电池。当电源1709包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1700还包括有一个或多个传感器1710。该一个或多个传感器1710包括但不限于:加速度传感器1711、陀螺仪传感器1712、压力传感器1713、指纹传感器1714、光学传感器1715以及接近传感器1716。
加速度传感器1711可以检测以终端1700建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1711可以用于检测重力加速度在三个坐标轴上的分量。处理器1701可以根据加速度传感器1711采集的重力加速度信号,控制触摸显示屏1705以横向视图或纵向视图进行用户界面的显示。加速度传感器1711还可以用于游戏或用户的运动数据的采集。
陀螺仪传感器1712可以检测终端1700的机体方向及转动角度,陀螺仪传感器1712可以与加速度传感器1711协同采集用户对终端1700的3D动作。处理器1701根据陀螺仪传感器1712采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1713可以设置在终端1700的侧边框和/或触摸显示屏1705的下层。当压力传感器1713设置在终端1700的侧边框时,可以检测用户对终端1700的握持信号,由处理器1701根据压力传感器1713采集的握持信号进行左右手识别或快捷操作。当压力传感器1713设置在触摸显示屏1705的下层时,由处理器1701根据用户对触摸显示屏1705的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1714用于采集用户的指纹,由处理器1701根据指纹传感器1714采集到的指纹识别用户的身份,或者,由指纹传感器1714根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1701授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1714可以被设置在终端1700的正面、背面或侧面。当终端1700上设置有物理按键或厂商Logo时,指纹传感器1714可以与物理按键或厂商Logo集成在一起。
光学传感器1715用于采集环境光强度。在一个实施例中,处理器1701可以根据光学传感器1715采集的环境光强度,控制触摸显示屏1705的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1705的显示亮度;当环境光强度较低时,调低触摸显示屏1705的显示亮度。在另一个实施例中,处理器1701还可以根据光学传感器1715采集的环境光强度,动态调整摄像头组件1706的拍摄参数。
接近传感器1716也称距离传感器,通常设置在终端1700的前面板。接近传感器1716用于采集用户与终端1700的正面之间的距离。在一个实施例中,当接近传感器1716检测到用户与终端1700的正面之间的距离逐渐变小时,由处理器1701控制触摸显示屏1705从亮屏状态切换为息屏状态;当接近传感器1716检测到用户与终端1700的正面之间的距离逐渐变大时,由处理器1701控制触摸显示屏1705从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图17中示出的结构并不构成对终端400的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图18是本发明实施例提供的一种数据包恢复装置的结构示意图,该装置可以应用于第二设备。参见图18,该装置可以为终端1800,终端1800可以是:智能手机、平板电脑、MP3播放器、MP4播放器、笔记本电脑或台式电脑。终端1800还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1800包括有:处理器1801和存储器1802。
处理器1801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1801可以采用DSP、FPGA、PLA中的至少一种硬件形式来实现。处理器1801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU;协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1801可以集成有GPU,GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1801还可以包括AI处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1802还可包括高速随机存取存储器以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1802中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1801所执行以实现图6实施例提供的数据包恢复方法。
在一些实施例中,终端1800还可选包括有:***设备接口1803和至少一个***设备。处理器1801、存储器1802和***设备接口1803之间可以通过总线或信号线相连。各个***设备可以通过总线、信号线或电路板与***设备接口1803相连。具体地,***设备包括:射频电路1804、触摸显示屏1805、摄像头1806、音频电路1807、定位组件1808和电源1809中的至少一种。
***设备接口1803可被用于将I/O相关的至少一个***设备连接到处理器1801和存储器1802。在一些实施例中,处理器1801、存储器1802和***设备接口1803被集成在同一芯片或电路板上;在一些其他实施例中,处理器1801、存储器1802和***设备接口1803中的任意一个或两个可以在单独的芯片或电路板上实现,本申请对此不加以限定。
射频电路1804用于接收和发射RF信号,也称电磁信号。射频电路1804通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1804将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1804包括:天线***、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等。射频电路1804可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、18G及5G)、无线局域网和/或WiFi4网络。在一些实施例中,射频电路1804还可以包括NFC4有关的电路,本申请对此不加以限定。
显示屏1805用于显示UI4。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1805是触摸显示屏时,显示屏1805还具有采集在显示屏1805的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1801进行处理。此时,显示屏1805还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1805可以为一个,设置在终端1800的前面板;在另一些实施例中,显示屏1805可以为至少两个,分别设置在终端1800的不同表面或呈折叠设计;在再一些实施例中,显示屏1805可以是柔性显示屏,设置在终端1800的弯曲表面上或折叠面上。甚至,显示屏1805还可以设置成非矩形的不规则图形,也即异形屏。显示屏1805可以采用LCD、OLED等材质制备。
摄像头组件1806用于采集图像或视频。可选地,摄像头组件1806包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1806还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1807可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1801进行处理,或者输入至射频电路1804以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1800的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1801或射频电路1804的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1807还可以包括耳机插孔。
定位组件1808用于定位终端1800的当前地理位置,以实现导航或LBS。定位组件1808可以是基于美国的GPS、中国的北斗***、俄罗斯的格雷纳斯***或欧盟的伽利略***的定位组件。
电源1809用于为终端1800中的各个组件进行供电。电源1809可以是交流电、直流电、一次性电池或可充电电池。当电源1809包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1800还包括有一个或多个传感器1810。该一个或多个传感器1810包括但不限于:加速度传感器1811、陀螺仪传感器1812、压力传感器1813、指纹传感器1814、光学传感器1815以及接近传感器1816。
加速度传感器1811可以检测以终端1800建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1811可以用于检测重力加速度在三个坐标轴上的分量。处理器1801可以根据加速度传感器1811采集的重力加速度信号,控制触摸显示屏1805以横向视图或纵向视图进行用户界面的显示。加速度传感器1811还可以用于游戏或用户的运动数据的采集。
陀螺仪传感器1812可以检测终端1800的机体方向及转动角度,陀螺仪传感器1812可以与加速度传感器1811协同采集用户对终端1800的3D动作。处理器1801根据陀螺仪传感器1812采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1813可以设置在终端1800的侧边框和/或触摸显示屏1805的下层。当压力传感器1813设置在终端1800的侧边框时,可以检测用户对终端1800的握持信号,由处理器1801根据压力传感器1813采集的握持信号进行左右手识别或快捷操作。当压力传感器1813设置在触摸显示屏1805的下层时,由处理器1801根据用户对触摸显示屏1805的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1814用于采集用户的指纹,由处理器1801根据指纹传感器1814采集到的指纹识别用户的身份,或者,由指纹传感器1814根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1801授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1814可以被设置在终端1800的正面、背面或侧面。当终端1800上设置有物理按键或厂商Logo时,指纹传感器1814可以与物理按键或厂商Logo集成在一起。
光学传感器1815用于采集环境光强度。在一个实施例中,处理器1801可以根据光学传感器1815采集的环境光强度,控制触摸显示屏1805的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1805的显示亮度;当环境光强度较低时,调低触摸显示屏1805的显示亮度。在另一个实施例中,处理器1801还可以根据光学传感器1815采集的环境光强度,动态调整摄像头组件1806的拍摄参数。
接近传感器1816也称距离传感器,通常设置在终端1800的前面板。接近传感器1816用于采集用户与终端1800的正面之间的距离。在一个实施例中,当接近传感器1816检测到用户与终端1800的正面之间的距离逐渐变小时,由处理器1801控制触摸显示屏1805从亮屏状态切换为息屏状态;当接近传感器1816检测到用户与终端1800的正面之间的距离逐渐变大时,由处理器1801控制触摸显示屏1805从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图18中示出的结构并不构成对终端1800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在一些实施例中,还提供了一种计算机可读存储介质,该存储介质内存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中数据包恢复方法的步骤。例如,该计算机可读存储介质可以是ROM、RAM、CD-ROM、磁带、软盘和光数据存储设备等。
值得注意的是,本申请提到的计算机可读存储介质可以为非易失性存储介质,换句话说,可以是非瞬时性存储介质。
应当理解的是,实现上述实施例的全部或部分步骤可以通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。该计算机指令可以存储在上述计算机可读存储介质中。
也即是,在一些实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的数据包恢复方法的步骤。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (22)

1.一种数据包恢复方法,其特征在于,所述方法包括:
发送原始数据包,并将已发送的原始数据包存储在缓存中;
对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组,所述第一编码数据包组中每个第一编码数据包的字节数相同;
对所述第一编码数据包组进行前向纠错编码,得到第二编码数据包组;
发送所述第二编码数据包组,所述原始数据包组在传输过程中未丢失的原始数据包和所述第二编码数据包组用于恢复所述原始数据包组在传输过程中丢失的原始数据包;
视频图像中的I帧包括多个原始数据包,所述视频图像中的P帧包括一个或多个原始数据包,所述对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组之前,还包括:
将缓存中已发送的一个I帧的所有原始数据包划分到多个原始数据包组,将已发送的多个P帧的所有原始数据包划分到一个原始数据包组,每个原始数据包组中的所有原始数据包的包序连续。
2.如权利要求1所述的方法,其特征在于,所述对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组,包括:
确定第一字节数,所述第一字节数大于或等于所述原始数据包组中每个原始数据包的字节数中的最大字节数;
对于所述原始数据包组中的任意一个原始数据包,根据所述第一字节数,在所述一个原始数据包的末端添加第一数据块,所述第一数据块的字节数是所述第一字节数减去所述一个原始数据包的字节数得到;
根据所述第一数据块的字节数,在添加所述第一数据块后的所述一个原始数据包中的预设位置处添加第二数据块,以得到所述第一编码数据包组中的一个第一编码数据包,所述第二数据块的字节数为预设字节数,所述第二数据块中包含所述第一数据块的字节数。
3.如权利要求2所述的方法,其特征在于,所述一个原始数据包的预设位置为所述一个原始数据包的首端。
4.如权利要求1-3任一所述的方法,其特征在于,所述发送所述第二编码数据包组之前,还包括:
对于所述第二编码数据包组中的任意一个第二编码数据包,在所述一个第二编码数据包中添加编码信息数据块;
其中,所述编码信息数据块包含所述一个第二编码数据包在所述第二编码数据包组中的位置信息、所述原始数据包组中第一个原始数据包的包序、所述原始数据包组的数据包个数和所述第二编码数据包组的数据包个数。
5.如权利要求1所述的方法,其特征在于,所述前向纠错编码为基于柯西矩阵的RS-FEC编码。
6.一种数据包恢复方法,其特征在于,所述方法包括:
接收原始数据包和第二编码数据包;
从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,所述多个第二编码数据包所属的第二编码数据包组与所述多个原始数据包所属的原始数据包组对应,所述第二编码数据包组是对第一编码数据包组进行前向纠错编码得到,所述第一编码数据包组是对所述原始数据包组中的每个原始数据包进行预编码得到,所述第一编码数据包组中每个第一编码数据包的字节数相同;
当所述多个原始数据包的包序不连续时,确定所述原始数据包组在传输过程中丢失原始数据包;
当所述多个第二编码数据包和所述多个原始数据包满足预设条件时,根据所述多个第二编码数据包和所述多个原始数据包,恢复所述原始数据包组在传输过程中丢失的原始数据包;
所述第二编码数据包中包含编码信息数据块,所述第二编码数据包中的编码信息数据块包含的目标包序为对应的原始数据包组中第一个原始数据包的包序,所述第二编码数据包中的编码信息数据块包含的目标数据包个数为对应的原始数据包组的数据包个数,所述从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,包括:
确定接收到的第二编码数据包中包含同一目标包序的多个第二编码数据包属于一个第二编码数据包组;将所述多个第二编码数据包中任一第二编码数据包中包含的目标包序作为第一包序,将所述目标包序加上目标数据包个数后得到的数值作为第二包序,将大于或等于所述第一包序且小于或等于所述第二包序的包序范围确定为目标包序范围;确定接收到的原始数据包中包序处于所述目标包序范围内的多个原始数据属于与所述一个第二编码数据包组对应的一个原始数据包组。
7.如权利要求6所述的方法,其特征在于,所述当所述多个第二编码数据包和所述多个原始数据包满足预设条件时,根据所述多个第二编码数据包和所述多个原始数据包,恢复所述原始数据包组在传输过程中丢失的原始数据包之前,还包括:
获取所述多个第二编码数据包中的任一第二编码数据包中包含的目标数据包个数;
将获取到的目标数据包个数减去所述多个原始数据包的个数,得到丢失数据包个数;
当所述丢失数据包个数小于所述多个第二编码数据包的个数时,确定所述多个第二编码数据包和所述多个原始数据包满足预设条件。
8.如权利要求6-7任一所述的方法,其特征在于,所述第二编码数据包中包含编码信息数据块,所述第二编码数据包中的编码信息数据块包含自身在所属的第二编码数据包组中的位置信息和所属的第二编码数据包组的数据包个数,所述根据所述多个第二编码数据包和所述多个原始数据包,恢复所述原始数据包组在传输过程中丢失的原始数据包,包括:
获取所述多个第二编码数据包中的任一第二编码数据包中包含的所述第二编码数据包组的数据包个数,以及获取所述多个第二编码数据包中的每个第二编码数据包中包含的自身在所述第二编码数据包组中的位置信息;
去除所述多个第二编码数据包中的每个第二编码数据包中的编码信息数据块;
将去除编码信息数据块后的所述多个第二编码数据包中的任一第二编码数据包的字节数作为第二字节数,所述第二字节数为所述第一编码数据包组中每个第一编码数据包的字节数;
根据所述第二字节数,对所述多个原始数据包中的每个原始数据包进行预编码,以得到属于所述第一编码数据包组的多个第一编码数据包;
根据所述多个第二编码数据包中的每个第二编码数据包在所述第二编码数据包组中的位置信息和所述第二编码数据包组的数据包个数,对所述多个第一编码数据包和去除编码信息数据块后的所述多个第二编码数据包进行前向纠错解码,以得到所述第一编码数据包组;
对所述第一编码数据包组中的每个第一编码数据包进行预解码,以得到所述原始数据包组。
9.如权利要求8所述的方法,其特征在于,所述根据所述第二字节数,对所述多个原始数据包中的每个原始数据包进行预编码,以得到属于所述第一编码数据包组的多个第一编码数据包,包括:
对于所述多个原始数据包中的任意一个原始数据包,根据所述第二字节数,在所述一个原始数据包的末端添加第一数据块,所述第一数据块的字节数是所述第二字节数减去所述一个原始数据包的字节数且减去预设字节数得到;
根据所述第一数据块的字节数,在添加所述第一数据块后的所述一个原始数据包中的预设位置处添加第二数据块,以得到属于所述第一编码数据包组的一个第一编码数据包,所述第二数据块的字节数为所述预设字节数,所述第二数据块中包含所述第一数据块的字节数。
10.如权利要求9所述的方法,其特征在于,所述对所述第一编码数据包组中的每个第一编码数据包进行预解码,以得到所述原始数据包组,包括:
对于所述第一编码数据包组中的任意一个第一编码数据包,根据所述一个第一编码数据包中的预设位置处的第二数据块中包含的字节数,从所述一个第一编码数据包的末端去除第一数据块;
根据所述预设字节数,从去除第一数据块后的所述一个第一编码数据包中的预设位置处去除第二数据块,以得到属于所述原始数据包组的一个原始数据包。
11.一种数据包恢复方法,其特征在于,所述方法包括:
第一设备将原始数据包发送给第二设备,将已发送的原始数据包存储在缓存中,并对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组,所述第一编码数据包组中每个第一编码数据包的字节数相同;
所述第一设备对所述第一编码数据包组进行前向纠错编码,得到第二编码数据包组,将所述第二编码数据包组发送给所述第二设备;
所述第二设备接收到所述第一设备发送的原始数据包和第二编码数据包时,从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,所述多个第二编码数据包属于所述第二编码数据包组,所述多个原始数据包属于所述原始数据包组;
所述第二设备在所述多个原始数据包的包序不连续时,确定所述原始数据包组在传输过程中丢失原始数据包;
所述第二设备在所述多个第二编码数据包和所述多个原始数据包满足预设条件时,根据所述多个第二编码数据包和所述多个原始数据包,恢复所述原始数据包组在传输过程中丢失的原始数据包;
视频图像中的I帧包括多个原始数据包,所述视频图像中的P帧包括一个或多个原始数据包,所述对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组之前,还包括:
将缓存中已发送的一个I帧的所有原始数据包划分到多个原始数据包组,将已发送的多个P帧的所有原始数据包划分到一个原始数据包组,每个原始数据包组中的所有原始数据包的包序连续;
所述第二编码数据包中包含编码信息数据块,所述第二编码数据包中的编码信息数据块包含的目标包序为对应的原始数据包组中第一个原始数据包的包序,所述第二编码数据包中的编码信息数据块包含的目标数据包个数为对应的原始数据包组的数据包个数,所述从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,包括:
确定接收到的第二编码数据包中包含同一目标包序的多个第二编码数据包属于一个第二编码数据包组;
将所述多个第二编码数据包中任一第二编码数据包中包含的目标包序作为第一包序,将所述目标包序加上目标数据包个数后得到的数值作为第二包序,将大于或等于所述第一包序且小于或等于所述第二包序的包序范围确定为目标包序范围;
确定接收到的原始数据包中包序处于所述目标包序范围内的多个原始数据属于与所述一个第二编码数据包组对应的一个原始数据包组。
12.一种数据包恢复装置,其特征在于,所述装置包括:
第一发送模块,用于发送原始数据包,并将已发送的原始数据包存储在缓存中;
第一编码模块,用于对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组,所述第一编码数据包组中每个第一编码数据包的字节数相同;
第二编码模块,用于对所述第一编码数据包组进行前向纠错编码,得到第二编码数据包组;
第二发送模块,用于发送所述第二编码数据包组,所述原始数据包组在传输过程中未丢失的原始数据包和所述第二编码数据包组用于恢复所述原始数据包组在传输过程中丢失的原始数据包;
视频图像中的I帧包括多个原始数据包,所述视频图像中的P帧包括一个或多个原始数据包,所述装置还包括:
划分模块,用于将缓存中已发送的一个I帧的所有原始数据包划分到多个原始数据包组,将已发送的多个P帧的所有原始数据包划分到一个原始数据包组,每个原始数据包组中的所有原始数据包的包序连续。
13.如权利要求12所述的装置,其特征在于,所述第一编码模块包括:
确定单元,用于确定第一字节数,所述第一字节数大于或等于所述原始数据包组中每个原始数据包的字节数中的最大字节数;
第一添加单元,用于对于所述原始数据包组中的任意一个原始数据包,根据所述第一字节数,在所述一个原始数据包的末端添加第一数据块,所述第一数据块的字节数是所述第一字节数减去所述一个原始数据包的字节数得到;
第二添加单元,用于根据所述第一数据块的字节数,在添加所述第一数据块后的所述一个原始数据包中的预设位置处添加第二数据块,以得到所述第一编码数据包组中的一个第一编码数据包,所述第二数据块的字节数为预设字节数,所述第二数据块中包含所述第一数据块的字节数。
14.如权利要求13所述的装置,其特征在于,所述一个原始数据包的预设位置为所述一个原始数据包的首端。
15.如权利要求12-14任一所述的装置,其特征在于,所述装置还包括:
添加模块,用于对于所述第二编码数据包组中的任意一个第二编码数据包,在所述一个第二编码数据包中添加编码信息数据块;
其中,所述编码信息数据块包含所述一个第二编码数据包在所述第二编码数据包组中的位置信息、所述原始数据包组中第一个原始数据包的包序、所述原始数据包组的数据包个数和所述第二编码数据包组的数据包个数。
16.如权利要求12所述的装置,其特征在于,所述前向纠错编码为基于柯西矩阵的RS-FEC编码。
17.一种数据包恢复装置,其特征在于,所述装置包括:
接收模块,用于接收原始数据包和第二编码数据包;
第一获取模块,用于从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,所述多个第二编码数据包所属的第二编码数据包组与所述多个原始数据包所属的原始数据包组对应,所述第二编码数据包组是对第一编码数据包组进行前向纠错编码得到,所述第一编码数据包组是对所述原始数据包组中的每个原始数据包进行预编码得到,所述第一编码数据包组中每个第一编码数据包的字节数相同;
第一确定模块,用于当所述多个原始数据包的包序不连续时,确定所述原始数据包组在传输过程中丢失原始数据包;
恢复模块,用于当所述多个第二编码数据包和所述多个原始数据包满足预设条件时,根据所述多个第二编码数据包和所述多个原始数据包,恢复所述原始数据包组在传输过程中丢失的原始数据包;
所述第二编码数据包中包含编码信息数据块,所述第二编码数据包中的编码信息数据块包含的目标包序为对应的原始数据包组中第一个原始数据包的包序,所述第二编码数据包中的编码信息数据块包含的目标数据包个数为对应的原始数据包组的数据包个数,所述获取模块包括:
第一确定单元,用于确定接收到的第二编码数据包中包含同一目标包序的多个第二编码数据包属于一个第二编码数据包组;
第二确定单元,用于将所述多个第二编码数据包中任一第二编码数据包中包含的目标包序作为第一包序,将所述目标包序加上目标数据包个数后得到的数值作为第二包序,将大于或等于所述第一包序且小于或等于所述第二包序的包序范围确定为目标包序范围;
第三确定单元,用于确定接收到的原始数据包中包序处于所述目标包序范围内的多个原始数据属于与所述一个第二编码数据包组对应的一个原始数据包组。
18.如权利要求17所述的装置,其特征在于,所述装置还包括:
第二获取模块,用于获取所述多个第二编码数据包中的任一第二编码数据包中包含的目标数据包个数;
计算模块,用于将获取到的目标数据包个数减去所述多个原始数据包的个数,得到丢失数据包个数;
第二确定模块,用于当所述丢失数据包个数小于所述多个第二编码数据包的个数时,确定所述多个第二编码数据包和所述多个原始数据包满足预设条件。
19.如权利要求17-18任一所述的装置,其特征在于,所述第二编码数据包中包含编码信息数据块,所述第二编码数据包中的编码信息数据块包含自身在所属的第二编码数据包组中的位置信息和所属的第二编码数据包组的数据包个数,所述恢复模块包括:
获取单元,用于获取所述多个第二编码数据包中的任一第二编码数据包中包含的所述第二编码数据包组的数据包个数,以及获取所述多个第二编码数据包中的每个第二编码数据包中包含的自身在所述第二编码数据包组中的位置信息;
去除单元,用于去除所述多个第二编码数据包中的每个第二编码数据包中的编码信息数据块;
第四确定单元,用于将去除编码信息数据块后的所述多个第二编码数据包中的任一第二编码数据包的字节数作为第二字节数,所述第二字节数为所述第一编码数据包组中每个第一编码数据包的字节数;
编码单元,用于根据所述第二字节数,对所述多个原始数据包中的每个原始数据包进行预编码,以得到属于所述第一编码数据包组的多个第一编码数据包;
第一解码单元,用于根据所述多个第二编码数据包中的每个第二编码数据包在所述第二编码数据包组中的位置信息和所述第二编码数据包组的数据包个数,对所述多个第一编码数据包和去除编码信息数据块后的所述多个第二编码数据包进行前向纠错解码,以得到所述第一编码数据包组;
第二解码单元,用于对所述第一编码数据包组中的每个第一编码数据包进行预解码,以得到所述原始数据包组。
20.如权利要求19所述的装置,其特征在于,所述编码单元用于:
对于所述多个原始数据包中的任意一个原始数据包,根据所述第二字节数,在所述一个原始数据包的末端添加第一数据块,所述第一数据块的字节数是所述第二字节数减去所述一个原始数据包的字节数且减去预设字节数得到;
根据所述第一数据块的字节数,在添加所述第一数据块后的所述一个原始数据包中的预设位置处添加第二数据块,以得到属于所述第一编码数据包组的一个第一编码数据包,所述第二数据块的字节数为所述预设字节数,所述第二数据块中包含所述第一数据块的字节数。
21.如权利要求20所述的装置,其特征在于,所述第二解码单元用于:
对于所述第一编码数据包组中的任意一个第一编码数据包,根据所述一个第一编码数据包中的预设位置处的第二数据块中包含的字节数,从所述一个第一编码数据包的末端去除第一数据块;
根据所述预设字节数,从去除第一数据块后的所述一个第一编码数据包中的预设位置处去除第二数据块,以得到属于所述原始数据包组的一个原始数据包。
22.一种数据包恢复***,其特征在于,所述***包括:第一设备和第二设备;
所述第一设备,用于将原始数据包发送给所述第二设备,将已发送的原始数据包存储在缓存中,并对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组,所述第一编码数据包组中每个第一编码数据包的字节数相同;对所述第一编码数据包组进行前向纠错编码,得到第二编码数据包组,将所述第二编码数据包组发送给所述第二设备;
所述第二设备,用于接收到所述第一设备发送的原始数据包和第二编码数据包时,从接收到的第二编码数据包中获取多个第二编码数据包,以及从接收到的原始数据包中获取多个原始数据包,所述多个第二编码数据包属于所述第二编码数据包组,所述多个原始数据包属于所述原始数据包组;在所述多个原始数据包的包序不连续时,确定所述原始数据包组在传输过程中丢失原始数据包;在所述多个第二编码数据包和所述多个原始数据包满足预设条件时,根据所述多个第二编码数据包和所述多个原始数据包,恢复所述原始数据包组在传输过程中丢失的原始数据包;
视频图像中的I帧包括多个原始数据包,所述视频图像中的P帧包括一个或多个原始数据包,所述第一设备,还用于在对已发送的原始数据包组中的每个原始数据包进行预编码,以得到第一编码数据包组之前,将缓存中已发送的一个I帧的所有原始数据包划分到多个原始数据包组,将已发送的多个P帧的所有原始数据包划分到一个原始数据包组,每个原始数据包组中的所有原始数据包的包序连续;
所述第二编码数据包中包含编码信息数据块,所述第二编码数据包中的编码信息数据块包含的目标包序为对应的原始数据包组中第一个原始数据包的包序,所述第二编码数据包中的编码信息数据块包含的目标数据包个数为对应的原始数据包组的数据包个数,
所述第二设备,还用于确定接收到的第二编码数据包中包含同一目标包序的多个第二编码数据包属于一个第二编码数据包组;将所述多个第二编码数据包中任一第二编码数据包中包含的目标包序作为第一包序,将所述目标包序加上目标数据包个数后得到的数值作为第二包序,将大于或等于所述第一包序且小于或等于所述第二包序的包序范围确定为目标包序范围;确定接收到的原始数据包中包序处于所述目标包序范围内的多个原始数据属于与所述一个第二编码数据包组对应的一个原始数据包组。
CN201910945466.1A 2019-09-30 2019-09-30 数据包恢复方法及装置 Active CN112583524B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910945466.1A CN112583524B (zh) 2019-09-30 2019-09-30 数据包恢复方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910945466.1A CN112583524B (zh) 2019-09-30 2019-09-30 数据包恢复方法及装置

Publications (2)

Publication Number Publication Date
CN112583524A CN112583524A (zh) 2021-03-30
CN112583524B true CN112583524B (zh) 2022-08-05

Family

ID=75116902

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910945466.1A Active CN112583524B (zh) 2019-09-30 2019-09-30 数据包恢复方法及装置

Country Status (1)

Country Link
CN (1) CN112583524B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105933342A (zh) * 2016-06-24 2016-09-07 浙江宇视科技有限公司 一种视频监控数据的传输方法及装置
CN109547467A (zh) * 2018-12-19 2019-03-29 北京东土科技股份有限公司 媒体数据纠错传输及纠错方法、装置、设备及存储介质
EP3484155A1 (en) * 2016-07-07 2019-05-15 Tencent Technology (Shenzhen) Company Limited Method and device for processing video data
CN109862440A (zh) * 2019-02-22 2019-06-07 深圳市凯迪仕智能科技有限公司 音视频传输前向纠错方法、装置、计算机设备及存储介质
CN110087140A (zh) * 2018-01-26 2019-08-02 腾讯科技(深圳)有限公司 一种传输流媒体数据的方法、装置、介质及设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105933342A (zh) * 2016-06-24 2016-09-07 浙江宇视科技有限公司 一种视频监控数据的传输方法及装置
EP3484155A1 (en) * 2016-07-07 2019-05-15 Tencent Technology (Shenzhen) Company Limited Method and device for processing video data
CN110087140A (zh) * 2018-01-26 2019-08-02 腾讯科技(深圳)有限公司 一种传输流媒体数据的方法、装置、介质及设备
CN109547467A (zh) * 2018-12-19 2019-03-29 北京东土科技股份有限公司 媒体数据纠错传输及纠错方法、装置、设备及存储介质
CN109862440A (zh) * 2019-02-22 2019-06-07 深圳市凯迪仕智能科技有限公司 音视频传输前向纠错方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN112583524A (zh) 2021-03-30

Similar Documents

Publication Publication Date Title
CN113411592B (zh) 预测模式的解码、编码方法及装置
CN110022489B (zh) 视频播放方法、装置及存储介质
CN108966008B (zh) 直播视频回放方法及装置
CN108391127B (zh) 视频编码方法、装置、存储介质及设备
CN110830819B (zh) 编码、解码方法、编码端和解码端
CN110149491B (zh) 视频编码方法、视频解码方法、终端及存储介质
CN110121084B (zh) 切换端口的方法、装置和***
CN108616776B (zh) 直播分析数据获取方法及装置
CN111432218B (zh) 视频编码与解码方法、装置、终端及存储介质
CN111586413B (zh) 视频调整方法、装置、计算机设备及存储介质
CN112583524B (zh) 数据包恢复方法及装置
CN113192519B (zh) 音频编码方法和装置以及音频解码方法和装置
CN112153404B (zh) 码率调整方法、检测方法、装置、设备及存储介质
CN110636326A (zh) 直播视频处理方法及装置、存储介质
CN114301884A (zh) 音频数据的发送方法、接收方法、装置、终端及存储介质
CN114900704A (zh) 视频处理方法、装置、电子设备及存储介质
CN111064782A (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