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

申请号 : CN202010772663.0

文献号 : CN114070458B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 丁长文方伟成建敏王亮

申请人 : 成都鼎桥通信技术有限公司

摘要 :

本发明实施例提供一种数据传输方法、装置、设备及存储介质,该方法包括接收发送端发送的第一信令,并根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案;接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示。本发明实施例能够合理有效地实现数据传输,同时提高了数据传输方案的灵活性以及节约了资源。

权利要求 :

1.一种数据传输方法,其特征在于,包括:

接收发送端发送的第一信令,并根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案;

接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示;

所述根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案,包括:若所述第一信令中携带FEC功能的参数,将所述第一信令发送至所述接收端,并接收接收端发送的反馈信息,若所述反馈信息用于表示所述接收端不支持FEC功能,则确定所述信令协商的结果是所述FEC方案为上行的半程FEC方案;

若所述第一信令中未携带支持FEC功能的参数,将所述支持FEC功能的参数添加至所述第一信令中,得到第二信令;将所述第二信令发送至所述接收端,并接收所述接收端发送的反馈信息,若所述反馈信息用于表示所述接收端支持FEC功能,则确定所述信令协商的结果是所述FEC方案为下行的半程FEC方案;

若所述第一信令中携带FEC功能的参数,将所述第一信令发送至所述接收端,并接收接收端发送的反馈信息,若所述反馈信息用于表示所述接收端支持FEC功能,则确定所述信令协商的结果是所述FEC方案为端到端FEC方案。

2.根据权利要求1所述的方法,其特征在于,所述反馈信息包括反馈信令;

在所述接收所述接收端发送的反馈信息之后,所述方法还包括:

根据所述反馈信令,判断所述接收端是否支持所述FEC功能;

若所述反馈信令中携带所述FEC功能的参数,则确定所述接收端支持所述FEC功能;

若所述反馈信令中未携带所述FEC功能的参数,则确定所述接收端不支持所述FEC功能。

3.根据权利要求1所述的方法,其特征在于,所述接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示,包括:若所述FEC方案为上行的半程FEC方案,则接收到的所述发送端发送的数据包为FEC包,所述FEC包用于表示执行FEC编码操作后的数据包;对所述FEC包进行FEC解码,得到实时传输协议RTP包,所述RTP包为源数据形成的数据包;将RTP包发送至接收端,并在所述接收端显示所述RTP包对应的目标数据;

若所述FEC方案为下行的半程FEC方案,则接收到的所述发送端发送的数据包为RTP包;

对所述RTP包进行FEC编码,得到FEC包;将FEC包发送至接收端,以使所述接收端对所述FEC包进行FEC解码得到所述RTP包,并在所述接收端显示所述RTP包对应的目标数据;

若所述FEC方案为端到端FEC方案,则接收到的所述发送端发送的数据包为FEC包;将所述FEC包发送至接收端,以使所述接收端对所述FEC包进行FEC解码得到所述RTP包,并在所述接收端显示所述RTP包对应的目标数据。

4.根据权利要求1‑3任一项所述的方法,其特征在于,若接收到的所述发送端发送的数据包为RTP包,所述方法还包括:根据预设的分组规则,对当前分组中的RTP包进行排序处理;

判断当前分组中的排序后的RTP包是否满足FEC编码条件;

若满足,则对当前分组中的排序后的RTP包进行FEC编码。

5.根据权利要求4所述的方法,其特征在于,所述根据预设的分组规则,对当前分组中的RTP包进行排序处理,包括:获取当前分组中对应的当前期望接收的RTP包的目标序列号和当前接收到的RTP包的实际序列号;

若所述实际序列号与所述目标序列号不一致,则将所述发送端当前发送的RTP包缓存至缓存队列中,并记录所述发送端当前发送的RTP包在缓存中的等待时间;

若在第一预设时间段内,接收到序列号为所述目标序列号的RTP包,则将所述序列号为所述目标序列号的RTP包缓存至所述缓存队列中,并对当前分组中的RTP包按照序列号的顺序进行排序;当下一个第一预设时间段内接收到RTP包不是按照当前分组中的排序后的RTP包顺序的下一个期望接收的RTP包时,则根据预设的分组规则中的RPT包的个数,确定将所述下一个第一预设时间段内接收到RTP包作为当前分组中的一个RTP包并对当前分组中的RTP包按照序列号的顺序进行排序或是将所述下一个第一预设时间段内接收到RTP包作为下一个分组中的RTP包,并缓存至缓存队列中;或者,若在第一预设时间段内,未接收到序列号为所述目标序列号的RTP包时,则根据预设的分组规则中的RPT包的个数,确定将在第一预设时间段内接收到RTP包作为当前分组中的一个RTP包并对当前分组中的RTP包按照序列号的顺序进行排序或是将在第一预设时间段内接收到RTP包作为下一个分组中的RTP包,并缓存至缓存队列中。

6.根据权利要求5所述的方法,其特征在于,所述判断当前分组中的排序后的RTP包是否满足FEC编码条件,包括:根据所述当前分组中的排序后的RTP包,获取当前分组中的第一个RTP包的序列号;

若当前获取的所述第一预设时间段内接收到RTP包的序列号或所述下一个第一预设时间段内接收到RTP包的序列号中的任一序列号与所述第一个RTP包的序列号的差值大于或等于第一预设差值,则确定当前分组中的排序后的RTP包满足FEC编码条件。

7.一种数据传输装置,其特征在于,包括:

信令协商模块,用于接收发送端发送的第一信令,并根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案;

数据传输模块,用于接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示;

所述信令协商模块具体用于,

若所述第一信令中携带FEC功能的参数,将所述第一信令发送至所述接收端,并接收接收端发送的反馈信息,若所述反馈信息用于表示所述接收端不支持FEC功能,则确定所述信令协商的结果是所述FEC方案为上行的半程FEC方案;若所述第一信令中未携带支持FEC功能的参数,将所述支持FEC功能的参数添加至所述第一信令中,得到第二信令;将所述第二信令发送至所述接收端,并接收所述接收端发送的反馈信息,若所述反馈信息用于表示所述接收端支持FEC功能,则确定所述信令协商的结果是所述FEC方案为下行的半程FEC方案;

若所述第一信令中携带FEC功能的参数,将所述第一信令发送至所述接收端,并接收接收端发送的反馈信息,若所述反馈信息用于表示所述接收端支持FEC功能,则确定所述信令协商的结果是所述FEC方案为端到端FEC方案。

8.一种数据传输设备,其特征在于,包括:至少一个处理器和存储器;

所述存储器存储计算机执行指令;

所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如权利要求1至6任一项所述的数据传输方法。

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至6任一项所述的数据传输方法。

说明书 :

数据传输方法、装置、设备及存储介质

技术领域

[0001] 本发明实施例涉及通信技术领域,尤其涉及一种数据传输方法、装置、设备及存储介质。

背景技术

[0002] FEC(Forward Error Correction)是一种前向纠错技术,常用的FEC算法有冗余、异或、RS编码等。发送端将负载数据加上一定的冗余纠错码一起发送,接收端根据接收到的纠错码对数据进行差错检测,如果发现差错,则利用纠错码进行纠错。
[0003] 目前,常用的FEC算法有冗余、异或、RS编码等,可以应用于端到端方案。首先通过设置冗余度大小和选择FEC抗丢包模式,然后使用异或(XOR)操作基于多个RTP包生成FEC数据包,再以RED格式进一步封装在RTP中传输,在接收端根据FEC数据包和已接收数据包恢复丢失的数据包。
[0004] 但是,针对现有的端到端的FEC方案生效之后会在空口引入较大的冗余带宽,在不出现丢包的链路上引入冗余带宽会造成资源浪费,并且对于资源容易受限的无线网络,冗余带宽的增加会导致网络拥塞概率增加,引起更多的丢包。因此,现有技术在数据传输时,采用的方案不具有灵活性,同时导致资源的浪费。

发明内容

[0005] 本发明实施例提供一种数据传输方法、装置、设备及存储介质,能够合理有效地实现数据传输,同时提高了数据传输方案的灵活性以及节约了资源。
[0006] 第一方面,本发明实施例提供一种数据传输方法,包括:
[0007] 接收发送端发送的第一信令,并根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案;
[0008] 接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示。
[0009] 在一种可能的设计中,所述根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案,包括:
[0010] 若所述第一信令中携带FEC功能的参数,将所述第一信令发送至所述接收端,并接收接收端发送的反馈信息,若所述反馈信息用于表示所述接收端不支持FEC功能,则确定所述信令协商的结果是所述FEC方案为上行的半程FEC方案;
[0011] 若所述第一信令中未携带支持FEC功能的参数,将所述支持FEC功能的参数添加至所述第一信令中,得到第二信令;将所述第二信令发送至所述接收端,并接收所述接收端发送的反馈信息,若所述反馈信息用于表示所述接收端支持FEC功能,则确定所述信令协商的结果是所述FEC方案为下行的半程FEC方案;
[0012] 若所述第一信令中携带FEC功能的参数,将所述第一信令发送至所述接收端,并接收接收端发送的反馈信息,若所述反馈信息用于表示所述接收端支持FEC功能,则确定所述信令协商的结果是所述FEC方案为端到端FEC方案。
[0013] 在一种可能的设计中,所述反馈信息包括反馈信令;
[0014] 在所述接收所述接收端发送的反馈信息之后,所述方法还包括:
[0015] 根据所述反馈信令,判断所述接收端是否支持所述FEC功能;
[0016] 若所述反馈信令中携带所述FEC功能的参数,则确定所述接收端支持所述FEC功能;
[0017] 若所述反馈信令中未携带所述FEC功能的参数,则确定所述接收端不支持所述FEC功能。
[0018] 在一种可能的设计中,所述接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示,包括:
[0019] 若所述FEC方案为上行的半程FEC方案,则接收到的所述发送端发送的数据包为FEC包,所述FEC包用于表示执行FEC编码操作后的数据包;对所述FEC包进行FEC解码,得到实时传输协议RTP包,所述RTP包为源数据形成的数据包;将RTP包发送至接收端,并在所述接收端显示所述RTP包对应的目标数据;
[0020] 若所述FEC方案为下行的半程FEC方案,则接收到的所述发送端发送的数据包为RTP包;对所述RTP包进行FEC编码,得到FEC包;将FEC包发送至接收端,以使所述接收端对所述FEC包进行FEC解码得到所述RTP包,并在所述接收端显示所述RTP包对应的目标数据;
[0021] 若所述FEC方案为端到端FEC方案,则接收到的所述发送端发送的数据包为FEC包;将所述FEC包发送至接收端,以使所述接收端对所述FEC包进行FEC解码得到所述RTP包,并在所述接收端显示所述RTP包对应的目标数据。
[0022] 在一种可能的设计中,若接收到的所述发送端发送的数据包为RTP包,所述方法还包括:
[0023] 根据预设的分组规则,对当前分组中的RTP包进行排序处理;
[0024] 判断当前分组中的排序后的RTP包是否满足FEC编码条件;
[0025] 若满足,则对当前分组中的排序后的RTP包进行FEC编码。
[0026] 在一种可能的设计中,所述根据预设的分组规则,对当前分组中的RTP包进行排序处理,包括:
[0027] 获取当前分组中对应的当前期望接收的RTP包的目标序列号和当前接收到的RTP包的实际序列号;
[0028] 若所述实际序列号与所述目标序列号不一致,则将所述发送端当前发送的RTP包缓存至缓存队列中,并记录所述发送端当前发送的RTP包在缓存中的等待时间;
[0029] 若在第一预设时间段内,接收到序列号为所述目标序列号的RTP包,则将所述序列号为所述目标序列号的RTP包缓存至所述缓存队列中,并对当前分组中的RTP包按照序列号的顺序进行排序;当所述当前分组中的RTP包的个数少于预设的分组规则中的RTP包的个数并在下一个第一预设时间段内接收到RTP包不是按照当前分组中的排序后的RTP包顺序的下一个期望接收的RTP包时,则将所述下一个第一预设时间段内接收到RTP包作为下一个分组中的RTP包,并缓存至缓存队列中;或者,
[0030] 若在第一预设时间段内,接收到RTP包不是按照当前分组中的排序后的RTP包顺序的下一个期望接收的RTP包时,则将下一个第一预设时间段内接收到RTP包作为下一个分组中的RTP包,并缓存至缓存队列中。
[0031] 在一种可能的设计中,所述判断当前分组中的排序后的RTP包是否满足FEC编码条件,包括:
[0032] 根据所述当前分组中的排序后的RTP包,获取当前分组中的第一个RTP包的序列号;
[0033] 若当前获取的所述下一个第一预设时间段内接收到RTP包的序列号与所述第一个RTP包的序列号的差值大于或等于第一预设差值,则确定当前分组中的排序后的RTP包满足FEC编码条件。
[0034] 第二方面,本发明实施例提供一种数据传输装置,包括:
[0035] 信令协商模块,用于接收发送端发送的第一信令,并根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案;
[0036] 数据传输模块,用于接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示。
[0037] 第三方面,本发明实施例提供一种数据传输设备,包括:至少一个处理器和存储器;
[0038] 所述存储器存储计算机执行指令;
[0039] 所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述至少一个处理器执行如上第一方面以及第一方面各种可能的设计所述的方法。
[0040] 第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的方法。
[0041] 本实施例提供的数据传输方法、装置、设备及存储介质,通过接收发送端发送的第一信令,并根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案,接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示。因此,利用信令协商,确定使用哪种FEC方案,不但提高了数据传输方案的灵活性,并且选用的FEC方案对于数据传输更为有效,能够合理利用资源,进而节约了资源。

附图说明

[0042] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0043] 图1为本发明实施例提供的LTE下视频业务S1口丢包示意图;
[0044] 图2为本发明实施例提供的数据传输方法的流程示意图;
[0045] 图3为本发明又一实施例提供的数据传输方法的流程示意图;
[0046] 图4为本发明实施例提供的数据传输装置的结构示意图;
[0047] 图5为本发明实施例提供的数据传输设备的硬件结构示意图。

具体实施方式

[0048] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0049] 目前,对视频数据包进行FEC编码,是实时视频业务抗丢包的主流解决方案。通常采用的FEC方案基本为端到端方案,即视频录制端进行FEC编码然后发送,服务器针对FEC包不做任何处理,透传到播放端,视频播放端接收之后进行FEC解码并恢复丢失的数据包。例如:在LTE系统中,服务器与核心网进行交互,用户设备UE1与基站1通信,基站1与核心网通信,核心网与基站2通信,基站2与UE2通信;如果S1口(可以参见图1中“基站1与核心网的传输线”所在位置)出现丢包,FEC方案生效之后会在空口引入较大的冗余带宽。对资源容易受限的无线网络,冗余带宽的增加会导致网络拥塞概率增加,引起更多的丢包,如下图1所示的LTE下视频业务S1口丢包示意图。因此,仅仅单一采用端到端实现FEC方案引入的问题是端到端引入了冗余带宽,在不出现丢包的链路上引入冗余带宽会造成资源浪费。
[0050] 为了解决上述问题,本发明的技术构思是在业务发起时,通过信令协商确定本次业务采用半程FEC方案或者端到端FEC方案,服务器根据信令协商的结果决定对接收的数据包采用FEC编码、FEC解码或者透传的处理,进而实现将数据从发送端传输到接收端的过程,不仅保证了数据传输的有效性、灵活性,还节约了资源。
[0051] 下面以具体地实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
[0052] 图2为本发明实施例提供的数据传输方法的流程示意图。如图2所示,该方法包括:
[0053] S201、接收发送端发送的第一信令,并根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案。
[0054] 本实施例的执行主体可以为服务器(即服务器端)。
[0055] 本实施例中,由发送端发起信令,服务器接收该发送段发起的信令即第一信令,可以根据信令中是否携带FEC功能,比如FEC功能的参数来确定该发送端是否支持FEC功能或具有FEC能力。然后服务器根据该第一信令,利用信令协商,确定在发送端与接收端之间进行数据传输过程中使用的FEC方案。
[0056] 其中,这里的FEC方案可以包括半程FEC方案或者端到端FEC方案,所述半程FEC方案用于表示发送端或接收端支持FEC功能的FEC方案,所述端到端FEC方案用于表示发送端和接收端均支持FEC功能的FEC方案。这里的半程FEC方案是在服务器实现FEC的编解码。
[0057] 因此,利用信令协商,确定使用半程FEC方案或者端到端FEC方案,使得在不同的应用场景能够实现有效地数据传输,具有灵活性。
[0058] S202、接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示。
[0059] 本实施例中,在确定了使用的目标FEC方案(比如半程FEC方案或者端到端FEC方案)后,服务器接收发送端发送的数据包,然后基于使用的目标FEC方案,对数据包进行相应处理,发送至接收端,接收端可以根据接收到的数据包进行与目标FEC方案匹配的处理并显示。实现了不同的应用场景(比如发送端、接收端具体能力的不同对应不同的应用场景)能够实现有效地数据传输,解决了单一使用端到端FEC方案引入的问题,即端到端引入了冗余带宽,在不出现丢包的链路上引入冗余带宽会造成资源浪费。
[0060] 本实施例提供的数据传输方法,通过接收发送端发送的第一信令,并根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案,接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示。因此,利用信令协商,确定使用哪种FEC方案,不但提高了数据传输方案的灵活性,并且选用的FEC方案对于数据传输更为有效,能够合理利用资源,进而节约了资源。
[0061] 在一种可能的设计中,参见图3所示,图3为本发明又一实施例提供的数据传输处理方法的流程示意图。本实施例在上述实施例的基础上,对S201进行了详细说明。根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案,可以包括:
[0062] S301、若所述第一信令中携带FEC功能的参数,将所述第一信令发送至所述接收端,并接收接收端发送的反馈信息,若所述反馈信息用于表示所述接收端不支持FEC功能,则确定所述信令协商的结果是所述FEC方案为上行的半程FEC方案。
[0063] 本实施例中,当主叫方(即发送端)具有FEC能力,则主叫方在业务发起信令(即第一信令)中携带FEC能力和相关参数(即FEC功能的参数),当服务器接收到主叫方发起的第一信令之后,可以直接将第一信令转发给被叫方(即接收端),被叫方根据对FEC功能的支持情况回复信令给服务器。具体地,当被叫方支持FEC功能时,服务器将被叫方的信令(即反馈信令)转发给主叫方,从而实现端到端FEC方案;当被叫方不支持FEC功能时,服务器在被叫方的信令的基础上增加FEC能力协商,从而实现上行的半程FEC方案。
[0064] S302、若所述第一信令中未携带支持FEC功能的参数,将所述支持FEC功能的参数添加至所述第一信令中,得到第二信令;将所述第二信令发送至所述接收端,并接收所述接收端发送的反馈信息,若所述反馈信息用于表示所述接收端支持FEC功能,则确定所述信令协商的结果是所述FEC方案为下行的半程FEC方案。
[0065] 本实施例中,当主叫方不具有FEC能力,则主叫方在业务发起信令(即第一信令)中没有携带FEC能力和相关参数(即FEC功能的参数),当服务器接收到主叫方发起的第一信令之后,度武器在第一信令中增加FEC能力和相关参数,形成第二信令,并将第二信令发给被叫方(即接收端),被叫方根据对FEC功能的支持情况回复信令给服务器。具体地,当被叫方支持FEC功能时,服务器将被叫方的信令(即反馈信令)转发给主叫方,从而实现下行的半程FEC方案;当被叫方不支持FEC功能时,当前业务发起信令中对应的业务不支持FEC。
[0066] S303、若所述第一信令中携带FEC功能的参数,将所述第一信令发送至所述接收端,并接收接收端发送的反馈信息,若所述反馈信息用于表示所述接收端支持FEC功能,则确定所述信令协商的结果是所述FEC方案为端到端FEC方案。
[0067] 本实施例中,当主叫方(即发送端)具有FEC能力,则主叫方在业务发起信令(即第一信令)中携带FEC能力和相关参数(即FEC功能的参数),当服务器接收到主叫方发起的第一信令之后,可以直接将第一信令转发给被叫方(即接收端),被叫方根据对FEC功能的支持情况回复信令给服务器。具体地,当被叫方支持FEC功能时,服务器将被叫方的信令(即反馈信令)转发给主叫方,从而实现端到端FEC方案。其中,示例性的,以视频业务为例,采用端到端FEC方案时,由于在视频录制端(发送端)进行FEC编码,可以保证输入给FEC编码的RTP包不会出现乱序和丢包,这样FEC编码入口条件可以根据RTP包的个数进行分组。
[0068] 在一种可能的设计中,可以依据接收端反馈给服务器的反馈信息来确定接收端是否具有FEC能力,具体地,可以通过下述步骤实现:
[0069] 步骤a1、根据所述反馈信令,判断所述接收端是否支持所述FEC功能。
[0070] 步骤a2、若所述反馈信令中携带所述FEC功能的参数,则确定所述接收端支持所述FEC功能。
[0071] 步骤a3、若所述反馈信令中未携带所述FEC功能的参数,则确定所述接收端不支持所述FEC功能。
[0072] 本实施例中,这里的反馈信息中可以包括反馈信令,该反馈信令中可以包含或不包含具有FEC能力的FEC功能的参数,如果接收端回复给服务器的反馈信令中包含FEC功能的参数,说明接收端支持FEC功能,可以对FEC包进行解码;如果接收端回复给服务器的反馈信令中不包含FEC功能的参数,说明接收端不支持FEC功能,不能对FEC包进行解码,需要服务器对FEC包进行FEC解码后发送给接收端,接收端可以依据接收到解码后的数据包进行显示。
[0073] 示例性的,以视频业务为例,发送端录制视频,接收端播放视频,在视频传输过程中,可以依据信令协商的结果,确定视频在传输过程中采用的FEC方案。具体地,在视频业务发起时,通过信令协商确定本次业务采用半程FEC方案或者端到端FEC方案。服务器根据信令协商的结果决定对接收的数据包采用FEC编码、FEC解码或者透传的处理。
[0074] 在一种可能的设计中,本实施例在上述实施例的基础上,对S202进行了详细说明。接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示,可以包括:
[0075] 步骤b1、若所述FEC方案为上行的半程FEC方案,则服务器端接收到的所述发送端发送的数据包为FEC包,所述FEC包用于表示执行FEC编码操作后的数据包;服务器端对所述FEC包进行FEC解码,得到实时传输协议RTP包,所述RTP包为源数据形成的数据包;服务器端将RTP包发送至接收端,并在所述接收端显示所述RTP包对应的目标数据。
[0076] 本实施例中,若所述FEC方案为上行的半程FEC方案,说明发送端具有FEC能力,可以对源数据包为RTP包进行FEC编码,得到FEC包;但是由于接收端不具有FEC能力,则需要服务器(即服务器端)对接收到的接收端发送的FEC包进行FEC解码,得到RTP包,然后将解码后的RTP包发送至接收端,并在接收端显示该RTP包对应的目标数据,比如视频等。
[0077] 步骤b2、若所述FEC方案为下行的半程FEC方案,则服务器端接收到的所述发送端发送的数据包为RTP包;服务器端对所述RTP包进行FEC编码,得到FEC包;服务器端将FEC包发送至接收端,以使所述接收端对所述FEC包进行FEC解码得到所述RTP包,并在所述接收端显示所述RTP包对应的目标数据。
[0078] 本实施例中,若所述FEC方案为下行的半程FEC方案,说明发送端不具有FEC能力,直接将源数据包为RTP包发送给服务器,为了提升抗丢包能力,服务器将RTP包进行FEC编码;由于接收端具有FEC能力,则服务器可以直接将编码后的FEC包发送给接收端,并指示接收端接收到服务器发送的FEC包之后进行FEC解码,得到RTP包,并在接收端显示该RTP包对应的目标数据,比如视频等。
[0079] 因此,采用半程FEC的方案实现结果为:一次端到端的视频业务,只要数据流传输设备之间的两个设备(比如发送端、服务器、接收端等中的两个设备)支持FEC能力,则可以在该传输分段上面实现FEC方案生效,提升抗丢包能力
[0080] 步骤b3、若所述FEC方案为端到端FEC方案,则服务器端接收到的所述发送端发送的数据包为FEC包;服务器端将所述FEC包发送至接收端,以使所述接收端对所述FEC包进行FEC解码得到所述RTP包,并在所述接收端显示所述RTP包对应的目标数据。
[0081] 本实施例中,若所述FEC方案为端到端FEC方案,说明发送端和接收端均具有FEC能力,由发送端可以对源数据包为RTP包进行FEC编码,得到FEC包;通过服务器将FEC包直接转发给接收端,并指示接收端接收到服务器发送的FEC包之后进行FEC解码,得到RTP包,并在接收端显示该RTP包对应的目标数据,比如视频等。因此,在该场景下,采用端到端FEC方案,服务器对FEC数据包不做处理,从实现复杂度而言,更加简单。
[0082] 具体地,当本次业务信令协商为上行的半程FEC,则服务器收到的数据包为FEC包,转发出去为RTP包,在服务器进行FEC解码;当本次业务信令协商为下行的半程FEC,则服务器收到的数据包为RTP包,转发出去为FEC包,在服务器进行FEC编码;当本次业务信令协商为端到端FEC,则服务器收到的数据包为FEC包,转发出去为FEC包,在服务器对数据包不做处理。实现了数据传输的多样化以及灵活性。
[0083] 由于目前也有单一采用半程FEC方案,但是现有的实现半程FEC方案时,由于RTP包经过了长距离有线或者无线链路传输之后不可避免的会引入丢包或者乱序,如果采用收到的RTP包个数进行分组,会导致FEC分组编码出现异常。为了解决上述问题,本发明采用的半程FEC方案,在服务器进行FEC编码的情况,当输入的RTP包出现乱序和丢包时,导致FEC编码出现mask位填写错误导致播放端FEC解码出现异常的问题,采用了重排序和RTP序列号差值判断分组包个数的方案解决。可以通过以下步骤实现:
[0084] 步骤c1、根据预设的分组规则,对当前分组中的RTP包进行排序处理。
[0085] 步骤c2、判断当前分组中的排序后的RTP包是否满足FEC编码条件。
[0086] 步骤c3、若满足,则对当前分组中的排序后的RTP包进行FEC编码。
[0087] 示例性,以采用下行的半程FEC方案或是对服务器接三方时协议对接失败未进行FEC编码的为例。对于半程FEC或者对接三方的场景,视频源端(即发送端)由于能力缺失或者协议对接失败未进行FEC编码,服务器对收到的RTP包进行FEC编码,再转发给支持FEC解码的播放端(即接收端)。在该种场景,服务器首先需要对收到的RTP包做缓存重排序,然后按照分组大小送到FEC编码模块,进行FEC编码。解决了RTP包输入乱序和丢包问题。
[0088] 在一种可能的设计中,如何进行RTP包排序处理,可以通过以下步骤实现:
[0089] 步骤d1、获取当前分组中对应的当前期望接收的RTP包的目标序列号和当前接收到的RTP包的实际序列号。
[0090] 步骤d2、若所述实际序列号与所述目标序列号不一致,则将所述发送端当前发送的RTP包缓存至缓存队列中,并记录所述发送端当前发送的RTP包在缓存中的等待时间。
[0091] 步骤d3、若在第一预设时间段内,接收到序列号为所述目标序列号的RTP包,则将所述序列号为所述目标序列号的RTP包缓存至所述缓存队列中,并对当前分组中的RTP包按照序列号的顺序进行排序;当下一个第一预设时间段内接收到RTP包不是按照当前分组中的排序后的RTP包顺序的下一个期望接收的RTP包时,则根据预设的分组规则中的RPT包的个数,确定将所述下一个第一预设时间段内接收到RTP包作为当前分组中的一个RTP包并对当前分组中的RTP包按照序列号的顺序进行排序或是将所述下一个第一预设时间段内接收到RTP包作为下一个分组中的RTP包,并缓存至缓存队列中。
[0092] 步骤d4、若在第一预设时间段内,未接收到序列号为所述目标序列号的RTP包时,则根据预设的分组规则中的RPT包的个数,确定将在第一预设时间段内接收到RTP包作为当前分组中的一个RTP包并对当前分组中的RTP包按照序列号的顺序进行排序或是将在第一预设时间段内接收到RTP包作为下一个分组中的RTP包,并缓存至缓存队列中。
[0093] 本实施例中,首先记录当前期望接收的RTP序号(这里的序号即为序列号,同时,当前期望接收的RTP序号即为目标序列号)为N;如果收到的RTP序号(即当前接收到的RTP包的实际序列号)不是期望接收的RTP序号,则将该RTP包按序(按顺序)放入缓存队列中,并开始记录其在缓存中的等待时间,并定期检查缓存中每个RTP的等待时间:若序号为N的RTP包在“FEC编码最大等待时间”超时前(即在第一预设时间段内)收到,则将该RTP包以及之后接收到的顺序的RTP包送入FEC编码模块,并判断是否满足FEC编码条件;若序号为N的RTP包的等待时间超过“FEC编码最大等待时间”,则按照分组中RTP包的个数,将该RTP包之前(和之后)接收到的顺序RTP包送入FEC编码模块,并判断是否满足FEC编码条件,并将当前分组中的排序后的RTP包中最后一个RTP包的下一个RTP包序号作为下一个期望接收的RTP序号;如果收到的RTP序列号比期望序列号小,说明该RTP包由于超时未收到已被判决为丢包,直接丢弃。
[0094] 在一种可能的设计中,如何判断是否可以是否满足FEC编码条件,并将满足FEC编码条件的RTP包实现FEC编码,可以通过以下步骤实现:
[0095] 步骤e1、根据所述当前分组中的排序后的RTP包,获取当前分组中的第一个RTP包的序列号。
[0096] 步骤e2、若当前获取的所述下一个第一预设时间段内接收到RTP包的序列号与所述第一个RTP包的序列号的差值大于或等于第一预设差值,则确定当前分组中的排序后的RTP包满足FEC编码条件。
[0097] 本实施例中,设置FEC编码输入的RTP包分组为Group_Size;记录当前FEC分组的第一个RTP序列号为M;若当前收到的RTP包序列号与M的差值小于“Group_Size‑1”的值,则不满足FEC编码条件,说明当前RTP包以及之前的RTP包所属当前FEC分组且当前FEC分组不满足FEC编码条件,继续等待接收下一个RTP包;若当前收到的RTP包序列号与M的差值等于“Group_Size‑1”的值,则满足FEC编码条件,说明当前RTP包以及之前的RTP包所属当前FEC分组且当前FEC分组已满足FEC编码条件,将当前RTP包以及之前的RTP包送入FEC编码模块进行FEC编码,并初始化下一个FEC分组的第一个RTP序列号为M+Group_Size;若当前收到的RTP包序列号与M的差值大于Group_Size‑1,则满足FEC编码条件,说明当前RTP包所属下一个FEC分组,将当前RTP包之前的RTP包送入FEC编码模块进行FEC编码,并初始化下一个FEC分组的第一个RTP序列号为M+Group_Size。
[0098] 因此,本发明实施例通过增加半程FEC方案的信令协商流程;增加半程FEC方案的FEC编解码处理方案以及增加乱序重排处理和FEC分组优化,能够合理有效地实现数据传输,同时提高了数据传输方案的灵活性以及节约了资源,并且还解决了对半程FEC场景,在服务器进行FEC编码的情况,当输入的RTP包出现乱序和丢包时,导致FEC编码出现mask位填写错误导致播放端FEC解码出现异常的问题,提升抗丢包能力。
[0099] 图4为本发明实施例提供的数据传输装置的结构示意图。如图4所示,该数据传输装置40包括:信令协商模块401、数据传输模块402。
[0100] 信令协商模块401,用于接收发送端发送的第一信令,并根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案;
[0101] 数据传输模块402,用于接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示。
[0102] 本发明实施例提供的数据传输装置,通过信令协商模块401、数据传输模块402,用于接收发送端发送的第一信令,并根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案,接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示。因此,利用信令协商,确定使用哪种FEC方案,不但提高了数据传输方案的灵活性,并且选用的FEC方案对于数据传输更为有效,能够合理利用资源,进而节约了资源。
[0103] 在一种可能的设计中,信令协商模块401,具体用于:
[0104] 在所述第一信令中携带FEC功能的参数时,将所述第一信令发送至所述接收端,并接收接收端发送的反馈信息,若所述反馈信息用于表示所述接收端不支持FEC功能,则确定所述信令协商的结果是所述FEC方案为上行的半程FEC方案;在所述第一信令中未携带支持FEC功能的参数时,将所述支持FEC功能的参数添加至所述第一信令中,得到第二信令;将所述第二信令发送至所述接收端,并接收所述接收端发送的反馈信息,若所述反馈信息用于表示所述接收端支持FEC功能,则确定所述信令协商的结果是所述FEC方案为下行的半程FEC方案;在所述第一信令中携带FEC功能的参数时,将所述第一信令发送至所述接收端,并接收接收端发送的反馈信息,若所述反馈信息用于表示所述接收端支持FEC功能,则确定所述信令协商的结果是所述FEC方案为端到端FEC方案。
[0105] 在一种可能的设计中,所述反馈信息包括反馈信令;数据传输模块402,还用于在所述接收所述接收端发送的反馈信息之后,根据所述反馈信令,判断所述接收端是否支持所述FEC功能;若所述反馈信令中携带所述FEC功能的参数,则确定所述接收端支持所述FEC功能;若所述反馈信令中未携带所述FEC功能的参数,则确定所述接收端不支持所述FEC功能。
[0106] 在一种可能的设计中,数据传输模块402,具体用于:
[0107] 在所述FEC方案为上行的半程FEC方案时,接收到的所述发送端发送的数据包为FEC包,所述FEC包用于表示执行FEC编码操作后的数据包;对所述FEC包进行FEC解码,得到实时传输协议RTP包,所述RTP包为源数据形成的数据包;将RTP包发送至接收端,并在所述接收端显示所述RTP包对应的目标数据;在所述FEC方案为下行的半程FEC方案时,接收到的所述发送端发送的数据包为RTP包;对所述RTP包进行FEC编码,得到FEC包;将FEC包发送至接收端,以使所述接收端对所述FEC包进行FEC解码得到所述RTP包,并在所述接收端显示所述RTP包对应的目标数据;在所述FEC方案为端到端FEC方案时,接收到的所述发送端发送的数据包为FEC包;将所述FEC包发送至接收端,以使所述接收端对所述FEC包进行FEC解码得到所述RTP包,并在所述接收端显示所述RTP包对应的目标数据。
[0108] 在一种可能的设计中,所述装置还包括:处理模块;处理模块,用于在接收到的所述发送端发送的数据包为RTP包时,根据预设的分组规则,对当前分组中的RTP包进行排序处理;判断当前分组中的排序后的RTP包是否满足FEC编码条件;若满足,则对当前分组中的排序后的RTP包进行FEC编码。
[0109] 在一种可能的设计中,处理模块,具体用于:获取当前分组中对应的当前期望接收的RTP包的目标序列号和当前接收到的RTP包的实际序列号;若所述实际序列号与所述目标序列号不一致,则将所述发送端当前发送的RTP包缓存至缓存队列中,并记录所述发送端当前发送的RTP包在缓存中的等待时间;若在第一预设时间段内,接收到序列号为所述目标序列号的RTP包,则将所述序列号为所述目标序列号的RTP包缓存至所述缓存队列中,并对当前分组中的RTP包按照序列号的顺序进行排序;当下一个第一预设时间段内接收到RTP包不是按照当前分组中的排序后的RTP包顺序的下一个期望接收的RTP包时,则根据预设的分组规则中的RPT包的个数,确定将所述下一个第一预设时间段内接收到RTP包作为当前分组中的一个RTP包并对当前分组中的RTP包按照序列号的顺序进行排序或是将所述下一个第一预设时间段内接收到RTP包作为下一个分组中的RTP包,并缓存至缓存队列中;或者,若在第一预设时间段内,未接收到序列号为所述目标序列号的RTP包时,则根据预设的分组规则中的RPT包的个数,确定将在第一预设时间段内接收到RTP包作为当前分组中的一个RTP包并对当前分组中的RTP包按照序列号的顺序进行排序或是将在第一预设时间段内接收到RTP包作为下一个分组中的RTP包,并缓存至缓存队列中。
[0110] 在一种可能的设计中,处理模块,还具体用于:
[0111] 根据所述当前分组中的排序后的RTP包,获取当前分组中的第一个RTP包的序列号;若当前获取的所述第一预设时间段内接收到RTP包的序列号或所述下一个第一预设时间段内接收到RTP包的序列号中的任一序列号与所述第一个RTP包的序列号的差值大于或等于第一预设差值,则确定当前分组中的排序后的RTP包满足FEC编码条件。
[0112] 图5为本发明实施例提供的数据传输设备的硬件结构示意图。如图5所示,本实施例提供的数据传输设备50包括:至少一个处理器501和存储器502。其中,处理器501、存储器502通过总线503连接。
[0113] 在具体实现过程中,至少一个处理器501执行所述存储器502存储的计算机执行指令,使得至少一个处理器501执行如上数据传输设备50所执行的数据传输方法,具体的,数据传输设备通过响应于用于指示对电话号码脱敏的脱敏指令,确定获取所述电话号码的应用程序;根据所述应用程序的类型,对所述电话号码进行脱敏处理,得到目标数据;在所述应用程序上显示所述目标数据。
[0114] 本发明提供的数据传输设备,通过接收发送端发送的第一信令,并根据所述第一信令,通过信令协商,确定所述发送端与接收端进行数据传输使用的前向纠错FEC方案,接收所述发送端发送的数据包,通过FEC方案,将所述数据包发送至所述接收端,以使所述接收端根据所述数据包进行显示。因此,利用信令协商,确定使用哪种FEC方案,不但提高了数据传输方案的灵活性,并且选用的FEC方案对于数据传输更为有效,能够合理利用资源,进而节约了资源。
[0115] 处理器501的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
[0116] 在上述的图5所示的实施例中,应理解,处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:
Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合发明所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0117] 存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器。
[0118] 总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(Extended Industry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本发明附图中的总线并不限定仅有一根总线或一种类型的总线。
[0119] 本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上数据传输设备执行的数据传输方法。
[0120] 上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
[0121] 一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于设备中。
[0122] 本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0123] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。