数据传输方法、装置、电子设备和存储介质转让专利

申请号 : CN202111506252.8

文献号 : CN114401208B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张明泽管显笋张洪彬

申请人 : 北京百度网讯科技有限公司

摘要 :

本公开公开了数据传输方法、装置、电子设备和存储介质,涉及通信技术领域,尤其涉及语音和信息流领域。具体实现方案为:通过获取目标传输链路的丢包率,实现根据所述丢包率,确定编码时间间隔,从而将所述编码时间间隔内生成的原始报文进行编码,以得到目标报文,进而通过所述目标传输链路向接收端发送所述目标报文。由于发送端可以根据丢包率动态调整编码时间间隔,从而可以有效利用网络的带宽资源,做到及时恢复丢失的报文,有效降低丢包重传造成的延迟,提高抗丢包能力。

权利要求 :

1.一种数据传输方法,包括:

获取目标传输链路的丢包率;

根据所述丢包率,确定编码时间间隔;

将所述编码时间间隔内生成的原始报文进行编码,以得到目标报文;

通过所述目标传输链路向接收端发送所述目标报文;

所述将所述编码时间间隔内生成的原始报文进行编码,以得到目标报文,包括:根据所述编码时间间隔内生成的原始报文的个数,以及所述目标传输链路的丢包率,确定冗余报文的个数;

根据所述冗余报文的个数,进行所述原始报文的前向纠错FEC编码,以得到多个所述目标报文;

其中,所述通过所述目标传输链路向接收端发送所述目标报文之后,还包括:接收所述接收端发送的重传请求,其中,接收端发送重传请求的时间间隔是根据接收端到发送端链路的丢包率和往返时间动态调整;

响应于所述重传请求,通过所述目标传输链路向接收端发送重传报文;其中,所述重传报文是所述多个目标报文中与所述原始报文相对应的目标报文。

2.根据权利要求1所述的数据传输方法,其中,所述根据所述丢包率,确定编码时间间隔,包括:根据所述丢包率,查询丢包率和编码时间间隔之间的正向关系,以确定对应的编码时间间隔。

3.根据权利要求2所述的数据传输方法,其中,所述根据所述丢包率,查询丢包率和编码时间间隔之间的正向关系,以确定对应的编码时间间隔,包括:在所述丢包率小于目标区间下限的情况下,确定所述编码时间间隔为第一时长;

在所述丢包率大于或等于所述目标区间下限,且小于或等于目标区间上限的情况下,确定所述编码时长间隔为第二时长;

在所述丢包率大于所述目标区间上限的情况下,确定所述编码时长间隔为第三时长;

其中,所述第一时长小于所述第二时长,所述第二时长小于所述第三时长。

4.一种数据传输方法,包括:

向发送端发送目标传输链路的丢包率;

基于所述目标传输链路,接收所述发送端发送的目标报文,所述目标报文为根据所述丢包率在编码时间间隔内对原始报文进行编码得到的;所述基于所述目标传输链路 ,接收所述发送端发送的目标报文之后,还包括:响应于对所述目标报文解码失败,向所述发送端发送重传请求,其中,接收端发送重传请求的时间间隔是根据接收端到发送端链路的丢包率和往返时间动态调整;

在设定的等待时长内,通过所述目标传输链路等待接收所述发送端响应于所述重传请求发送的重传报文;

在接收到所述重传报文的情况下,对所述重传报文进行解码,以得到所述原始报文。

5.根据权利要求4所述的方法,其中,所述方法还包括:根据所述目标传输链路的报文往返时长,以及所述丢包率,确定所述等待时长。

6.一种数据传输装置,包括:

获取模块,用于获取目标传输链路的丢包率;

确定模块,用于根据所述丢包率,确定编码时间间隔;

编码模块,用于将所述编码时间间隔内生成的原始报文进行编码,以得到目标报文;

发送模块,用于通过所述目标传输链路向接收端发送所述目标报文;还包括:重传模块,用于接收所述接收端发送的重传请求,其中,接收端发送重传请求的时间间隔是根据接收端到发送端链路的丢包率和往返时间动态调整;响应于所述重传请求,通过所述目标传输链路向接收端发送重传报文;其中,所述重传报文是所述多个目标报文中与所述原始报文相对应的目标报文;

所述编码模块,包括:

确定单元,用于根据所述编码时间间隔内生成的原始报文的个数,以及所述目标传输链路的丢包率,确定冗余报文的个数;

编码单元,用于根据所述冗余报文的个数,进行所述原始报文的前向纠错FEC编码,以得到多个所述目标报文。

7.根据权利要求6所述的数据传输装置,其中,所述确定模块,用于:根据所述丢包率,查询丢包率和编码时间间隔之间的正向关系,以确定对应的编码时间间隔。

8.根据权利要求7所述的数据传输装置,其中,所述确定模块,用于:在所述丢包率小于目标区间下限的情况下,确定所述编码时间间隔为第一时长;

在所述丢包率大于或等于所述目标区间下限,且小于或等于目标区间上限的情况下,确定所述编码时长间隔为第二时长;

在所述丢包率大于所述目标区间上限的情况下,确定所述编码时长间隔为第三时长;

其中,所述第一时长小于所述第二时长,所述第二时长小于所述第三时长。

9.一种数据传输装置,包括:

发送模块,用于向发送端发送目标传输链路的丢包率;

报文接收模块,用于基于所述目标传输链路,接收所述发送端发送的目标报文,所述目标报文为根据所述丢包率在编码时间间隔内对原始报文进行编码得到的;还包括:报文发送模块,用于响应于对所述目标报文解码失败,向所述发送端发送重传请求;

处理模块,用于在设定的等待时长内,通过所述目标传输链路等待接收所述发送端响应于所述重传请求发送的重传报文;

解码模块,用于在接收到所述重传报文的情况下,对所述重传报文进行解码,以得到所述原始报文。

10.根据权利要求9所述的装置,其中,所述装置还包括:时长确定模块,用于根据所述目标传输链路的报文往返时长,以及所述丢包率,确定所述等待时长。

11.一种电子设备,包括:

至少一个处理器;以及

与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1‑3中任一项所述的方法,或者,执行权利要求4‑5中任一项所述的方法。

12.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1‑3中任一项所述的方法,或者,执行权利要求4‑5中任一项所述的方法。

说明书 :

数据传输方法、装置、电子设备和存储介质

技术领域

[0001] 本公开涉及通信技术领域,尤其涉及语音和信息流领域,具体涉及一种数据传输方法、装置、电子设备和存储介质。

背景技术

[0002] 通过互联网传输音视频数据时,视频数据由于前向参考的原因,一旦发生丢失,往往会导致图像静止或模糊、音频视频不同步、帧率下降等问题,而音频数据丢失会导致音频失真、间断或间歇性噪音、音频中断等问题。
[0003] 由于互联网中会采用不可靠协议传输数据,从而导致网络时常发生数据的丢失,因此,能有效恢复网络造成的丢包,对于保证音视频的质量具有重要意义。

发明内容

[0004] 本公开提供了一种用于数据传输的方法、装置、设备以及存储介质。
[0005] 根据本公开的一方面,提供了一种数据传输方法,包括:
[0006] 获取目标传输链路的丢包率;
[0007] 根据所述丢包率,确定编码时间间隔;
[0008] 将所述编码时间间隔内生成的原始报文进行编码,以得到目标报文;
[0009] 通过所述目标传输链路向接收端发送所述目标报文。
[0010] 根据本公开的另一方面,提供了一种数据传输方法,包括:
[0011] 向发送端发送目标传输链路的丢包率;
[0012] 基于所述目标传输链路,接收所述发送端发送的目标报文,所述目标报文为根据所述丢包率在编码时间间隔内对原始报文进行编码得到的。
[0013] 根据本公开的又一方面,提供了一种数据传输装置,包括:
[0014] 获取模块,用于获取目标传输链路的丢包率;
[0015] 确定模块,用于根据所述丢包率,确定编码时间间隔;
[0016] 编码模块,用于将所述编码时间间隔内生成的原始报文进行编码,以得到目标报文;
[0017] 发送模块,用于通过所述目标传输链路向接收端发送所述目标报文。
[0018] 根据本公开的再一方面,提供了一种数据传输装置,包括:
[0019] 发送模块,用于向发送端发送目标传输链路的丢包率;
[0020] 报文接收模块,用于基于所述目标传输链路,接收所述发送端发送的目标报文,所述目标报文为根据所述丢包率在编码时间间隔内对原始报文进行编码得到的。
[0021] 根据本公开的还一方面,提供了一种电子设备,包括:
[0022] 至少一个处理器;以及
[0023] 与所述至少一个处理器通信连接的存储器;其中,
[0024] 所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行前述一方面所述的方法,或者,执行前述另一方面所述的方法。
[0025] 根据本公开的还一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行前述一方面所述的方法,或者,执行前述另一方面所述的方法。
[0026] 根据本公开的还一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现如前述一方面所述的方法或者,执行前述另一方面所述的方法。
[0027] 本公开公开的数据传输方法、装置、电子设备和存储介质,通过获取目标传输链路的丢包率,实现根据所述丢包率,确定编码时间间隔,从而将所述编码时间间隔内生成的原始报文进行编码,以得到目标报文,进而通过所述目标传输链路向接收端发送所述目标报文。由于发送端可以根据丢包率动态调整编码时间间隔,从而可以有效利用网络的带宽资源,做到及时恢复丢失的报文,有效降低丢包重传造成的延迟,提高抗丢包能力。
[0028] 应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

[0029] 附图用于更好地理解本方案,不构成对本公开的限定。其中:
[0030] 图1是根据本公开第一实施例所提供的数据传输方法的流程示意图;
[0031] 图2是根据本公开第二实施例所提供的数据传输方法的流程示意图;
[0032] 图3是本公开实施例中确定编码时间间隔的流程示意图;
[0033] 图4是根据本公开第三实施例所提供的数据传输方法的流程示意图;
[0034] 图5是根据本公开第四实施例所提供的数据传输方法的流程示意图;
[0035] 图6是本公开实施例中的数据传输方法的原理示意图;
[0036] 图7是根据本公开第五实施例所提供的数据传输装置的结构示意图;
[0037] 图8是根据本公开第六实施例所提供的数据传输装置的结构示意图;
[0038] 图9示出了可以用来实施本公开的实施例的示例电子设备900的示意性框图。

具体实施方式

[0039] 以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
[0040] 需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。
[0041] 下面参考附图描述本公开实施例的数据传输方法、装置、电子设备和存储介质。
[0042] 本公开实施例针对相关技术中,前向纠错FEC(Forward Error Correction,向前纠错)编码在一定丢包限度内,数据可以完全恢复,但超过该限度,则完全无法恢复,丢包重传NACK(Negative Acknowledgement,否定确认)技术会引入额外的延迟的问题,提出一种数据传输方法。
[0043] 图1是根据本公开第一实施例所提供的数据传输方法的流程示意图。
[0044] 如图1所示,该方法包括以下步骤:
[0045] 步骤101,获取目标传输链路的丢包率。
[0046] 其中,丢包是指一个或多个数据数据包的数据无法透过网上到达目的地,所述丢包率是指所丢失数据包数量占所发送数据组的比率,与数据包长度以及包发送频率相关。例如,丢包率的计算可以采用的公式如下:
[0047] 丢包率=[(输入报文‑输出报文)/输入报文]*100%
[0048] 在本公开实施例中,所述目标传输链路是指发送端到接收端链路。可选地,可以通过ping命令,抓取目标传输链路的报文,从而根据目标传输链路的报文获取目标传输链路的丢包率,或者,可选地,可以通过上述计算公式,计算得到目标传输链路的丢包率,本实施例中对此不做限制。
[0049] 步骤102,根据所述丢包率,确定编码时间间隔。
[0050] 在本公开实施例中,可以根据步骤101获取的丢包率,动态确定编码时间间隔。作为一种可能的实现方式,当丢包率小时,可以确定一个较短的编码时间间隔,例如,当丢包率小于20%时,可以确定编码时间间隔为60毫秒,这样,可以及时恢复丢失报文,有效降低丢包重传造成的延迟。当丢包率大时,可以确定一个较长的编码时间间隔,例如,当丢包率大于40%时,可以确定编码时间间隔为140毫秒,这样,可以降低丢包对接收端解码恢复的影响。
[0051] 步骤103,将所述编码时间间隔内生成的原始报文进行编码,以得到目标报文。
[0052] 在本公开实施例中,在编码时间间隔内会生成多个原始报文,通过对编码时间间隔内生成的多个原始报文进行编码,从而得到目标报文。
[0053] 作为一种可能的实现方式,发送端可以对原始报文进行前向纠错FEC编码。例如,当原始报文的数量小于255时,可以采用RS(Reed‑solomon codes,里德‑所罗门码)编码,当原始报文的数量大于或等于255时,可以采用LDPC(Low‑density Parity‑check,低密度奇偶校验)编码。
[0054] 步骤104,通过所述目标传输链路向接收端发送所述目标报文。
[0055] 在本公开实施例中,可以将步骤103得到的目标报文通过目标传输链路发送给接收端,接收端再对目标报文进行解码,从而恢复出原始报文,完成数据传输。
[0056] 作为一种可能的应用场景,本公开实施例可以应用于语音领域,通过实时采集语音信息,对所述语音信息同步进行处理和传输,例如,在同声传译的场景下,发送端可以通过目标传输链路在一定的编码时间间隔内向接收端发送对语音信息进行编码后的目标语音信息,接收端接收到目标语音信息后,对目标语音信息进行解码,恢复出对应的语音信息,完成语音信息的传输。其中,所述编码时间间隔可以为根据目标传输链路的丢包率动态确定的时间间隔。
[0057] 作为另一种可能的应用场景,本公开实施例可以应用于信息流领域,传输信息流信息,例如,发送端可以通过目标传输链路在一定的编码时间间隔内向接收端发送对信息流信息进行编码后的目标信息流信息,接收端接收到目标信息流信息后,对目标信息流信息进行解码,恢复出对应的信息流信息,完成信息流信息的传输。其中,所述编码时间间隔可以为根据目标传输链路的丢包率动态确定的时间间隔。
[0058] 本公开公开的数据传输方法,通过获取目标传输链路的丢包率,实现根据所述丢包率,确定编码时间间隔,从而将所述编码时间间隔内生成的原始报文进行编码,以得到目标报文,进而通过所述目标传输链路向接收端发送所述目标报文。由于发送端可以根据丢包率动态调整编码时间间隔,从而可以有效利用网络的带宽资源,做到及时恢复丢失的报文,有效降低丢包重传造成的延迟,提高抗丢包能力。
[0059] 为了清楚说明上一实施例,本公开实施例提供了另一种数据传输方法可能的实现方式,图2是根据本公开第二实施例所提供的数据传输方法的流程示意图。相类似地,本公开实施例同样可以应用于信息流领域,传输信息流信息。
[0060] 如图2所示,该数据传输方法可以包括以下步骤:
[0061] 步骤201,获取目标传输链路的丢包率。
[0062] 需要说明的是,步骤201的具体实现过程可以参见实施例101的描述,原理相同,在此不再赘述。
[0063] 步骤202,根据丢包率,查询丢包率和编码时间间隔之间的正向关系,以确定对应的编码时间间隔。
[0064] 在本公开实施例中,可以根据丢包率,查询丢包率和编码时间间隔之间的正向关系,从而确定对应的编码时间间隔。其中,所述正向关系可用于指示不同丢包率对应的编码时间间隔。
[0065] 步骤203,根据编码时间间隔内生成的原始报文的个数,以及目标传输链路的丢包率,确定冗余报文的个数。
[0066] 在本公开实施例中,可以根据编码时间间隔内生成的原始报文的个数和目标传输链路的丢包率,计算出冗余报文的个数。其中,冗余报文的个数r计算可以采用的公式如下:
[0067]
[0068] 其中,Plr(Packet loss rate,丢包率)为目标传输链路的丢包率,k为编码时间间隔内生成的原始报文的个数,Q为经验系数,取值为大于或等于1。
[0069] 需要说明的是,当k为较小值时,编码时间间隔内生成的原始报文的个数过小,在目标传输链路中丢失报文后计算得到的冗余率误差较大。为了尽可能恢复原始报文,需要将计算的冗余报文的个数往大的方向偏移,从而经验系数的取值需要大于或等于1。
[0070] 步骤204,根据冗余报文的个数,进行原始报文的前向纠错FEC编码,以得到多个目标报文。
[0071] 在本公开实施例中,可以通过将冗余报文和原始报文进行组合,确定一组报文,从而对所述一组报文进行前向纠错FEC编码,以得到多个目标报文。其中,所述一组报文由冗余报文和原始报文组成,其个数为冗余报文的个数与原始报文的个数之和。
[0072] 举例来说,假设在Δt编码时间间隔内生成的原始报文的个数为k,计算得到的冗余报文的个数为r,从而确定一组报文,其个数为n,其中,n=k+r,进而发送端可以根据计算得到的冗余报文的个数,进行所述一组报文的前向纠错FEC编码,其中,当n小于255时,可以采用RS编码,当n大于或等于255时,可以采用LDPC编码,以得到多个目标报文。
[0073] 由于原始报文在网络传输过程中可以通过增加冗余报文的方式进行前向纠错FEC编码,从而可以使得接收端能够在网络发生丢包后利用冗余报文直接恢复出丢失的报文,有效降低了丢包重传造成的延迟,提高了抗丢包能力。
[0074] 步骤205,通过目标传输链路向接收端发送所述多个目标报文。
[0075] 在本公开实施例中,可以将得到的多个目标报文通过目标传输链路发送给接收端。作为一种可能的实现方式,可以每经过动态确定的编码时间间隔就确认出冗余报文的个数,进行一次原始报文的前向纠错FEC编码,发送给接收端。
[0076] 需要说明的是,接收端只要在多个目标报文中收到数量与编码时间间隔内生成的原始报文的个数相同的报文,就能恢复出所有的原始报文。但是,由于网络链路的突发性,有时通过目标传输链路向接收端发送多个目标报文,接收端不一定会收到数量与编码时间间隔内生成的原始报文的个数相同的报文,从而导致所述多个目标报文中丢失的原始报文无法恢复,也浪费了发送冗余报文的带宽。此时接收端为了能够恢复出原始报文,会采用丢包重传NACK技术,向发送端发送重传请求。
[0077] 需要说明的是,根据丢包重传NACK技术的重传请求逻辑,接收端发送重传请求,在请求之后的RTT(Round‑Trip Time,往返时间)时间间隔之后没有收到请求的报文,会重新发送重传请求。但是所述重传请求逻辑在链路高延迟,或者接收端到发送端链路也存在丢包的情况下,会出现请求的报文过晚到达,或者请求的报文丢失,所以接收端发送重传请求的时间间隔需要根据接收端到发送端链路的丢包率和往返时间动态调整。作为一种可能的实现方式,假设接收端到发送端链路的丢包率为rPlr(reverse Packet loss rate,反向丢包率),往返时间为RTT,那么,接收端发送重传请求的时间间隔可以为RTT(1‑rPlr),其中,RTT的最大值为300ms。
[0078] 在接收端到发送端链路存在丢包的情况下,重传请求有丢失的可能性,为了防止由于重传请求丢失而导致发送端没有接收到接收端发送的重传请求,接收端可以不等一个RTT的超时确认时间就重新发送重传请求,也就是说,接收端发送重传请求的时间间隔可以根据接收端到发送端链路的丢包率和往返时间动态调整,由此可以有效降低延迟。
[0079] 步骤206,接收接收端发送的重传请求。
[0080] 在本公开实施例中,接收端可以通过接收端到发送端链路向发送端发送重传请求,发送端接收接收端发送的重传请求。
[0081] 需要说明的是,由于冗余报文本身没有有效的数据信息,只对前向纠错FEC解码有效,而原始报文本身就是所需的数据信息报文,并且也可以进行前向纠错FEC解码,恢复出其他的原始报文,因此,接收端通过目标传输链路向发送端发送重传请求,只请求重发原始报文,而不请求重发冗余报文。
[0082] 步骤207,响应于重传请求,通过目标传输链路向接收端发送重传报文;其中,所述重传报文是所述多个目标报文中与所述原始报文相对应的目标报文。
[0083] 在本公开实施例中,响应于接收端发送的重传请求,如果请求的报文在缓存中,发送端可以直接通过目标传输链路向接收端发送重传报文。其中,所述重传报文是多个目标报文中与原始报文相对应的目标报文。
[0084] 本公开公开的数据传输方法,发送端通过根据丢包率,查询丢包率和编码时间间隔之间的正向关系,以确定对应的编码时间间隔,实现根据编码时间间隔内生成的原始报文的个数,以及目标传输链路的丢包率,确定冗余报文的个数,从而根据冗余报文的个数,进行原始报文的前向纠错FEC编码,以得到多个目标报文,进而通过目标传输链路向接收端发送所述多个目标报文,在接收接收端发送的重传请求之后,响应于重传请求,通过目标传输链路向接收端发送重传报文,其中,所述重传报文是所述多个目标报文中与所述原始报文相对应的目标报文。由于原始报文在网络传输过程中可以通过增加冗余报文的方式进行前向纠错FEC编码,从而可以使得接收端能够在网络发生丢包后利用冗余报文直接恢复出丢失的报文,提高抗丢包能力。并且,由于接收端发送重传请求的时间间隔可以根据接收端到发送端链路的丢包率和往返时间动态调整,从而可以有效降低丢包重传造成的延迟。本公开公开的数据传输方法结合了向前纠错FEC编码和丢包重传NACK技术,通过发送端根据发送端到接收端链路的丢包率动态调整编码时间间隔,接收端根据接收端到发送端链路的丢包率动态调整发送重传请求的时间间隔,弥补单纯使用FEC技术由于丢包超过一定限度导致无法恢复,也弥补了使用NACK丢包重传造成的延迟。
[0085] 为了清楚说明图2所示实施例中,步骤202中根据丢包率,查询丢包率和编码时间间隔之间的正向关系,以确定对应的编码时间间隔,本公开实施例提供了图3所示的确定编码时间间隔的流程示意图,如图3所示,根据丢包率确定对应的编码时间间隔可以包括以下步骤:
[0086] 步骤301,在丢包率小于目标区间下限的情况下,确定编码时间间隔为第一时长。
[0087] 这里,可以通过设定目标区间,根据丢包率所在的目标区间,确定对应的编码时间间隔。可选地,可以设定一个目标区间下限,在丢包率小于所述目标区间下限的情况下,确定对应的编码时间间隔为第一时长。
[0088] 举例来说,假设设定目标区间下限为20%,那么,当丢包率小于20%时,可以确定对应的编码时间间隔为60毫秒,其中,所述60毫秒即为第一时长。
[0089] 步骤302,在丢包率大于或等于目标区间下限,且小于或等于目标区间上限的情况下,确定编码时长间隔为第二时长。
[0090] 可选地,可以设定一个目标区间上限,在丢包率大于或等于步骤301中设定的目标区间下限,且小于或等于所述目标区间上限的情况下,确定对应的编码时间间隔为第二时长。
[0091] 举例来说,假设步骤301中设定的目标区间下限为20%,这里设定的目标区间上限为40%,那么,当丢包率大于或等于20%,且小于或等于40%时,可以确定对应的编码时间间隔为100毫秒,其中,所述100毫秒即为第二时长。
[0092] 步骤303,在丢包率大于目标区间上限的情况下,确定编码时长间隔为第三时长。
[0093] 可选地,可以根据步骤302中设定的目标区间上限,在丢包率大于所述目标区间上限的情况下,确定对应的编码时间间隔为第三时长。
[0094] 举例来说,假设步骤302中设定的目标区间上限为40%,那么,当丢包率大于40%时,可以确定对应的编码时间间隔为140毫秒,其中,所述140毫秒即为第三时长。
[0095] 需要说明的是,所述第一时长、所述第二时长和所述第三时长存在一种大小关系,即所述第一时长小于所述第二时长,所述第二时长小于所述第三时长。
[0096] 综上,通过设定目标区间,实现根据丢包率所在的目标区间,确定对应的编码时间间隔。由此,当丢包率小时,可以确定一个较短的编码时间间隔,这样,可以及时恢复丢失报文,有效降低丢包重传造成的延迟。当丢包率大时,可以确定一个较长的编码时间间隔,这样,可以降低丢包对接收端解码恢复的影响。
[0097] 需要说明的是,上述实施例是从发送端角度进行描述,为了更加清楚地说明数据传输过程,本公开实施例提供了从接收端角度进行描述的一种数据传输方法可能的实现方式,图4是根据本公开第三实施例所提供的数据传输方法的流程示意图。相类似地,本公开实施例同样可以应用于信息流领域,传输信息流信息。
[0098] 如图4所示,该方法包括以下步骤:
[0099] 步骤401,向发送端发送目标传输链路的丢包率。
[0100] 在本公开实施例中,接收端可以根据接收到的发送端通过目标传输链路发送的目标报文,在某个固定时间间隔内通过接收端到发送端链路向发送端发送目标报文的RR(Receiver Reports接收者报告)报文,从而将报文统计信息通过RR报文反馈给发送端。其中,所述目标传输链路是指发送端到接收端链路,所述报文统计信息中包括但不限于目标传输链路的丢包率,所述丢包率是指所丢失数据包数量占所发送数据组的比率,与数据包长度以及包发送频率相关。
[0101] 举例来说,发送端和接收端可以每隔2s向对端发送一个PTCP(Real‑time ControlProtocol,实时传输控制协议)的RR报文,从而将报文统计信息通过RR报文反馈给发送端。其中,发送端向接收端发送的RR报文的报文统计信息中包括但不限于发送端到接收端链路的丢包率Plr,接收端向发送端发送的RR报文的报文统计信息中包括但不限于接收端到发送端链路的丢包率rPlr。
[0102] 步骤402,基于所述目标传输链路,接收所述发送端发送的目标报文,所述目标报文为根据所述丢包率在编码时间间隔内对原始报文进行编码得到的。
[0103] 在本公开实施例中,接收端可以基于目标传输链路,即发送端到接收端链路,接收发送端发送的目标报文,所述目标报文为根据目标传输链路的丢包率在编码时间间隔内对原始报文进行编码得到的。
[0104] 需要说明的是,接收端理论上在每个编码时间间隔之后就能根据接收到的目标报文,通过解码恢复出所有的原始报文。
[0105] 本公开公开的数据传输方法,接收端向发送端发送目标传输链路的丢包率,以及基于所述目标传输链路,接收所述发送端发送的目标报文,所述目标报文为根据所述丢包率在编码时间间隔内对原始报文进行编码得到的。由于目标报文为根据目标传输链路的丢包率在编码时间间隔内对原始报文进行编码得到的,从而可以有效恢复网络造成的丢包,提高抗丢包能力。
[0106] 为了清楚说明上一实施例,本公开实施例提供了另一种数据传输方法可能的实现方式,图5是根据本公开第四实施例所提供的数据传输方法的流程示意图。相类似地,本公开实施例同样是从接收端角度进行描述,也同样可以应用于信息流领域,传输信息流信息。
[0107] 如图5所示,该方法包括以下步骤:
[0108] 步骤501,向发送端发送目标传输链路的丢包率。
[0109] 步骤502,基于所述目标传输链路,接收所述发送端发送的目标报文,所述目标报文为根据所述丢包率在编码时间间隔内对原始报文进行编码得到的。
[0110] 需要说明的是,步骤501‑502的具体实现过程可以参见实施例401‑402的描述,原理相同,在此不再赘述。
[0111] 步骤503,响应于对所述目标报文解码失败,向所述发送端发送重传请求。
[0112] 在本公开实施例中,响应于对目标报文解码失败,接收端向发送端发送重传请求。其中,造成接收端对目标报文解码失败的原因有很多,例如,由于网络链路的突发性,发送端通过目标传输链路向接收端发送多个目标报文,接收端不一定会接收到所述多个目标报文,从而出现由于目标报文部分丢失而导致接收端对目标报文解码失败的情况,本公开实施例中对此不做限制。
[0113] 步骤504,根据所述目标传输链路的报文往返时长,以及所述丢包率,确定等待时长。
[0114] 在本公开实施例中,可以根据目标传输链路的报文往返时长和丢包率,确定接收端发送重传请求后需要等待接收发送端响应于重传请求发送重传报文的等待时长。作为一种可能的实现方式,假设目标传输链路的报文往返时长为RTT,丢包率为rPlr,那么,等待时长可以为RTT(1‑rPlr),其中,RTT的最大值为300ms。
[0115] 由于所述等待时长可以根据目标传输链路的报文往返时长和丢包率动态进行调整,从而可以有效降低丢包重传造成的延迟。
[0116] 步骤505,在所述等待时长内,通过所述目标传输链路等待接收所述发送端响应于所述重传请求发送的重传报文。
[0117] 可选地,在步骤503确定的等待时长内,发送端响应于接收到的重传请求,通过目标传输链路向接收端发送重传报文,接收端可以通过目标传输链路等待接收发送端响应于重传请求发送的重传报文。其中,所述重传报文是目标报文中与原始报文相对应的目标报文。
[0118] 步骤506,在接收到所述重传报文的情况下,对所述重传报文进行解码,以得到所述原始报文。
[0119] 在本公开实施例中,接收端响应于接收到的重传报文,对重传报文进行解码,从而得到对应的原始报文。
[0120] 本公开公开的数据传输方法,接收端通过向发送端发送目标传输链路的丢包率,以及基于所述目标传输链路,接收所述发送端发送的目标报文,实现响应于对所述目标报文解码失败,向所述发送端发送重传请求,从而在设定的等待时长内,通过所述目标传输链路等待接收所述发送端响应于所述重传请求发送的重传报文,进而在接收到所述重传报文的情况下,对所述重传报文进行解码,以得到所述原始报文。其中,所述等待时长根据所述目标传输链路的报文往返时长以及所述丢包率确定。由于所述等待时长可以根据目标传输链路的报文往返时长和丢包率动态进行调整,从而可以有效降低丢包重传造成的延迟。
[0121] 为了清楚说明上述公开实施例,现举例进行说明。
[0122] 如图6所示,本数据传输方法可分为两部分,一是发送端实时获取发送端到接收端链路的丢包率Plr,根据丢包率Plr动态计算进行向前纠错FEC编码时间间隔Δt,从而根据编码时间间隔内生成的原始报文的个数k和目标传输链路的丢包率Plr,计算出冗余报文的个数r,进而通过将冗余报文和原始报文进行组合,确定一组个数为n的报文,其中,n=k+r,实现根据计算得到的冗余报文的个数,进行所述一组个数为n的报文的前向纠错FEC编码,其中,当n小于255时,可以采用RS编码,当n大于或等于255时,可以采用LDPC编码,以得到多个目标报文,通过网络发送给接收端。需要说明的是,发送端会将所述原始报文进行缓存,从而得到原始报文的缓存数据,以便于在接收到接收端发送的重传请求之后,直接将原始报文的缓存数据通过网络发送给接收端。
[0123] 二是接收端接收发送端通过网络发送的多个目标报文,并对所述多个目标报文进行前向纠错FEC解码,以得到对应的原始报文,并对所述原始报文进行丢包检测,在原始报文丢包的情况下,接收端通过网络向发送端发送重传请求。需要说明的是,接收端到发送端链路存在丢包的可能性,也就是说,重传请求有丢失的可能性,为了防止由于重传请求丢失而导致发送端没有接收到接收端发送的重传请求,接收端发送重传请求的时间间隔可以根据接收端到发送端链路的丢包率和往返时间动态调整,由此可以有效降低延迟。
[0124] 综上,发送端通过实时获取发送端到接收端链路的丢包率,根据丢包率动态计算进行编码时间间隔,实现根据编码时间间隔内生成的原始报文的个数和目标传输链路的丢包率,确定冗余报文的个数,进而通过将冗余报文和原始报文进行组合,确定一组报文,实现根据计算得到的冗余报文的个数,进行所述一组报文的前向纠错FEC编码,以得到多个目标报文,通过网络发送给接收端。接收端接收发送端通过网络发送的多个目标报文,并对所述多个目标报文进行前向纠错FEC解码,以得到对应的原始报文,并对所述原始报文进行丢包检测,在原始报文丢包的情况下,接收端通过网络向发送端发送重传请求。由此,通过结合向前纠错FEC编码和丢包重传NACK技术,发送端根据发送端到接收端链路的丢包率动态调整编码时间间隔,接收端根据接收端到发送端链路的丢包率动态调整发送重传请求的时间间隔,弥补单纯使用FEC技术由于丢包超过一定限度导致无法恢复,也弥补了使用NACK丢包重传造成的延迟。
[0125] 与上述图1至图3实施例提供的数据传输方法相对应,本公开还提供一种数据传输装置,由于本公开实施例提供的数据传输装置与上述图1至图3实施例提供的数据传输方法相对应,因此在数据传输方法的实施方式也适用于本公开实施例提供的数据传输装置,在本公开实施例中不再详细描述。
[0126] 图7是根据本公开第五实施例所提供的数据传输装置的结构示意图。
[0127] 如图7所示,该数据传输装置700可以包括:获取模块710、确定模块720、编码模块730以及发送模块740。
[0128] 其中,获取模块710,用于获取目标传输链路的丢包率;
[0129] 确定模块720,用于根据所述丢包率,确定编码时间间隔;
[0130] 编码模块730,用于将所述编码时间间隔内生成的原始报文进行编码,以得到目标报文;
[0131] 发送模块740,用于通过所述目标传输链路向接收端发送所述目标报文。
[0132] 在本公开实施例的一种可能的实现方式中,确定模块720,具体用于:
[0133] 根据所述丢包率,查询丢包率和编码时间间隔之间的正向关系,以确定对应的编码时间间隔。
[0134] 在本公开实施例的一种可能的实现方式中,确定模块720,具体用于:
[0135] 在所述丢包率小于目标区间下限的情况下,确定所述编码时间间隔为第一时长;
[0136] 在所述丢包率大于或等于所述目标区间下限,且小于或等于目标区间上限的情况下,确定所述编码时长间隔为第二时长;
[0137] 在所述丢包率大于所述目标区间上限的情况下,确定所述编码时长间隔为第三时长;
[0138] 其中,所述第一时长小于所述第二时长,所述第二时长小于所述第三时长。
[0139] 在本公开实施例的一种可能的实现方式中,编码模块730,包括:
[0140] 确定单元731,用于根据所述编码时间间隔内生成的原始报文的个数,以及所述目标传输链路的丢包率,确定冗余报文的个数;
[0141] 编码单元732,用于根据所述冗余报文的个数,进行所述原始报文的前向纠错FEC编码,以得到多个所述目标报文,其中,所述多个目标报文的个数为所述冗余报文的个数与所述原始报文的个数之和。
[0142] 在本公开实施例的一种可能的实现方式中,所述装置还包括:重传模块750。
[0143] 其中,重传模块750,用于接收所述接收端发送的重传请求;响应于所述重传请求,通过所述目标传输链路向接收端发送重传报文;其中,所述重传报文是所述多个目标报文中与所述原始报文相对应的目标报文。
[0144] 本公开公开的数据传输装置,发送端通过获取目标传输链路的丢包率,实现根据所述丢包率,确定编码时间间隔,从而将所述编码时间间隔内生成的原始报文进行编码,以得到目标报文,进而通过所述目标传输链路向接收端发送所述目标报文。由于发送端可以根据丢包率动态调整编码时间间隔,从而可以有效利用网络的带宽资源,做到及时恢复丢失的报文,有效降低丢包重传造成的延迟,提高抗丢包能力。
[0145] 与上述图4至图5实施例提供的数据传输方法相对应,本公开还提供另一种数据传输装置,由于本公开实施例提供的数据传输装置与上述图4至图4实施例提供的数据传输方法相对应,因此在数据传输方法的实施方式也适用于本公开实施例提供的数据传输装置,在本公开实施例中不再详细描述。
[0146] 图8是根据本公开第六实施例所提供的数据传输装置的结构示意图。
[0147] 如图8所示,该数据传输装置800可以包括:发送模块810和报文接收模块820。
[0148] 其中,发送模块810,用于向发送端发送目标传输链路的丢包率;
[0149] 报文接收模块810,用于基于所述目标传输链路,接收所述发送端发送的目标报文,其中,所述目标报文为根据所述丢包率在编码时间间隔内对原始报文进行编码得到的报文。
[0150] 在本公开实施例的一种可能的实现方式中,所述装置还包括:报文发送模块830、处理模块840和解码模块850。
[0151] 其中,报文发送模块830,用于响应于对所述目标报文解码失败,向所述发送端发送重传请求;
[0152] 处理模块840,用于在设定的等待时长内,通过所述目标传输链路等待接收所述发送端响应于所述重传请求发送的重传报文;
[0153] 解码模块850,用于在接收到所述重传报文的情况下,对所述重传报文进行解码,以得到所述原始报文。
[0154] 在本公开实施例的一种可能的实现方式中,所述装置还包括:时长确定模块860。
[0155] 其中,时长确定模块860,用于根据所述目标传输链路的报文往返时长,以及所述丢包率,确定所述等待时长。
[0156] 本公开公开的数据传输装置,接收端向发送端发送目标传输链路的丢包率,以及基于所述目标传输链路,接收所述发送端发送的目标报文,其中,所述目标报文为根据所述丢包率在编码时间间隔内对原始报文进行编码得到的报文。由于目标报文是根据目标传输链路的丢包率,确定编码时间间隔,将编码时间间隔内生成的原始报文进行编码得到的报文,从而可以有效恢复网络造成的丢包,提高抗丢包能力。
[0157] 为了实现上述实施例,本公开还提供一种电子设备,该电子设备可以包括至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行本公开上述任一实施例提出的数据传输方法。
[0158] 为了实现上述实施例,本公开还提供一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本公开上述任一实施例提出的数据传输方法。
[0159] 为了实现上述实施例,本公开还提供一种计算机程序产品,该计算机程序产品包括计算机程序,计算机程序在被处理器执行时实现本公开上述任一实施例提出的数据传输方法。
[0160] 根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
[0161] 图9示出了可以用来实施本公开的实施例的示例电子设备900的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0162] 如图9所示,设备900包括计算单元901,其可以根据存储在ROM(Read‑Only Memory,只读存储器)902中的计算机程序或者从存储单元908加载到RAM(Random Access Memory,随机访问/存取存储器)903中的计算机程序,来执行各种适当的动作和处理。在RAM 903中,还可存储设备900操作所需的各种程序和数据。计算单元901、ROM 902以及RAM 903通过总线904彼此相连。I/O(Input/Output,输入/输出)接口905也连接至总线904。
[0163] 设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0164] 计算单元901可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元901的一些示例包括但不限于CPU(Central Processing Unit,中央处理单元)、GPU(Graphic Processing Units,图形处理单元)、各种专用的AI(Artificial Intelligence,人工智能)计算芯片、各种运行机器学习模型算法的计算单元、DSP(Digital Signal Processor,数字信号处理器)、以及任何适当的处理器、控制器、微控制器等。计算单元901执行上文所描述的各个方法和处理,例如上述数据传输方法。例如,在一些实施例中,上述数据传输方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序加载到RAM 903并由计算单元901执行时,可以执行上文描述的数据传输方法的一个或多个步骤。备选地,在其他实施例中,计算单元901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行上述数据传输方法。
[0165] 本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、FPGA(Field Programmable Gate Array,现场可编程门阵列)、ASIC(Application‑Specific Integrated Circuit,专用集成电路)、ASSP(Application Specific Standard Product,专用标准产品)、SOC(System On Chip,芯片上系统的系统)、CPLD(Complex Programmable Logic Device,复杂可编程逻辑设备)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0166] 用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0167] 在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、RAM、ROM、EPROM(Electrically Programmable Read‑Only‑Memory,可擦除可编程只读存储器)或快闪存储器、光纤、CD‑ROM(Compact Disc Read‑Only Memory,便捷式紧凑盘只读存储器)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0168] 为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(Cathode‑Ray Tube,阴极射线管)或者LCD(Liquid Crystal Display,液晶显示器)监视器;以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0169] 可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:LAN(Local Area Network,局域网)、WAN(Wide Area Network,广域网)、互联网和区块链网络。
[0170] 计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端‑服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务("Virtual Private Server",或简称"VPS")中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0171] 其中,需要说明的是,人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的学科,既有硬件层面的技术也有软件层面的技术。人工智能硬件技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理等技术;人工智能软件技术主要包括计算机视觉技术、语音识别技术、自然语言处理技术以及机器学习/深度学习、大数据处理技术、知识图谱技术等几大方向。
[0172] 应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0173] 上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。