一种数据包的传输方法、设备及存储介质与流程

文档序号:25045283发布日期:2021-05-14 11:59阅读:179来源:国知局
一种数据包的传输方法、设备及存储介质与流程

1.本发明实施例涉及通信技术领域,尤其涉及一种数据包的传输方法、设备及存储介质。


背景技术:

2.实时视频通信中,通常基于ip网络。ip网络是一种尽力而为的网络,基于用户数据报协议(user datagram protocol,udp)传输时,无法保证数据包收发的可靠性,网络丢包以及延时不可避免。ip网络的丢包率和延时高,是一种弱网。
3.现有技术中,为解决弱网环境下的实时视频传输问题,采用前向纠错(forward error correction,fec)或者丢包重传(negative acknowledgement,nack)进行数据补偿。
4.其中,fec为事前补偿,发送端预先使用xor(异或)编码,将一组(如k个)原始数据计算生成一个冗余数据。发送端将原始数据与冗余数据一同发送至接收端。当接收端丢失任意一个原始数据时,可以通过其他原始数据(k

1个)和冗余数据经过xor计算还原。但是,fec在网络传输中最多容忍1个原始数据丢失,发生1个以上原始数据丢失时,无法通过xor恢复丢失的原始数据,不适用于丢包率高的网络场景。
5.nack为事后补偿,接收端通过实时传输协议(real

time applications,rtp)中数据包的rtp序号检测到数据包丢失时,向发送端请求重传数据包。发送端收到请求后重发丢失的数据包,以便接收端恢复丢失数据包。但是,发送端重发时依旧会受到网络丢包和延时因素的影响。需要多次重发才能确保所有的数据包被接收端接收。nack方法占用了大量的带宽并需要等待较长的时间,难以满足实时视频通信的低延时需求。


技术实现要素:

6.本发明实施例提供了一种数据包的传输方法、设备及存储介质,可以提高数据包传输时的丢包容忍度,降低丢包造成的重传次数,提高数据包成功传输的速度。
7.第一方面,本发明实施例提供了一种数据包的传输方法,该方法包括:
8.获取待发送的原始数据包集合;
9.对所述原始数据包集合中各原始数据包进行数据包长度规整化处理,得到规整数据包集合;
10.通过rs纠删码编码生成与所述规整数据包集合匹配的冗余数据包集合;
11.将所述原始数据包集合和所述冗余数据包集合发送至接收端,并确定新的待发送的原始数据包集合。
12.第二方面,本发明实施例提供了一种数据包的传输方法,该方法包括:
13.获取针对发送端发送的原始数据包集合以及冗余数据包集合所接收得到的原始数据包子集和冗余数据包子集;
14.根据所述原始数据包子集和所述冗余数据包子集,对所述原始数据包集合进行数据还原。
15.第三方面,本发明实施例还提供了一种数据包的传输装置,该装置包括:
16.原始数据包集合获取模块,用于获取待发送的原始数据包集合;
17.规整数据包集合生成模块,用于对所述原始数据包集合中各原始数据包进行数据包长度规整化处理,得到规整数据包集合;
18.冗余数据包集合生成模块,用于通过rs纠删码编码生成与所述规整数据包集合匹配的冗余数据包集合;
19.原始数据包集合确定模块,用于将所述原始数据包集合和所述冗余数据包集合发送至接收端,并确定新的待发送的原始数据包集合。
20.第四方面,本发明实施例还提供了一种数据包的传输装置,该装置包括:
21.数据包子集获取模块,用于获取针对发送端发送的原始数据包集合以及冗余数据包集合所接收得到的原始数据包子集和冗余数据包子集;
22.数据还原模块,用于根据所述原始数据包子集和所述冗余数据包子集,对所述原始数据包集合进行数据还原。
23.第五方面,本发明实施例还提供了一种电子设备,该设备包括:
24.一个或多个处理器;
25.存储装置,用于存储一个或多个程序,
26.当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任意实施例所述的一种数据包的传输方法。
27.第六方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任意实施例所述的一种数据包的传输方法。
28.本发明实施例的技术方案,通过获取待发送的原始数据包集合;对原始数据包集合中各原始数据包进行数据包长度规整化处理,得到规整数据包集合;通过rs纠删码编码生成与规整数据包集合匹配的冗余数据包集合;将原始数据包集合和冗余数据包集合发送至接收端,并确定新的待发送的原始数据包集合,解决了数据包传输的问题,实现了可以提高数据包传输时的丢包容忍度,降低丢包造成的重传次数,提高数据包成功传输的速度,进而可以避免丢包造成的不良影响的效果。
附图说明
29.图1是本发明实施例一提供的一种数据包的传输方法的流程图;
30.图2a是本发明实施例二提供的一种数据包的传输方法的流程图;
31.图2b是本发明实施例二提供的一种冗余数据包的数据格式示意图;
32.图3是本发明实施例三提供的一种数据包的传输方法的流程图;
33.图4是本发明实施例四提供的一种数据包的传输装置的结构示意图;
34.图5是本发明实施例五提供的一种数据包的传输装置的结构示意图;
35.图6是本发明实施例六提供的一种电子设备的结构示意图。
具体实施方式
36.下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便
于描述,附图中仅示出了与本发明相关的部分而非全部结构。
37.实施例一
38.图1是本发明实施例一提供的一种数据包的传输方法的流程图,本实施例可适用于实时视频通信场景下对rtp数据包传输的情况,该方法可以由数据包的传输装置来执行,该装置可以通过软件,和/或硬件的方式实现,装置可以集成在处理器中,如图1所示,该方法具体包括:
39.步骤110、获取待发送的原始数据包集合。
40.其中,原始数据包可以是数据在传输之前形成的数据包。在本实施例的一个可选实施方式中,原始数据包为实时传输协议(real

time applications,rtp)包,或者实时传输控制协议(rtp control protocol,rtcp)包。
41.在实时视频通信中,经常采用rtp/rtcp实现数据的传输,以进行视频播放。发送端的视频编码器可以生成视频的帧数据,并将视频的帧数据进行打包,生成一个或者多个大小相等或者不等的rtp包通过ip网络进行发送。接收端可以将接收到的rtp包解包还原成帧数据,并发送至接收端的解码器进行解码以显示视频图像。在实际中,由于视频场景的编号,视频编码器输出的帧数据大小通常存在浮动,形成的rtp包的个数和大小也会存在浮动,即rtp包的数量可能不固定,大小可能不相等。
42.发送端对原始数据包的发送数量可以是固定的或者不固定的。例如,发送端可以将同一帧数据对应的rtp包作为一组,确定为原始数据包集合进行发送;或者,发送端可以将预设数量,或者预设大小的rtp包作为一组,确定为原始数据包集合进行发送;或者,发送端可以在上述方式的基础上增加一些附加包进行发送。
43.示例性的,基于ip网络进行rtp包发送时,丢包率通常比较高,接收端可能无法接收到发送端发送的全部rtp包,造成解包得到的帧数据不完整,视频凸显卡顿或者破损。发送端可以将丢失的数据包进行发送,可以是将丢失的数据包进行单独的发送;或者,可以在下一组的原始数据包集合的基础上,将丢失的数据包作为附加包进行发送。
44.步骤120、对原始数据包集合中各原始数据包进行数据包长度规整化处理,得到规整数据包集合。
45.其中,如前述内容,rtp包的大小可能是不相等的,即rtp包的长度是不同的。为了对原始数据包集合进行处理,生成冗余数据包集合,以便于接收端对丢失的数据包进行还原,在本实施例中,可以对各原始数据包的数据包长度进行规整化处理。所谓规整化处理可以是指将各原始数据包的数据包长度生成为相同的,得到规整化数据包集合。
46.在本发明实施例的一个可选实施方式中,对原始数据包集合中各原始数据包进行数据包长度规整化处理,得到规整数据包集合,包括:根据原始数据包集合中各原始数据包的数据长度,确定原始数据包集合的最大数据长度;根据最大数据长度和预设数据长度确定目标数据长度;分别对各原始数据包进行数据填充,得到规整数据包集合,各规整数据包的数据长度为目标数据长度。
47.其中,发送端的视频编码器可以将一帧或多帧数据打包为k个rtp包,其中,k为大于等于1的整数。rtp包中包含头信息和载荷信息,其中,头信息中包含载荷类型(payload type,pt)用于标注数据的类型,以及rtp序号用于标注数据的顺序。载荷信息用于承载实际传输的信息。rtcp可以用于描述rtp的传输情况,接收端可以用rtcp向发送端反馈自身的丢
包率和丢失的数据包的rtp序号。头信息和载荷信息的长度即为rtp包的数据长度。各rtp包的数据长度可以相同或者不同。
48.对于原始数据包中的载荷信息v
k
,其中,0≤k≤k

1,其数据长度为f
length
(v
k
)。原始数据包集合的最大数据长度为l
max
=max(f
length
(v
k
)),其中,max(
·
)表示取最大值。在本实施例中,可以将最大数据长度或者最大数据长度与预设数据长度之和确定为目标数据长度。其中,最大数据长度的设置可以是为了将原始数据包的数据长度补齐,预设数据长度的设置可以是为了记录原始数据包本身的数据长度。在本实施例中,可以对原始数据包进行数据填充,得到规整数据包集合,规整数据包集合中的规整数据包的数据长度为目标数据长度。
49.示例性的,预设数据长度为2,目标数据长度为l
k
=l
max
+2。
50.在本实施例中,为了规范化规整数据包集合中的规整数据包,在一个可选的实施方式中,分别对各原始数据包进行数据填充,得到规整数据包集合,包括:分别对各原始数据包的自身数据长度至最大数据长度对应的数据位置填充预设数据;分别对各原始数据包的最大数据长度至目标数据长度对应的数据位置填充各原始数据包的自身数据长度值,得到规整数据包集合。
51.其中,预设数据可以是原始数据包中数据具有相同形式,例如,原始数据包中的数据是通过二进制数字表示的,预设数据也可以是二进制数字,例如可以是0或者1。为了规范化规整数据包,预设数据可以是相同的,例如均为0。
52.自身数据长度值可以是原始数据包的数据长度以原始数据包中数据相同形式的具体体现。例如,原始数据包中的数据是通过二进制数字表示的,自身数据长度值可以是原始数据包的数据长度通过二进制数字表示的数值。
53.其中,预设数据和自身数据长度值均是在原始数据包的数据后进行的追加填充。可以将原始数据包的数据(实际传输的信息)、预设数据和自身数据长度值作为新的载荷信息,即作为规整数据包的载荷信息。规整数据包的头信息可以与原始数据包的头信息一致。
54.通常,在实时视频传输中,rtp包采用用户数据报协议(user datagram protocol,udp)传输,数据长度不超过65535。为了将rtp包的所有数据长度均涵盖在内,本实施例中,预设数据长度可以为2个字节。可以将生成的规整数据包的载荷信息记为x
k
。根据x
k
中头信息、载荷信息以及x
k
中记录的自身数据长度值,可以对应的还原为v
k

55.步骤130、通过rs纠删码编码生成与规整数据包集合匹配的冗余数据包集合。
56.其中,在本实施例中生成冗余数据包集合的方式可以是采用rs纠删码(reed

solomon codes),可以取代现有技术中的xor方式,可以容忍的丢包数量远大于1。rs纠删码采用k:m编码,可以将k个等长的规整数据包生成m个等长的冗余数据包。当从规整数据包集合和冗余数据包集合中任取z个数据包时,只要满足z大于等于k+m,则能够还原生成k个规整数据包,可以容忍的丢包数量为k+m

z,在丢包数量小于等于k+m

z时,无需重传丢失的数据包,可以减少重传次数。对于rs纠删码的原理与计算过程,本实施例不做具体阐述。
57.在本实施例中,冗余数据包可以是针对k个原始数据包进行rs纠删码得到的。冗余数据包的数据格式可以与原始数据包相似。例如,冗余数据包可以包括头信息和载荷信息。其中,冗余数据包的头信息中可以与原始数据包的头信息相似,包括pt用于标注冗余数据包的数据类型,以及rtp序号用于标注冗余数据包的顺序。冗余数据包的载荷信息可以存在
两部分内容,一部分为设定的冗余数据包的私有头信息,另一部分为冗余数据包实际传输的信息y
m
。其中,私有头信息可以记录与rs纠删码相关的数据,例如,k值,m值,以及冗余数据包对应的原始数据包的rtp序号等。冗余数据包的私有头信息便于接收端还原原始数据包。
58.步骤140、将原始数据包集合和冗余数据包集合发送至接收端,并确定新的待发送的原始数据包集合。
59.其中,在进行原始数据包集合和冗余数据包集合发送时,可以分别在原始数据包的头信息和冗余数据包的头信息中通过pt标记不同的数据类型,以使接收端区分原始数据包集合和冗余数据包集合。原始数据包的数据类型可以称为视频rtp数据,冗余数据包的数据类型可以称为视频网络优化(video net optimization,vno)数据。例如,发送端的视频编码器可以通过头信息中不同的二进制数据区分rtp数据和vno数据,接收端对接收的数据包可以根据对应的二进制数据确定rtp数据和vno数据。接收端可以直接对接收到的数据包进行处理,可以减少数据转发和接收处理的负荷。
60.需要说明的是,发送端向接收端发送原始数据包集合和冗余数据包集合,接收端在需要通过rs纠删码还原原始数据包时,可以根据规整数据包集合生成的方式,先根据原始数据包集合生成规整数据包集合后,再根据规整数据包集合和冗余数据包集合通过rs纠删码还原丢失的原始数据包对应的规整数据包,再根据规整数据包还原丢失的原始数据包(去除规整数据包中填充的数据)。
61.由于网络丢包的存在,接收端可能仅能接收到原始数据包集合和冗余数据包集合中的部分数据包。接收端可以根据接收情况确定是否能够得到原始数据包集合中的全部原始数据包,进而确定反馈结果,以指示发送端对下一组的原始数据包集合进行发送。
62.示例性的,发送端可以在当前组的原始数据包集合发送完成后,确定下一组的原始数据包集合为新的待发送的原始数据包集合,继续向接收端发送。对于当前组的原始数据包集合,接收端不能得到全部的原始数据包时,可以向发送端反馈重传请求,发送端可以针对重传请求确定丢失的数据包为新的待发送的原始数据包集合;或者,发送端可以确定丢失的数据包以及下一待发送的原始数据包集合为新的待发送的原始数据包集合。其中,下一待发送的原始数据包集合可以是发送端根据实际情况确定的当前组的原始数据包集合之后的数据包,例如,如果发送端已经向接收端发送了当前组的原始数据包集合以及当前组的第一组(下一组)的原始数据包集合,下一待发送的原始数据包集合可以是当前组之后的第二组(下一组的下一组)的原始数据包集合。上述的发送方式可以降低发送端的发送时延。
63.本实施例的技术方案,通过获取待发送的原始数据包集合;对原始数据包集合中各原始数据包进行数据包长度规整化处理,得到规整数据包集合;通过rs纠删码编码生成与规整数据包集合匹配的冗余数据包集合;将原始数据包集合和冗余数据包集合发送至接收端,并确定新的待发送的原始数据包集合,解决了数据包传输的问题,实现了可以提高数据包传输时的丢包容忍度,降低丢包造成的重传次数,提高数据包成功传输的速度,进而可以避免丢包造成的不良影响的效果,此外,本实施例对rtp包的数量、大小没有限制,不改变rtp包的数据内容与大小,节省带宽,适用于多种设备和系统。
64.实施例二
65.图2a是本发明实施例二提供的一种数据包的传输方法的流程图,本实施例是对上述技术方案的进一步细化,本实施例中的技术方案可以与上述一个或者多个实施例中的各个可选方案结合。如图2a所示,该方法包括:
66.步骤210、获取待发送的原始数据包集合。
67.在本发明实施例的一个可选实施方式中,原始数据包为rtp包。
68.步骤220、对原始数据包集合中各原始数据包进行数据包长度规整化处理,得到规整数据包集合。
69.在本发明实施例的一个可选实施方式中,对原始数据包集合中各原始数据包进行数据包长度规整化处理,得到规整数据包集合,包括:根据原始数据包集合中各原始数据包的数据长度,确定原始数据包集合的最大数据长度;根据最大数据长度和预设数据长度确定目标数据长度;分别对各原始数据包进行数据填充,得到规整数据包集合,各规整数据包的数据长度为目标数据长度。
70.在本发明实施例的一个可选实施方式中,分别对各原始数据包进行数据填充,得到规整数据包集合,包括:分别对各原始数据包的自身数据长度至最大数据长度对应的数据位置填充预设数据;分别对各原始数据包的最大数据长度至目标数据长度对应的数据位置填充各原始数据包的自身数据长度值,得到规整数据包集合。
71.步骤230、根据网络的丢包率以及原始数据包集合中的原始数据包的第一数量值,确定冗余数据包集合中冗余数据包的第二数量值。
72.其中,网络的丢包率设为p,可以是预先通过测试获得的,例如接收端通过rtcp反馈的。原始数据包集合中的原始数据包的第一数量值设为k。冗余数据包集合中的冗余数据包的第二数量值与可容忍的丢包数量相关。在本实施例中,可容忍的丢包数量与冗余数据包集合中的冗余数据包的第二数量均设为m。此时,m的取值可以通过公式确定。当接收端接收的原始数据包集合和冗余数据包集合中的数据包总量不小于k时,可以通过rs纠删码还原出原始数据包集合中的全部的原始数据包。提升了网络的丢包容忍度,本实施例的技术方案,丢包容忍度为m,远大于1,具有更好的还原效果,可以避免视频卡顿或者受损。
73.步骤240、根据原始数据包集合对应的规整数据包集合中的规整数据包,生成第二数量值的冗余数据包。
74.在本实施例中,确定m的值后,可以根据规整数据包集合中的全部规整数据包,采用rs纠删码进行码字为k:m的编码计算生成m个冗余数据包,构成冗余数据包集合。冗余数据包的数据长度为l
k
。需要说明的是,进行rs纠删码编码时,可以是对规整数据包中的载荷信息进行编码,生成冗余数据包的载荷信息中的实际传输的数据。
75.图2b是本发明实施例二提供的一种冗余数据包的数据格式示意图。如图2b所示,冗余数据包包括rtp header(头信息)、fec header(私有头信息)以及repair“payload”(实际传输的信息)。其中,fec header和repair“payload”共同构成rtp payload(载荷信息)。rtp header遵守rfc3550协议,fec header记录与rs纠删码相关的数据,repair“payload”为冗余数据包的载荷信息中的实际传输的数据,记为y
m
,其中,0≤m≤m

1。
76.步骤250、在每个冗余数据包中加入第一数量值、第二数量值,生成冗余数据包所
使用的原始数据包集合中的原始数据包的第一包序号,以及冗余数据包自身的第二包序号。
77.其中,第一数量值k、第二数量值m和第一包序号可以记录在如图2b所示的fec header中。第二包序号可以记录在rtp header中,可以是在数据传输中rtcp根据rfc3550协议生成的。此外,为了便于接收端对丢失的数据包的还原,在fec header中还可以记录冗余数据包集合中全部的冗余数据包的起始序号,即各第二包序号中的最小值。示例性的,各冗余数据包的第二包序号依次为:1234,1235,1236,1237,1238;冗余数据包的起始序号可以为1234。在冗余数据包中记录k,m,第一包序号和第二包序号,可以便于接收端判断是否存在数据包丢失,是否能够还原丢失的数据包,以及通过rs纠删码计算还原丢失的数据包。
78.为了减少冗余数据包中记载的信息数量,节省冗余数据包中珍贵的私有头信息。在本发明实施例的一个可选实施方式中,在每个冗余数据包中加入生成冗余数据包所使用的原始数据包集合中的原始数据包的第一包序号,包括:确定原始数据包集合中的原始数据包的起始包序号;根据起始包序号以及原始数据包集合中的原始数据包的包序号,确定包位图数据;将起始包序号以及包位图数据作为第一包序号,加入在每个冗余数据包中。
79.其中,包位图数据用于指示原始数据包集合中的原始数据包的发送情况。示例性的,包位图数据中包括多位数据值,每一位的数据值可以表示一个数据包的发送情况。在包位图数据中可以按顺序表示从起始包序号开始的所有原始数据包的发送情况。例如,起始包序号为2314,参与当前的原始数据包集合的发送(原始数据包集合中包含rtp序号为2314的原始数据包),rtp序号为2315至2317的原始数据包不参与发送,rtp序号为2318至2321的原始数据包参与发送。在此发送情况下,可以生成采用1,0,0,0,1,1,1,1的位图表示原始数据包的发送情况。1代表发送,可以是通过高电平表示,0代表未发送,可以采用低电平表示。包位图数据可以是根据位图生成的数据值,上述例子中,包位图数据可以是10001111。
80.将起始包序号和包位图数据作为第一包序号加入冗余数据包中,可以使接收端根据第一包序号,以起始包序号为基准根据包位图数据确定原始数据包集合中的全部原始数据包的rtp序号,可以便于接收端确定是否存在丢包。本实施例采用起始包序号和包位图数据作为第一包序号加入冗余数据包中的方式,无需在冗余数据包中记录全部原始数据包的rtp序号,可以减少冗余数据包私有头信息的使用,极大的节省了占用空间。并且,无需限定通过rs纠删码编码生成冗余数据包时,各原始数据包是按照对应的rtp序号顺序排列的,可以是非连续地发送一个或多个原始数据包,使原始数据包的发送更加灵活。
81.步骤260、将原始数据包集合和冗余数据包集合发送至接收端。
82.步骤270、如果接收到接收端的重传请求,则获取重传请求中包括的丢失数据包。
83.其中,当接收端根据接收到的数据包无法得到原始数据包集合中全部的原始数据包时,可以向发送端反馈重传请求。重传请求中可以包括接收端根据起始包序号、包位图数据以及接收到的原始数据包的rtp序号,确定的丢失数据包的rtp序号(可以是一个或者多个)。发送端可以将rtp序号对应的原始数据包作为丢失数据包。如果未接收到接收端的重传请求,发送端可以在原始数据包集合和冗余数据包集合发送后,继续针对当前组的下一组的原始数据包集合进行发送,可以生成下一组的原始数据包集合的下一组的冗余数据包集合。发送端可以将下一组的原始数据包集合和下一组的冗余数据包集合发送至接收端,可以减少发送时延。
84.步骤280、根据丢失数据包,确定新的待发送的原始数据包集合后,返回执行对原始数据包集合中各原始数据包进行数据包长度规整化处理,得到规整数据包集合的操作。
85.其中,发送端可以根据重传请求中的rtp序号确定丢失的原始数据包,将全部丢失的原始数据包作为新的待发送的原始包集合,返回执行步骤220至步骤260。若接收端的反馈依旧为重传请求,继续执行步骤270至步骤280;若未收到接收端的重传请求,返回执行步骤210至步骤260。此时,步骤210中获取的待发送的原始数据包集合可以是当前组的下一的原始数据包集合。执行步骤260后,继续根据是否存在重传请求确定执行步骤,直至所有组的原始数据包集合发送完毕。
86.为了减少发送端的发送次数,并提高接收端还原原始数据包成功的概率,在本发明实施例的一个可选实施方式中,根据丢失数据包,确定新的待发送的原始数据包集合,包括:将丢失数据包与下一待发送的原始数据包集合确定为新的待发送的原始数据包集合。
87.在本实施例中,可以将丢失数据包与下一待发送的原始数据包集合确定为新的待发送的原始数据包集合,可以减少发送端的发送次数。其中,下一待发送的原始数据包集合可以是发送端在接收端能获得当前组的全部的原始数据包时,即将发送的当前组之后的原始数据包集合,例如当前组之后的第一组、第二组或第三组的原始数据包集合,具体是通过发送端的发送情况确定的。
88.采用上述的发送方式,接收端可以通过至少两种方式还原当前组的全部原始数据包。其中,一种方式是,接收端可以根据接收到的新的待发送的原始数据包集合中的丢失数据包,以及接收的当前组的原始数据包以及冗余数据包通过rs纠删码计算还原未接收的当前组的原始数据包。另一种方式是,接收端可以根据新的待发送的原始数据包集合的接收的数据包进行rs纠删码计算还原未接收的当前组的原始数据包。提高了接收端还原成功的概率,可以减少重发次数,降低了实时视频通信的时延。
89.本发明实施例的技术方案,通过根据网络的丢包率以及原始数据包集合中的原始数据包的第一数量值,确定冗余数据包集合中冗余数据包的第二数量值;根据原始数据包集合对应的规整数据包集合中的规整数据包,生成第二数量值的冗余数据包;在每个冗余数据包中加入第一数量值、第二数量值,生成冗余数据包所使用的原始数据包集合中的原始数据包的第一包序号,以及冗余数据包自身的第二包序号;将原始数据包集合和冗余数据包集合发送至接收端;如果接收到接收端的重传请求,则获取重传请求中包括的丢失数据包;根据丢失数据包,确定新的待发送的原始数据包集合,解决了实时视频通信中数据包发送克服丢包的问题,实现了减少冗余数据包私有头信息的占用,提高可容忍的丢包数据,提高接收端还原数据包成功的概率,并减少丢包重传次数,以确保实时视频流畅稳定的效果。
90.实施例三
91.图3是本发明实施例三提供的一种数据包的传输方法的流程图,本实施例可适用于实时视频通信场景下对rtp数据包传输的情况,该方法可以由数据包的传输装置来执行,该装置可以通过软件,和/或硬件的方式实现,装置可以集成在处理器中,如图3所示,该方法具体包括:
92.步骤310、获取针对发送端发送的原始数据包集合以及冗余数据包集合所接收得到的原始数据包子集和冗余数据包子集。
93.其中,ip网络是一种尽力而为的网络,在udp传输时不能保证收发的可靠性,网络丢包、延时情况不可避免。因此,接收端接收发送端发送的原始数据包集合以及冗余数据包集合时,不可避免的存在丢包。原始数据包子集是原始数据包集合的子集,可以包含原始数据包集合中的全部或者部分原始数据包;或者也可以不包含任一个原始数据包,即为空集。相似的,冗余数据包子集是冗余数据包集合的子集,可以包含冗余数据包集合中的全部或者部分冗余数据包;或者也可以不包含任一冗余数据包,即为空集。关于原始数据包和冗余数据包的介绍与前述实施例相同,此处不再赘述。
94.步骤320、根据原始数据包子集和冗余数据包子集,对原始数据包集合进行数据还原。
95.其中,接收端可以根据接收到的原始数据包子集和冗余数据包子集,对原始数据包集合进行数据还原,如果能够得到原始数据集中的全部原始数据包,即可以对视频进行解码播放。如果接收端根据接收到的原始数据包子集和冗余数据包子集,对原始数据包集合进行数据还原,不能够得到原始数据集中的全部原始数据包,无法对视频进行完全解码,视频播放存在卡顿或者损坏,还原结果可以是还原失败,可以指示发送端进行重传。
96.在本实施例的一个可选实施方式中,根据原始数据包子集和冗余数据包子集,对原始数据包集合进行数据还原,可以包括下述多种情况:
97.情况一:如果原始数据包子集与原始数据包集合相同,则将原始数据包子集作为还原结果。原始数据包子集与原始数据包集合相同,表明原始数据包子集中包含原始数据包集合中的全部原始数据包,原始数据包不存在丢包,接收端可以得到原始数据包集合中的全部原始数据包。原始数据包不存在丢包,接收端可以还原成功。
98.情况二:如果原始数据包子集与原始数据包集合不同,且冗余数据包子集为空集,则将原始数据包子集以及还原失败指示作为还原结果。原始数据包子集与原始数据包集合不同,表明原始数据包存在丢包,需要对丢失的原始数据包进行rs纠删码还原。但是,冗余数据包子集为空集,表明无法通过冗余数据包还原原始数据包,即无法通过rs纠删码还原丢失的原始数据包。因此,接收端可以指示还原失败,以使发送端针对丢失的原始数据包进行重传。
99.情况三:如果原始数据包子集与原始数据包集合不同,冗余数据包子集不为空集,且原始数据包子集与冗余数据包子集中的数据包数量之和小于预设数据包数量,则将原始数据包子集以及还原失败指示作为还原结果。其中,在前述实施例中,冗余数据包的第二数量m可以通过公式确定。此时丢包容忍度为m,当原始数据包子集与冗余数据包子集中的数据包数量之和小于预设数据包数量时,接收端无法通过rs纠删码计算对丢失的原始数据包进行还原。其中,预设数据包数量可以为k。接收端可以指示还原失败,以使发送端针对丢失的原始数据包进行重传。
100.情况四:如果原始数据包子集与原始数据包集合不同,冗余数据包子集不为空集,且原始数据包子集与冗余数据包子集中的数据包数量之和不小于预设数据包数量,则根据原始数据包子集和冗余数据包子集进行rs纠删码还原,将还原得到的还原数据包集合以及原始数据包子集作为还原结果。其中,原始数据包子集与冗余数据包子集中的数据包数量之和不小于预设数据包数量,接收端可以通过rs纠删码还原丢失的原始数据包作为还原数
据包集合。针对还原数据包集合和原始数据包子集,接收端得到原始数据包集合中的全部原始数据包。
101.其中,接收端通过rs纠删码还原丢失的原始数据包时,可以先得到与丢失的原始数据包对应的规整数据包,再通过规整数据包得到原始数据包。通过规整数据包得到原始数据包的具体过程,可以是按照与规整数据包生成相反的方式进行还原。例如,可以根据规整数据包中的载荷信息中最后2字节的自身数据长度值确定规整数据包自身数据长度l
k
。根据l
k
将载荷信息中前l
k
字节的数据确定为原始数据包的载荷信息。将规整数据包中的头信息确定为原始数据包的头信息。
102.为了具体说明rs纠删码还原规整数据包,在本实施例的一个可选实施方式中,根据原始数据包子集和冗余数据包子集进行rs纠删码还原,包括:根据冗余数据包子集中冗余数据包中的第一包序号和第二包序号分别确定原始数据包子集和冗余数据包子集中各数据包在rs纠删码中的矩阵位置;根据确定的矩阵位置、原始数据包子集和冗余数据包子集,进行rs纠删码矩阵计算,得到还原数据包集合。
103.其中,发送端可以是按照数据包的rtp序号相关的顺序通过矩阵运算生成冗余数据包,例如根据rtp序号的前后顺序确定矩阵位置。接收端通过第一包序号和第二包序号可以分别确定原始数据包子集和冗余数据包子集中的数据包的矩阵位置。例如,接收端根据第一包序号中的起始包序号以及包位图数据,按照rtp序号的前后顺序确定原始数据包子集中各原始数据包的矩阵位置。接收端根据记录的冗余数据包的起始序号,以及冗余数据包子集中各冗余数据包的第二包序号,按照rtp序号的前后顺序确定冗余数据包子集中各冗余数据包的矩阵位置。
104.示例性的,起始包序号为2314,包位图数据为10001111。原始数据包子集中的各原始数据包的rtp序号依次为:2314,2319,2320和2321。根据起始包序号和包位图数据,可以确定原始数据包集合中的全部原始数据包的rtp序号依次为:2314,2318,2319,2320和2321。按照rtp序号的前后顺序可以确定原始数据包子集中各原始数据包的矩阵位置依次为:2314在矩阵的第1列(或行),2319在矩阵的第3列(或行),2320在矩阵的第4列(或行),2321在矩阵的第5列(或行)。其中,rtp序号为2318的原始数据包即矩阵的第2列(或行)数据存在丢失。
105.在本实施例中,接收端对丢失的原始数据包通过rs纠删码还原的流程可以如下:首先,接收端可以根据冗余数据包子集中任一冗余数据包确定k和m。其次,接收端根据任一冗余数据包的载荷信息的数据长度减去私有头信息的数据长度可以得到l
k
。l
k
减去预设数据长度(如2字节)可以得到l
max
。接着,根据接收到的原始数据包子集中的原始数据包生成对应的规整数据包(其生成方式与发送端由原始数据包生成规整数据包的方式相同)。根据确定的各规整数据包的载荷信息x
k
、冗余数据包子集中各冗余数据包的载荷信息中的实际传输的信息y
m
、确定的各数据包的矩阵位置以及k和m,进行rs纠删码矩阵计算,确定丢失的规整数据包。其中,确定的原始数据包的矩阵位置即为对应的规整数据包的矩阵位置。最后,接收端根据还原丢失的原始数据包对应的规整数据包的载荷信息x
k
、l
k
和l
max
可以得到丢失的原始数据包的载荷信息v
k
,完成视频数据的成功接收,对视频进行解码,实现流畅播放。
106.为了具体说明根据接收到的还原结果确定反馈结果以使发送端进行下一步操作
的具体过程,在本实施例的一个可选实施方式中,在根据原始数据包子集和冗余数据包子集,对原始数据包集合进行数据还原之后,还包括:如果还原结果中包含还原失败指示,根据冗余数据包子集中冗余数据包中的第一包序号和原始数据包子集中原始数据包的包序号,确定丢失数据包;根据丢失数据包向发送端发送重传请求,以使发送端针对丢失数据包进行传输。
107.其中,接收端能还原原始数据包集合中的全部原始数据包时,接收端可以继续对后续接收到的数据包进行处理。如果接收端不能还原原始数据包集合中的全部原始数据包,即接收端的还原结果包含还原失败指示信息时,接收端可以确定丢失的原始数据包的rtp序号,例如可以根据第一包序号和接收到的原始数据包的rtp序号确定。接收端可以将当前组的原始数据包集合传输中的全部丢失的原始数据包的rtp序号对应的原始数据包定义为丢失数据包集合。重传请求中包含丢失数据包集合的全部rtp序号。
108.在本实施例的一个可选实施方式中,在根据丢失数据包向发送端发送重传请求之后,还包括:获取针对发送端发送的新的待发送的原始数据包集合以及与新的原始数据包集合对应的新的冗余数据包集合所接收得到的新的原始数据包子集和新的冗余数据包子集;根据新的原始数据包子集中的丢失数据包子集、原始数据包子集和冗余数据包子集,对原始数据包集合进行数据还原;或者,根据新的原始数据包子集、新的冗余数据包子集,对原始数据包集合进行数据还原。
109.其中,如果接收端反馈重传请求,当前组的原始数据包集合的传输还未结束,接收端处存在部分或者全部原始数据包无法还原,需要发送端针对丢失数据包集合进行重传。
110.发送端针对丢失数据包集合的重传分为至少两种情况。一种重传是发送端根据丢失数据包集合生成新的规整数据包集合对应的新的冗余数据包集合。另一种重传是发送端根据丢失数据包集合和下一组的原始数据包集合生成新的待发送的原始数据包集合,根据新的原始数据包集合生成新的规整数据包集合对应的新的冗余数据包集合。为了不重复定义,对于两种重传情况,接收端接收到的数据包均定义为新的原始数据包子集和新的冗余数据包子集,分别为新的原始数据包集合以及与新的冗余数据包集合的子集。
111.第一种重传时,接收端可以根据新的原始数据包子集和新的冗余数据包子集还原丢失数据包集合,其具体过程与根据原始数据包子集和冗余数据包子集还原原始数据包相同。或者,接收端可以根据新的原始数据包子集中的丢失数据包子集、原始数据包子集和冗余数据包子集还原丢失数据包集合,还原时,可以将丢失数据包子集中的原始数据包对应的规整数据包的载荷信息在矩阵中进行填写,以进行rs纠删码矩阵计算。其中,此时原始数据包对应的规整数据包的载荷信息是根据原始数据包集合生成对应的规整数据包集合时的参数确定的,而非按照新的原始数据包集合生成新的规整数据包集合时的参数确定。本实施例的技术方案提供了多种丢失数据包集合的还原方式,提高了还原成功概率。
112.第二种重传时,接收端也可以采用与第一种重传相似的还原方式,第二种重传可以减少发送端的发送次数,避免发送端针对丢失数据包集合进行至少一次的单独发送,可以降低实时视频传输时的时延。
113.为了提高本实施例还原丢失数据包集合的成功概率,减少重传次数。可以在新的原始数据包子集中的丢失数据包子集、原始数据包子集和冗余数据包子集的数据包数量之和不小于预设数据包数量时,接收端可以根据新的原始数据包子集中的丢失数据包子集、
原始数据包子集和冗余数据包子集还原丢失数据包集合。在新的原始数据包子集中的丢失数据包子集、原始数据包子集和冗余数据包子集的数据包数量之和小于预设数据包数量时,接收端根据新的原始数据包子集和新的冗余数据包子集还原丢失数据包集合。
114.本实施例的技术方案,通过获取针对发送端发送的原始数据包集合以及冗余数据包集合所接收得到的原始数据包子集和冗余数据包子集;根据原始数据包子集和冗余数据包子集,对原始数据包集合进行数据还原,解决了实时视频通信中丢失数据包的还原问题,实现了提高了还原成功概率,降低实时视频传输时的时延,减少重传次数的效果。
115.实施例四
116.图4是本发明实施例四提供的一种数据包的传输装置的结构示意图。结合图4,该装置包括:原始数据包集合获取模块410,规整数据包集合生成模块420,冗余数据包集合生成模块430和原始数据包集合确定模块440。
117.其中,原始数据包集合获取模块410,用于获取待发送的原始数据包集合;
118.规整数据包集合生成模块420,用于对原始数据包集合中各原始数据包进行数据包长度规整化处理,得到规整数据包集合;
119.冗余数据包集合生成模块430,用于通过rs纠删码编码生成与规整数据包集合匹配的冗余数据包集合;
120.原始数据包集合确定模块440,用于将原始数据包集合和冗余数据包集合发送至接收端,并确定新的待发送的原始数据包集合。
121.可选的,规整数据包集合生成模块420包括:
122.最大数据长度确定单元,用于根据原始数据包集合中各原始数据包的数据长度,确定原始数据包集合的最大数据长度;
123.目标数据长度确定单元,用于根据最大数据长度和预设数据长度确定目标数据长度;
124.规整数据包集合获取单元,用于分别对各原始数据包进行数据填充,得到规整数据包集合,各规整数据包的数据长度为目标数据长度。
125.可选的,规整数据包集合获取单元,具体用于:
126.分别对各原始数据包的自身数据长度至最大数据长度对应的数据位置填充预设数据;
127.分别对各原始数据包的最大数据长度至目标数据长度对应的数据位置填充各原始数据包的自身数据长度值,得到规整数据包集合。
128.可选的,冗余数据包集合生成模块430包括:
129.第二数量值确定单元,用于根据网络的丢包率以及原始数据包集合中的原始数据包的第一数量值,确定冗余数据包集合中冗余数据包的第二数量值;
130.冗余数据包生成单元,用于根据原始数据包集合对应的规整数据包集合中的规整数据包,生成第二数量值的冗余数据包;
131.内容填充单元,用于在每个冗余数据包中加入第一数量值、第二数量值,生成冗余数据包所使用的原始数据包集合中的原始数据包的第一包序号,以及冗余数据包自身的第二包序号。
132.可选的,内容填充单元,具体用于:
133.确定原始数据包集合中的原始数据包的起始包序号;
134.根据起始包序号以及原始数据包集合中的原始数据包的包序号,确定包位图数据;
135.其中,包位图数据用于指示原始数据包集合中的原始数据包的发送情况;
136.将起始包序号以及包位图数据作为第一包序号,加入在每个冗余数据包中。
137.可选的,原始数据包集合确定模块440包括:
138.丢失数据包获取单元,用于如果接收到接收端的重传请求,则获取重传请求中包括的丢失数据包;
139.原始数据包集合确定单元,用于根据丢失数据包,确定新的待发送的原始数据包集合后,返回执行对原始数据包集合中各原始数据包进行数据包长度规整化处理,得到规整数据包集合的操作。
140.可选的,原始数据包集合确定单元,具体用于:
141.将丢失数据包与下一待发送的原始数据包集合确定为新的待发送的原始数据包集合。
142.可选的,原始数据包为rtp包。
143.本发明实施例所提供的数据包的传输装置可执行本发明任意实施例所提供的数据包的传输方法,具备执行方法相应的功能模块和有益效果。
144.实施例五
145.图5是本发明实施例五提供的一种数据包的传输装置的结构示意图。结合图5,该装置包括:数据包子集获取模块510和数据还原模块520。
146.数据包子集获取模块510,用于获取针对发送端发送的原始数据包集合以及冗余数据包集合所接收得到的原始数据包子集和冗余数据包子集;
147.数据还原模块520,用于根据原始数据包子集和冗余数据包子集,对原始数据包集合进行数据还原。
148.可选的,数据还原模块520包括:
149.第一还原单元,用于如果原始数据包子集与原始数据包集合相同,则将原始数据包子集作为还原结果;
150.第二还原单元,用于如果原始数据包子集与原始数据包集合不同,且冗余数据包子集为空集,则将原始数据包子集以及还原失败指示作为还原结果;
151.第三还原单元,用于如果原始数据包子集与原始数据包集合不同,冗余数据包子集不为空集,且原始数据包子集与冗余数据包子集中的数据包数量之和小于预设数据包数量,则将原始数据包子集以及还原失败指示作为还原结果;
152.第四还原单元,用于如果原始数据包子集与原始数据包集合不同,冗余数据包子集不为空集,且原始数据包子集与冗余数据包子集中的数据包数量之和不小于预设数据包数量,则根据原始数据包子集和冗余数据包子集进行rs纠删码还原,将还原得到的还原数据包集合以及原始数据包子集作为还原结果。
153.可选的,第四还原单元,具体用于:
154.根据冗余数据包子集中冗余数据包中的第一包序号和第二包序号分别确定原始数据包子集和冗余数据包子集中各数据包在rs纠删码中的矩阵位置;
155.根据确定的矩阵位置、原始数据包子集和冗余数据包子集,进行rs纠删码矩阵计算,得到还原数据包集合。
156.可选的,该装置,还包括:
157.丢失数据包确定模块,用于在根据原始数据包子集和冗余数据包子集,对原始数据包集合进行数据还原之后,如果还原结果中包含还原失败指示,根据冗余数据包子集中冗余数据包中的第一包序号和原始数据包子集中原始数据包的包序号,确定丢失数据包;
158.重传请求发送模块,用于根据丢失数据包向发送端发送重传请求,以使发送端针对丢失数据包进行传输。
159.可选的,该装置,还包括:
160.新的数据包子集获取模块,用于在根据丢失数据包向发送端发送重传请求之后,获取针对发送端发送的新的待发送的原始数据包集合以及与新的原始数据包集合对应的新的冗余数据包集合所接收得到的新的原始数据包子集和新的冗余数据包子集;
161.新的第一数据还原模块,用于根据新的原始数据包子集中的丢失数据包子集、原始数据包子集和冗余数据包子集,对原始数据包集合进行数据还原;或者,
162.新的第二数据还原模块,用于根据新的原始数据包子集、新的冗余数据包子集,对原始数据包集合进行数据还原。
163.本发明实施例所提供的数据包的传输装置可执行本发明任意实施例所提供的数据包的传输方法,具备执行方法相应的功能模块和有益效果。
164.实施例六
165.图6是本发明实施例六提供的一种电子设备的结构示意图,如图6所示,该设备包括:
166.一个或多个处理器610,图6中以一个处理器610为例;
167.存储器620;
168.所述设备还可以包括:输入装置630和输出装置640。
169.所述设备中的处理器610、存储器620、输入装置630和输出装置640可以通过总线或者其他方式连接,图6中以通过总线连接为例。
170.存储器620作为一种非暂态计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的一种数据包的传输方法对应的程序指令/模块(例如,附图4所示的原始数据包集合获取模块410,规整数据包集合生成模块420,冗余数据包集合生成模块430和原始数据包集合确定模块440;或者,附图5所示的数据包子集获取模块510和数据还原模块520)。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述方法实施例的一种数据包的传输方法,即:
171.获取待发送的原始数据包集合;
172.对所述原始数据包集合中各原始数据包进行数据包长度规整化处理,得到规整数据包集合;
173.通过rs纠删码编码生成与所述规整数据包集合匹配的冗余数据包集合;
174.将所述原始数据包集合和所述冗余数据包集合发送至接收端,并确定新的待发送的原始数据包集合。
175.或者,
176.获取针对发送端发送的原始数据包集合以及冗余数据包集合所接收得到的原始数据包子集和冗余数据包子集;
177.根据所述原始数据包子集和所述冗余数据包子集,对所述原始数据包集合进行数据还原。
178.存储器620可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非暂态性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态性固态存储器件。在一些实施例中,存储器620可选包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至终端设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
179.输入装置630可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。
180.实施例七
181.本发明实施例七提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的一种数据包传输方法:
182.获取待发送的原始数据包集合;
183.对所述原始数据包集合中各原始数据包进行数据包长度规整化处理,得到规整数据包集合;
184.通过rs纠删码编码生成与所述规整数据包集合匹配的冗余数据包集合;
185.将所述原始数据包集合和所述冗余数据包集合发送至接收端,并确定新的待发送的原始数据包集合。
186.或者,
187.获取针对发送端发送的原始数据包集合以及冗余数据包集合所接收得到的原始数据包子集和冗余数据包子集;
188.根据所述原始数据包子集和所述冗余数据包子集,对所述原始数据包集合进行数据还原。
189.可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd

rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
190.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是
计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
191.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、rf等等,或者上述的任意合适的组合。
192.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如”c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
193.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1