一种数据处理方法、装置、设备及可读存储介质与流程
未命名
09-29
阅读:117
评论:0
1.本技术涉及计算机技术领域,尤其涉及一种数据处理方法、装置、设备以及可读存储介质。
背景技术:
2.随着互联网的不断普及,实时视频得到了良好的发展,观看实时视频慢慢成为日常生活中的一种娱乐方式,特别是在新闻发布、在线教育、社交网络和自媒体场景中越发普遍。
3.通常情况下,在视频数据的传输过程中,为了减少视频数据丢失和错误对解码质量造成的不利影响,可以使用一些错误控制技术来提高视频数据在网络上传输的可靠性,错误控制技术可以包括前向纠错(forwarderrorcorrection,fec),fec通过产生一定的冗余数据来检测和纠正数据错误,虽然fec会浪费一定的网络带宽,但是延迟短。
4.然而,实时视频会要求低延时,而在低延时实时视频的传输过程中,由于fec的逻辑是如果有丢包情况就开启fec,fec可以根据丢包率来调整冗余度,丢包越高冗余度就越高,冗余度的增长也会带来冗余包的增长,所增长的冗余包极有可能导致链路丢包率更加增加,从而导致恶性循环。也就是说,在低延时实时视频的传输过程中,应用现有的fec策略,丢包率仍然较高,数据传输延时也无法得到很好地改善。
技术实现要素:
5.本技术实施例提供一种数据处理方法、装置、设备以及可读存储介质,可以在数据传输过程中,减少数据丢包率以及数据传输延时。
6.本技术实施例一方面提供了一种数据处理方法,包括:
7.获取目标数据帧对应的目标原始数据包;目标原始数据包是指对目标数据帧进行数据编码后所得到的数据包;
8.基于冗余传输策略将目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包,将目标原始数据包与冗余数据包发送至接收端;
9.接收接收端返回的反馈信息;
10.若反馈信息包括针对目标原始数据包与冗余数据包的实时丢包率,则在传输剩余数据帧时,基于实时丢包率确定冗余传输策略所指示的冗余编码功能的功能状态;功能状态包括运行状态以及关闭状态;剩余数据帧是指目标数据帧所属的媒体数据中,除目标数据帧以外且未传输的数据帧。
11.本技术实施例一方面提供了一种数据处理装置,包括:
12.包获取模块,用于目标数据帧对应的目标原始数据包;目标原始数据包是指对目标数据帧进行数据编码后所得到的数据包;
13.冗余编码模块,用于基于冗余传输策略将目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包,将目标原始数据包与冗余数据包发送至接收端;
14.反馈接收模块,用于接收接收端返回的反馈信息;
15.功能状态确定模块,用于若反馈信息包括针对目标原始数据包与冗余数据包的实时丢包率,则在传输剩余数据帧时,基于实时丢包率确定冗余传输策略所指示的冗余编码功能的功能状态;功能状态包括运行状态以及关闭状态;剩余数据帧是指目标数据帧所属的媒体数据中,除目标数据帧以外且未传输的数据帧。
16.在一个实施例中,功能状态确定模块,包括:
17.丢包阈值确定单元,用于获取媒体数据所属的业务场景类型,根据业务场景类型确定媒体数据对应的丢包率阈值;
18.目标时延获取单元,用于若实时丢包率大于预设下限值,且实时丢包大于丢包率阈值,则获取信息接收时刻下的目标网络传输时延;信息接收时刻是指接收到反馈信息的时刻;
19.功能状态确定单元,用于根据目标网络传输时延,确定冗余传输策略所指示的冗余编码功能的功能状态;
20.功能状态确定单元,还用于若实时丢包率大于丢包率阈值,则将冗余传输策略所指示的冗余编码功能的功能状态,确定为关闭状态。
21.在一个实施例中,目标时延获取单元,包括:
22.集合获取子单元,用于获取针对网络传输时延的历史检测时间段集合;历史检测时间段集合中的每个历史检测时间段用于检测网络传输时延;一个历史检测时间段对应一个所检测到的历史网络传输时延;
23.目标时间段获取子单元,用于在历史检测时间段集合中,获取信息接收时刻所属的目标历史检测时间段;
24.目标时延获取子单元,用于将目标历史检测时间段对应的历史网络传输时延,确定为信息接收时刻下的目标网络传输时延。
25.在一个实施例中,功能状态确定单元,包括:
26.时延集合获取子单元,用于获取历史网络传输时延集合;历史网络传输时延集合包括n个历史网络传输时延,一个历史网络传输时延是指在一个历史检测时间段内,所检测到的网络传输时延;n个正整数;每个历史检测时间段均早于信息接收时刻;
27.曲线构建子单元,用于按照n个历史检测时间段与信息接收时刻的时间顺序,构建针对历史网络传输时延集合与目标网络传输时延的时延变化曲线;
28.功能状态确定子单元,用于根据时延变化曲线所指示的时延变化趋势,确定冗余传输策略所指示的冗余编码功能的功能状态。
29.在一个实施例中,功能状态确定子单元,还具体用于若时延变化趋势为递增趋势,则将冗余传输策略所指示的冗余编码功能的功能状态,确定为关闭状态;
30.功能状态确定子单元,还具体用于若时延变化趋势为平稳波动趋势,则将冗余传输策略所指示的冗余编码功能的功能状态,确定为运行状态。
31.在一个实施例中,目标数据帧的帧类型为帧内编码类型;
32.冗余编码模块包括:
33.帧组获取单元,用于基于冗余传输策略所指示的针对帧内编码类型的第一冗余编码规则,获取目标数据帧所属的单位数据帧组;单位数据帧组是由媒体数据中的m个连续的
数据帧所组成的;m为正整数;
34.时长获取单元,用于获取单位数据帧组对应的帧组编码时长,以及冗余传输策略对应的策略维持时长;
35.阈值获取单元,用于获取媒体数据所属的业务场景类型,根据业务场景类型确定媒体数据对应的丢包率阈值;
36.冗余编码单元,用于根据帧组编码时长、策略维持时长以及丢包率阈值,对原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包。
37.在一个实施例中,时长获取单元包括:
38.编码时长获取子单元,用于获取单位数据帧组包含的每个数据帧分别对应的数据编码时长,得到m个数据编码时长;
39.时长确定子单元,用于将m个数据编码时长进行相加处理,得到帧组编码时长;
40.时长确定子单元,还用于获取当前时刻,以及冗余传输策略的策略开启时刻;
41.时长确定子单元,还用于将当前时刻与策略开启时刻之间的差值时长,确定为策略维持时长。
42.在一个实施例中,冗余编码单元包括:
43.冗余度确定子单元,用于根据帧组编码时长、策略维持时长以及丢包率阈值,确定目标数据帧对应的第一冗余度;
44.冗余包数量确定子单元,用于获取目标原始数据包对应的原始包数量,根据第一冗余度以及原始包数量确定目标数据帧对应的第一冗余包数量;
45.冗余编码子单元,用于根据第一冗余度以及第一冗余包数量,对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包;冗余数据包对应的数据包数量为第一冗余包数量。
46.在一个实施例中,目标数据帧的帧类型为前向编码类型;
47.冗余编码模块包括:
48.参考帧获取单元,用于基于冗余传输策略所指示的针对第二帧类型的第二冗余编码规则,获取目标数据帧所属的单位数据帧组;单位数据帧组是由媒体数据中的m个连续的数据帧所组成的;m为正整数;
49.参考帧获取单元,还用于获取单位数据帧组中的帧类型为帧内编码类型,且传输状态为已传输状态的参考数据帧;
50.参考包获取单元,用于获取参考数据帧对应的原始数据包,将参考数据帧对应的原始数据包确定为参考数据包;
51.包编码单元,用于获取目标原始数据包对应的第一数据包数量,以及参考数据包对应的第二数据包数量,根据第一数据包数量以及第二数据包数量,对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包。
52.在一个实施例中,包编码单元,还具体用于获取参考数据帧对应的冗余度,将参考数据帧对应的冗余度确定为参考冗余度;
53.包编码单元,还具体用于基于参考冗余度、第一数据包数量以及第二数据包数量,确定目标数据帧对应的第一候选冗余度;
54.包编码单元,还具体用于获取第二冗余编码规则所指示的针对第二帧类型的第二
候选冗余度;
55.包编码单元,还具体用于将第一候选冗余度与第二候选冗余度之间的最小候选冗余度,确定为目标数据帧对应的第二冗余度;
56.包编码单元,还具体用于根据第一数据包数量以及第二冗余度,确定目标数据帧对应的第二冗余包数量;
57.包编码单元,还具体用于根据第二冗余度以及第二冗余包数量,对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包;冗余数据包对应的数据包数量为第二冗余包数量。
58.在一个实施例中,数据处理装置还包括:
59.原始包获取模块,用于若在传输剩余数据帧时,冗余传输策略所指示的冗余编码功能的功能状态为关闭状态,则获取剩余数据帧对应的待传输原始数据包;待传输原始数据包是指对剩余数据帧进行数据编码后所得到的数据包;
60.原始包发送模块,用于将待传输原始数据包发送至接收端。
61.在一个实施例中,数据处理装置还包括:
62.重传模块,用于若反馈信息包括针对丢失数据包的重传请求,则基于重传请求从缓存库中获取丢失数据包,将丢失数据包重新传输至接收端;丢失数据包是指目标原始数据包中,接收端未接收到的原始数据包。
63.本技术实施例一方面提供了一种计算机设备,包括:处理器和存储器;
64.存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行本技术实施例中的方法。
65.本技术实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被处理器执行时,执行本技术实施例中的方法。
66.本技术的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本技术实施例中一方面提供的方法。
67.在本技术实施例中,在传输数据帧时,对于某个目标数据帧,可以采用冗余传输策略将目标数据帧的原始数据包(即对目标数据帧进行数据编码后所得到的数据包)进行冗余编码,得到冗余数据包后,再将冗余数据包与原始数据包一起发送到接收端;而本技术中,可以根据接收端返回的反馈信息,来控制还未传输的剩余数据帧的冗余传输策略,例如,在反馈信息包括实时丢包率时,则在传输剩余数据帧时,可以基于实时丢包率来确定冗余传输策略的冗余编码功能的功能状态,其中,若功能状态为运行状态,则表征在传输剩余数据帧时,可以基于采用冗余传输策略进行传输;若功能状态为关闭状态,则表征在传输剩余数据帧时,可以关闭冗余传输策略。应当理解,本技术可以通过实时丢包率,来分析传输链路的带宽情况(如实时丢包率过大,则表征传输链路的数据包超过了链路带宽容量),进而可以动态控制冗余传输策略,通过对数据帧进行冗余传输策略的控制,可以在冗余数据包过度的情况下(数据包超过了传输链路的带宽容量的情况下),及时关闭冗余传输策略,减小丢包率;也可以在冗余数据包适量的情况下,继续维持冗余传输策略,从而可以基于冗
余传输策略来减少数据包的重传率,进而减小由于重传带来的端到端的延时。综上,本技术通过动态控制数据帧的冗余传输策略,可以在数据帧的传输过程中,减少数据丢包率,并减少数据传输时延。
附图说明
68.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
69.图1是本技术实施例提供的一种网络架构图;
70.图2是本技术实施例提供的一种低时延直播的系统架构图;
71.图3是本技术实施例提供的一种进行数据编码的场景示意图;
72.图4是本技术实施例提供的一种数据处理方法的流程示意图;
73.图5是本技术实施例提供的一种确定冗余编码功能的功能状态的流程示意图;
74.图6是本技术实施例提供的一种绘制时延变化曲线的示意图;
75.图7是本技术实施例提供的一种对原始数据包进行冗余编码,得到冗余数据包的流程示意图;
76.图8是本技术实施例提供的一种对原始数据包进行冗余编码,得到冗余数据包的流程示意图;
77.图9是本技术实施例提供的一种数据处理装置的结构示意图;
78.图10是本技术实施例提供的一种计算机设备的结构示意图。
具体实施方式
79.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
80.请参见图1,图1是本技术实施例提供的一种网络架构的结构示意图。如图1所示,该网络架构可以包括业务服务器1000和终端设备集群(即终端设备集群)。该终端设备集群可以包括一个或者多个终端设备,这里将不对终端设备的数量进行限制。如图1所示,多个终端设备具体可以包括终端设备100a、终端设备100b、终端设备100c、
…
、终端设备100n。如图1所示,终端设备100a、终端设备100b、终端设备100c、
…
、终端设备100n可以分别与上述业务服务器1000进行网络连接,以便于每个终端设备可以通过该网络连接与业务服务器1000进行数据交互。其中,这里的网络连接不限定连接方式,可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其他方式,本技术在此不做限制。
81.每个终端设备均可以集成安装有目标应用,当该目标应用运行于各终端设备中时,可与上述图1所示的业务服务器1000之间进行数据交互。其中,该目标应用可以包括具有显示文字、图像、音频以及视频等数据信息功能的应用。其中,该应用可以包括社交应用、
多媒体应用(例如,视频应用)、娱乐应用(例如,游戏应用)、教育应用、直播应用等具有媒体数据编码功能(如视频编码功能)的应用,当然,应用还可以为其他具有显示数据信息功能、视频编码功能的应用,在此不再一一进行举例。其中,该应用可以为独立的应用,也可以为集成在某应用(例如,社交应用、教育应用以及多媒体应用等)中的嵌入式子应用,在此不进行限定。
82.为便于理解,本技术实施例可以在图1所示的多个终端设备中选择一个终端设备作为目标终端设备。例如,本技术实施例可以将图1所示的终端设备100a作为目标终端设备,该目标终端设备中可以集成有具备视频编码功能的目标应用。此时,该目标终端设备可以通过该目标应用对应的业务数据平台与业务服务器1000之间实现数据交互。
83.应当理解,本技术实施例中的具有媒体数据编码功能(如,视频编码功能)的计算机设备(例如,终端设备100a、业务服务器1000)可以通过云技术,实现对多媒体数据(例如,视频数据)的数据编码以及数据传输。其中,云技术(cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
84.云技术可以是网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
85.例如,本技术实施例提供的数据处理方法可以应用于视频观看场景、视频通话场景、视频传输场景、云会议场景、直播场景等高分辨率、高帧率的场景。其中,云会议是基于云计算技术的一种高效、便捷、低成本的会议形式。使用者只需要通过互联网界面,进行简单易用的操作,便可快速高效地与全球各地团队及客户同步分享语音、数据文件及视频,而会议中数据的传输、处理等复杂技术由云会议服务商帮助使用者进行操作。目前国内云会议主要集中在以saas(software as a service,软件即服务)模式为主体的服务内容,包括电话、网络、视频等服务形式,基于云计算的视频会议就叫云会议。在云会议时代,数据的传输、处理、存储全部由视频会议厂家的计算机资源处理,用户完全无需再购置昂贵的硬件和安装繁琐的软件,只需打开浏览器,登录相应界面,就能进行高效的远程会议。云会议系统支持多服务器动态集群部署,并提供多台高性能服务器,大大提升了会议稳定性、安全性、可用性。近年来,视频会议因能大幅提高沟通效率,持续降低沟通成本,带来内部管理水平升级,而获得众多用户欢迎,已广泛应用在交通、运输、金融、运营商、教育、企业等各个领域。毫无疑问,视频会议运用云计算以后,在方便性、快捷性、易用性上具有更强的吸引力,必将激发视频会议应用新高潮的到来。
86.应当理解,具有媒体数据编码功能的计算机设备(例如,具备视频编码功能的终端设备100a)可以通过媒体数据编码器(如,视频编码器)对媒体数据进行编码处理,以得到该媒体数据对应的数据码流(如,得到视频数据对应的视频码流),进而可以提升媒体数据的传输效率。其中,媒体数据编码器为视频编码器时,该视频编码器可以为av1视频编码器,h.266视频编码器,avs3视频编码器等,在此不再一一进行举例。其中,该av1视频编码器的
视频压缩标准是开放媒体联盟(alliance for open media,简称aom)开发的第一代视频编码标准。
87.其中,针对媒体数据,在对其进行传输时,本技术实施例可以默认开启冗余传输策略,可以基于冗余传输策略对媒体数据进行传输。其中,冗余传输策略可以是指前向纠错技术(forward error correction,fec),发送端(如业务服务器)可以根据配置的冗余度将原始数据包通过异或(xor)生成对应数量的冗余包(可称之为冗余数据包),然后可以连同原始数据包与冗余数据包一起发送到接收端(如将要播放媒体数据的终端设备等),接收端在接收到相关数据包后,即使存在丢失的情况,但在丢失的数据包小于或等于冗余数据包的数量的情况下,仍然可以根据接收到的数据包通过异或(xor)的方式恢复丢失的数据包,从而可以得到所有的原始数据包。而在本技术实施例中,可以在媒体数据编码器对媒体数据的某个数据帧(可称之为目标数据帧)进行编码处理,得到该目标数据帧对应的编码数据包(可称之为原始数据包,可理解为该目标数据帧对应的数据码流),在得到目标数据帧对应的编码数据包(即原始数据包)后,基于冗余传输策略对这些原始数据包进行冗余编码处理,得到冗余数据包。随后,即可将该原始数据包与冗余数据包一起发送至接收端,而接收端可以向发送端返回一个反馈信息,在该反馈信息中包括针对该原始数据包以及冗余数据包的实时丢包率的情况下,本技术实施例可以在传输剩余数据帧(即该媒体数据中,除目标数据帧以外的还未传输的数据帧)时,基于该实时丢包率确定冗余传输策略的冗余编码功能的功能状态(即分析是否要继续采用冗余传输策略来传输剩余数据帧)。其中,基于该实时丢包率确定冗余传输策略的冗余编码功能的功能状态的具体实现方式,可以参见后续图4所对应实施例中的描述。
88.可以理解的是,本技术实施例所提供的动态控制数据帧的冗余传输策略的方法,可以应用于各种场景中,例如,可以应用于低时延直播场景中。为便于理解,以下将对低时延直播场景的架构进行阐述,请一并参见图2,图2是本技术实施例提供的一种低时延直播的系统架构图。如图2所示,该场景的系统架构可以包括终端设备100a(对应于发送端)、业务服务器以及终端设备100b(对应于接收端)。
89.可以理解的是,在低时延直播场景中,主播上行通过直播终端(如终端设备100a)对视频流数据进行采集,然后直播终端可以通过视频编码设备对采集到的视频进行量化、编码以及封装,得到视频码流。随后,终端设备100a可以将该视频码流发送至业务服务器中的上行接入模块。其中,终端设备100a可以配置有音频设备和视频设备,终端设备100a可以是指配置有摄像装置和拾音设备的电脑或智能终端设备。其中,终端设备100a可以采用实时消息传输协议(real time messaging protocol,rtmp)将处理后的视频流数据上传到该上行接入模块,也可以采用其他方式上传,例如,可以采用webrtc方式、gb.28181方式以及私有sdk协议推流方式等等方式将处理后的视频数据上传到直播上行接入模块。随后,直播上行接入模块可以将该视频码流发送到业务服务器中的媒体数据处理模块,媒体数据处理模块可以根据下行观看的音视频格式或码率等要求,对原始数据包进行解码以及再编码(转码),得到转码后的视频流(可称之为原始数据包);随后,转码后的数据可以在下行分发模块中,基于如用户数据报协议(user datagram protocol,udp)传输协议的传输协议,将转码视频流分发到各个内容分发网络(content delivery network,cdn)。对于终端设备100b而言,可以根据用户需求到就近的内容分发网络cdn下载并播放相应格式或码率的直
播视频流数据,以使对应用户观看直播视频。
90.可以理解的是,本技术中的业务服务器(如媒体处理模块)可以将接收到的视频码流进行解码以及再编码,得到编码后的数据包(可称之为原始数据包),而该业务服务器可以对该原始数据包进行冗余编码处理,得到冗余数据包,再将这些冗余数据包与原始数据包一起发送到终端设备100b。应当理解,本技术可以在发送端(如业务服务器)与接收端(如终端设备)之间传输视频数据时,通过动态控制视频帧的冗余传输方式,从而降低丢包率以及传输时延。可选的,终端设备100a也可以作为发送端,业务服务器可以作为接收端,终端设备对采集到的视频数据进行编码所得到的视频码流,也可称之为原始数据包,终端设备100a也可以对这些原始数据包进行冗余处理,得到冗余数据包,再将这些冗余数据包与原始数据包一起发送到业务服务器。
91.其中,可以理解的是,本技术实施例提供的方法可以由计算机设备执行,计算机设备包括但不限于终端设备或业务服务器。其中,业务服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。
92.可选的,可以理解的是,上述计算机设备(如上述业务服务器1000、终端设备100a、终端设备100b等等)可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成的点对点(p2p,peer to peer)网络,p2p协议是一个运行在传输控制协议(tcp,transmission control protocol)协议之上的应用层协议。在分布式系统中,任意形式的计算机设备,比如业务服务器、终端设备等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。为便于理解,以下将对区块链的概念进行说明:区块链是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。当计算机设备为区块链节点时,由于区块链的不可被篡改特性与防伪造特性,可以使得本技术中的数据(如媒体数据、原始数据包、冗余数据包等等)具备真实性与安全性,从而可以使得基于这些数据进行相关数据处理后,得到的结果更为可靠。
93.需要说明的是,在本技术的具体实施方式中,涉及到用户信息、用户数据(如包含用户的视频数据)等相关的数据,需要经过用户授权许可才能进行获取。也就是说,当本技术以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
94.本技术实施例可应用于各种场景,包括但不限于云技术、人工智能、智慧交通、辅助驾驶等。为便于理解,请参见图3,图3是本技术实施例提供的一种进行数据编码的场景示意图。其中,终端设备2a可以为用于发送视频数据(例如,图3所示的视频数据1)的发送终端,该终端设备2a对应的用户可以为用户a。终端设备2b可以为用于接收视频数据(如,图3所示的视频数据1)的接收终端,该终端设备2b对应的用户可以为用户b。其中,图3所示的业务服务器200可以为与终端设备2a具有网络连接关系的服务器,该业务服务器200可以为上述图1所示的业务服务器1000。
95.应当理解,在视频传输场景中,终端设备2a可以获取由图像采集器(例如,摄像头)所采集到的与用户a相关联的视频数据1。进一步地,该终端设备2a可以通过视频编码器(例如,av1视频编码器)对该视频数据1进行编码处理,以生成与该视频数据1相关联的视频码流1。此时,终端设备2a可以将该视频码流1发送至业务服务器200。该业务服务器200在接收到该视频码流1时,可以对该视频码流进行解码处理,得到具备像素图像格式(也可称为yuv格式)的视频数据(可称为yuv视频数据,也可称为解码视频数据,或称为待编码视频数据),然后业务服务器200可以对该待编码视频数据进行编码处理(例如,通过视频编码器对该待编码视频数据进行编码处理),可得到与该视频数据1相关联的视频码流2。
96.其中,可以理解的是,视频码流可以理解为由各个视频帧的封装数据包所组成,例如,视频数据包含c(c为正整数)个视频帧,在传输时,每个视频帧对应有不同的按照视频传输协议进行编码封装后所得到的数据包,则该视频数据对应的视频码流可以由c个视频帧分别对应的封装数据包所组成(按照视频帧的时间先后顺序按序组成视频码流)。本技术实施例中,业务服务器对视频数据1进行编码处理后,得到的视频码流2所包括的数据包,可称之为原始数据包。业务服务器在将该视频码流2传输至终端设备2b时,可以按照视频帧的时间先后顺序,按序将每个视频帧所对应的原始数据包,发送至终端设备2b。
97.其中,可以理解的是,本技术实施例中,为了减少数据重传率,减少数据传输时延,业务服务器可以在传输过程中采用冗余传输策略,再基于接收端(终端设备2b)所返回的反馈信息,来动态控制冗余传输策略(如继续采用冗余传输策略进行传输,或在后续视频帧的传输过程中关闭冗余传输策略)。例如,以业务服务器传输第一个视频帧(视频帧1)为例,假设该视频帧1对应的原始数据包为原始数据包1,那么业务服务器可以基于冗余传输策略,通过冗余传输策略的冗余编码功能将该原始数据包1进行冗余编码处理,得到该原始数据包1对应的冗余数据包(可称之为冗余数据包1)。进一步地,业务服务器可以将该原始数据包1余该冗余数据包1一起发送给终端设备2b,终端设备2b可以返回给业务服务器一个反馈信息。
98.可以理解的是,通过冗余传输策略,即使接收端(如终端设备2b)所接收到的数据包存在丢包情况(如原始数据包1和冗余数据包1中存在部分数据包丢失的情况),在丢包的总数量小于或等于冗余数据包1的数据包的数量的情况下,接收端仍然可以通过一定方式(如,异或方式),恢复出所丢失的数据包(即接收端仍然可以恢复出所有的原始数据包)。而在丢包的总数量大于冗余数据包1的数据包的数量的情况下,接收端则无法恢复出所丢失的数据包。那么在无法恢复数据包时,接收端可以向发送端(如业务服务器)返回一个重传请求,发送端可以基于该重传请求向接收端重新发送所丢失的数据包。本技术中,在接收端可以恢复丢失的数据包的情况下,接收端可以统计出丢包率,再将该丢包率返回至发送端,发送端可以基于该丢包率来动态控制冗余传输策略(例如,继续运行冗余传输策略或关闭冗余传输策略)。
99.例如,如图3所示,终端设备2b可以基于所接收到的数据包,恢复出所有的原始数据包1,那么终端设备2b可以统计得到一个丢包率,并基于该丢包率生成一个反馈信息返回至业务服务器200。业务服务器200可以根据该丢包率,确定出后续的视频帧(如视频帧2)的冗余传输策略的冗余编码功能的功能状态(可包括运行状态与关闭状态),也就是说,业务服务器200可以根据该丢包率,确定出在传输后续的视频帧(如视频帧2)时,是否要继续采
用冗余传输方式来进行传输。其中,对于根据该丢包率,确定出后续的视频帧(如视频帧2)的冗余传输策略的冗余编码功能的功能状态的具体实现方式,可以参见后续图4所对应实施例中的描述。如图3所示,假设业务服务器200根据该丢包率,确定在传输视频帧2时,要继续采用冗余传输方式来进行传输,则业务服务器200可以基于冗余传输策略,通过冗余编码功能将视频帧2的原始数据包2进行冗余编码处理,得到该视频帧2对应的冗余数据包2,再讲该原始数据包2与冗余数据包2一起传输至终端设备2b,同视频帧1一样,终端设备2b可以返回一个反馈信息,在该反馈信息中包含针对原始数据包2与冗余数据包2的丢包率(实时丢包率)时,业务服务器200又可以基于该实时丢包率,判断在传输后续视频帧(如视频帧3)的数据包时,是否要继续采用冗余传输策略进行传输。
100.应当理解,在基于冗余传输方式进行传输数据包时,冗余包会逐渐增多,而本技术可以通过实时丢包率,来分析传输链路的带宽情况(如实时丢包率过大,则表征传输链路的数据包超过了链路带宽容量),进而可以动态控制冗余传输策略,通过对数据帧进行冗余传输策略的控制,可以在冗余数据包过度的情况下(数据包超过了传输链路的带宽容量的情况下),及时关闭冗余传输策略,减小丢包率;也可以在冗余数据包适量的情况下,继续维持冗余传输策略,从而可以基于冗余传输策略来减少数据包的重传率,进而减小由于重传带来的端到端的延时。
101.进一步地,请参见图4,图4是本技术实施例提供的一种数据处理方法的流程示意图。其中,该方法可由终端设备(如上述图1所对应实施例中终端设备集群中的任一终端设备,如终端设备100a)所执行;该方法也可由业务服务器(如上述图1所对应实施例中的业务服务器1000)所执行;该方法还可由终端设备与业务服务器共同执行。以该方法由业务服务器所执行为例,如图4所示,该方法流程可以至少包括以下步骤s101-步骤s104:
102.步骤s101,获取目标数据帧对应的目标原始数据包;目标原始数据包是指对目标数据帧进行数据编码后所得到的数据包。
103.本技术中,(如视频编码功能)的计算机设备(例如,终端设备)可以在数据传输场景中,获取由图像采集器(例如,终端设备的摄像头)所采集到的媒体数据(如视频数据)。进一步地,该终端设备可以对该媒体数据进行编码处理,由此可以得到媒体数据对应的数据码流(如视频码流),而终端设备可以将该数据码流发送至业务服务器,业务服务器可以将该数据码流进行解码处理,得到具有yuv格式的媒体数据,该媒体数据可称之为待编码媒体数据。
104.进一步地,业务服务器可以对该待编码媒体数据进行再次编码。其中,在对待编码媒体数据进行再次编码时,可以以帧组为单位进行编码(本技术可以将一个帧组称为单位数据帧组,如可以将视频数据的一个帧组称为单位视频帧组)。其中,以媒体数据为视频数据为例,帧组可以为视频数据中的一组连续的视频帧(group of pictures,简称gop),一个帧组中可以包括多个视频帧。应当理解,一帧图像可以根据编码参数设置和码率控制策略决定该帧的帧类型,这里的帧类型可以包括第一类型,第二类型以及第三类型。其中,本技术实施例可以将帧内编码帧(intra picture,简称i帧)这种帧类型称之为第一类型,将双向预测编码帧(bi-directional interpolated prediction frame,简称b帧,b帧是双向差别帧,也就是b帧记录的是本帧与前后帧的差别,b帧可以作为其它b帧的参考帧,也可以不作为其它b帧参考帧)这种帧类型称之为第二类型,将前向预测编码帧(predictive-frame,
简称p帧,p帧表示的是这一帧跟之前的一个关键帧(或p帧)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面)这种帧类型称之为第三类型。而一个gop可以理解为两个i帧之间的间隔,例如,视频帧包括20帧,其中,第1帧为i帧,第2-8帧为b帧,第9帧为p帧,第10帧为i帧,第11帧-第19帧为b帧,第20帧为p帧,则可以以第1帧为起始帧,第9帧为结束帧,组成一个gop(单位视频帧组);也可以以第10帧为起始帧,第20帧为结束帧,组成一个gop(单位视频帧组)。
105.需要说明的是,在固定gop及gop中的帧序列时,每个gop的帧序列是固定的,比如固定gop是120帧,则每隔120帧就可以生成一个i帧,gop帧序列固定如:i b b p b b p
…
b b i;在固定gop的大小但不固定帧序列时,每个gop的帧序列是不固定的,比如固定gop是120帧,即每隔120帧就生成一个i帧,gop帧序列可以根据画面复杂度和相关p、b帧生成权重决定某个帧是p帧还是b帧。在gop大小及帧序列均不固定时,可以根据画面纹理、运动复杂度以及i、p、b帧生成策略和权重配置自动生成。而对于上述对于gop的划分过程(例如,以第1帧为起始帧,第9帧为结束帧,组成一个gop),只是举例说明如何划分gop,其并不具备实际参考意义。
106.可以理解的是,本技术实施例可以以gop为粒度,为一个gop里包括的各个视频帧进行编码处理。在编码时,可以按照每个gop的时间先后顺序,按序依次对各个gop进行编码,同时,在对某个gop中的视频帧进行编码时,也可以按照视频帧的排列顺序,依次对各个视频帧进行编码。例如,一个gop为{i,p1,p2,p3,b1,b2},则可以首先对i帧进行编码,再对p1帧进行编码,再对p2帧进行编码,
…
,最后对b2帧进行编码。
107.通过上述可知,业务服务器在对某个gop中的某个视频帧进行编码,以得到该视频帧对应的数据包进行传输时,可以将该视频帧称之为目标视频帧,对该目标视频帧进行编码处理所得到的数据包,称之为目标原始数据包。
108.步骤s102,基于冗余传输策略将目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包,将目标原始数据包与冗余数据包发送至接收端。
109.本技术中,冗余传输策略可以是指采用前向纠错技术(fec)传输原始数据包,发送端可以根据配置的冗余度将原始数据包通过异或(xor)生成对应数量的冗余包(可称之为冗余数据包或fec包),再将原始数据包与冗余数据包一起发送给接收端(如终端设备),而对于接收端一侧,若这些原始数据包与冗余数据包中存在部分数据包丢失,也就是说接收端所接收到的并非所有的原始数据包与冗余数据包,在丢失的数据包小于或等于冗余数据包的数量的情况下,接收端仍然可以根据所接收到的部分数据包,通过异或(xor)的方式恢复出丢失的数据包。而在本技术中,对于第一个gop内的第一个视频帧,可以默认开启冗余传输策略,可以基于冗余传输策略对第一个视频帧进行冗余编码传输。而接收端在接收到该第一个视频帧对应的原始数据包以及冗余数据包后,可以向发送端返回一个反馈信息,发送端可基于该反馈信息,来判断在传输后续的视频帧(如第一个视频帧的下一个视频帧)的原始数据包时,是否要关闭冗余传输方式(即不用再进行冗余编码处理,仅向接收端发送原始数据包)。若对于下一个视频帧,仍然要采用冗余传输策略进行传输,那么在冗余传输后,接收端又可以返回一个反馈信息,同理,发送端也可以基于该反馈信息来决策在传输后续的视频帧(如该视频帧的下一个视频帧)时,是否要继续采用冗余传输策略进行传输,若要继续采用,则在传输下一个视频帧时,可以继续采用冗余传输策略进行传输;而若不再采
用冗余传输策略,则对于该视频帧的后续所有视频帧(包括当前gop内的后续未传输的视频帧,以及后续所有的gop内的视频帧),均可以不再采用冗余传输策略进行传输。
110.对于目标数据帧,以需要采用冗余传输策略对其进行传输为例,可以根据目标数据帧的帧类型,对目标数据帧的目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包。可以理解的是,不同的帧类型可以对应不同的冗余编码方式,则本技术可以获取到目标数据帧的帧类型,再根据目标数据帧的帧类型,对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包。其中,这里的帧类型可以包括上述第一类型(i帧,即帧内编码帧,也可称之为帧内编码类型),第二类型(b帧,即双向预测编码帧,也可称之为双向编码类型)以及第三类型(p帧,即前向预测编码帧,也可称之为前向编码类型)。需要说明的是,在编码方案中,若b帧为不对外参考编码帧,则在本技术实施例中可以不对b帧进行冗余编码。以本方案中的编码方案中,b帧均为不对外参考编码帧为例,在对一个gop进行编码传输时,对于b帧可以不采用冗余编码的方式来传输,只需要控制一个gop中的i帧与p帧的冗余传输策略即可。其中,在目标数据帧的帧类型为帧内编码类型时,对于根据目标数据帧的帧类型,对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包的具体实现方式,可以参见后续图7所对应实施例中的描述。在目标数据帧的帧类型为前向编码类型时,对于根据目标数据帧的帧类型,对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包的具体实现方式,可以参见后续图8所对应实施例中的描述。
111.步骤s103,接收接收端返回的反馈信息。
112.本技术中,业务服务器可将编码得到的目标原始数据包以及冗余数据包,一起发送到接收端。若在传输时,存在部分数据包(可能是部分目标原始数据包、也可能是部分冗余数据包)丢失,在这些丢失的数据包的数量,不大于冗余数据包的数量的情况下,接收端可以通过一定方式(如异或方式)将丢失的数据包进行恢复,从而可以得到所有的目标原始数据包。在接收端可以恢复出原始数据包时,接收端可以统计出实时丢包率(丢失的数据包的个数/总的传输的数据包的个数,其中,总的传输的数据包的个数即为目标原始数据包的数量加上冗余数据包的数量),接收端可以向发送端返回一个包含实时丢包率的反馈信息。而在这些丢失的数据包的数量,大于了冗余数据包的数量的情况下,接收端可能无法恢复出所有的目标原始数据包,那么在无法恢复的情况下,接收端可以生成针对丢失的数据包的重传请求,并向发送端返回一个包含重传请求的反馈信息。发送端(业务服务器)可以接收到接收端所返回的针对目标原始数据包以及冗余数据包的反馈信息。
113.步骤s104,若反馈信息包括针对目标原始数据包与冗余数据包的实时丢包率,则在传输剩余数据帧时,基于实时丢包率确定冗余传输策略所指示的冗余编码功能的功能状态;功能状态包括运行状态以及关闭状态;剩余数据帧是指目标数据帧所属的媒体数据中,除目标数据帧以外且未传输的数据帧。
114.本技术中,在反馈信息包括针对目标原始数据包与冗余数据包的实时丢包率时,业务服务器可以根据实时丢包率确定冗余传输策略所指示的冗余编码功能的功能状态。其中,功能状态可以包括运行状态以及关闭状态,当冗余编码功能的功能状态为运行状态时,可以表征在传输剩余数据帧时,可以继续采用冗余传输策略进行传输;而当冗余编码功能的功能状态为关闭状态时,可以表征在传输剩余数据帧时,可以不再采用冗余传输策略进行传输。其中,剩余数据帧可以是指媒体数据中,除目标数据帧以外的且还未传输的数据
帧,如,剩余数据帧可以包括目标数据帧所在的gop组内的除该目标数据帧以外的还未传输的数据帧,以及剩余的还未传输的所有gop组内所包含的数据帧。也就是说,通过目标数据帧的实时丢包率,可以决定在后续传输数据帧时,是否要继续采用冗余传输策略。
115.其中,可以理解的是,对于基于实时丢包率确定冗余传输策略所指示的冗余编码功能的功能状态的具体实现方式可为:可以获取媒体数据所属的业务场景类型,可以根据业务场景类型确定媒体数据对应的丢包率阈值;若实时丢包率大于预设下限值,且实时丢包大于丢包率阈值,则可以获取信息接收时刻下的目标网络传输时延,根据目标网络传输时延,可以确定冗余传输策略所指示的冗余编码功能的功能状态;其中,信息接收时刻可以是指接收到反馈信息的时刻;而若实时丢包率大于丢包率阈值,则可以将冗余传输策略所指示的冗余编码功能的功能状态,确定为关闭状态。
116.其中,对于获取信息接收时刻下的目标网络传输时延的具体实现方式可为:可以获取针对网络传输时延的历史检测时间段集合;其中,一个历史检测时间段集合中的每个历史检测时间段用于检测网络传输时延;一个历史检测时间段对应一个所检测到的历史网络传输时延;在历史检测时间段集合中,可以获取信息接收时刻所属的目标历史检测时间段;随后,可以将目标历史检测时间段对应的历史网络传输时延,确定为信息接收时刻下的目标网络传输时延。
117.可以理解的是,在传输媒体数据时,可以为每个媒体数据配置一个最大允许冗余丢包的丢包率(可称之为丢包率阈值或最大允许丢包率),该丢包率阈值可以由媒体数据所述的业务场景类型所确定,即不同的业务场景类型可以对应不同的丢包率阈值。其中,这里的业务场景类型可以根据目标应用的应用类型所确定,例如,终端设备中安装的目标应用为离线短视频应用,终端设备是在运行该离线短视频应用时,通过摄像头获取到媒体数据(如视频数据),那么该媒体数据所属的业务场景类型可以为离线短视频类型。例如,终端设备中安装的目标应用为直播应用,终端设备是在运行直播应用时,通过摄像头获取到直播视频数据,那么该直播视频数据可作为媒体数据,该媒体数据所属的业务场景类型可以为直播类型。也就是说,若媒体数据是通过目标应用所获取得到的,则该媒体数据所属的目标业务场景类型可以为该目标应用的应用类型。本技术可以预先为不同的业务场景类型动态配置不同的丢包率阈值(如,由人为配置丢包率阈值,如丢包率阈值为20%、25%......这里将不进行一一举例说明)。
118.此外,应当理解,本技术还可以为媒体数据在传输时的丢包率预设一个下限值(可称之为预设下限值,可由人为配置,该预设下限值应小于上述丢包率阈值,如预设下限值为0、1%、1.5%......这里将不进行一一举例说明)。当实时丢包率处于预设下限值与丢包率阈值之间时,此时可以获取到传输该目标视频帧的数据包(即目标原始数据包以及冗余数据包)所对应的来回往返时延(round-trip time,rtt),该来回往返时延即可作为该目标数据帧对应的目标网络传输时延,根据该目标网络传输时延,即可确定该冗余编码功能的功能状态。
119.其中,可以理解的是,在本技术实施例中,发送端可以定期向接收端发送一个网络时延检测信号,以检测发送端与接收端之间的网络传输时延。例如,发送端可以每隔50ms就向接收端发送一个网络时延检测信号,接收端在接收到该网络时延检测信号时,可以向发送端返回一个时延反馈信号,发送端可以获取到网络时延检测信号的发送时刻与时延反馈
信号的接收时刻,该网络时延检测信号的发送时刻与时延反馈信号的接收时刻之间的时长,即可作为发送端与接收端之间的一个网络传输时延。本技术中的前后两次检测网络传输时延的时刻之间的时间段,即可称之为检测时间段。例如,发送端每隔50ms就检测一次网络传输时延,则发送端可以在第0ms向接收端发送一个网络时延检测信号、在第50ms向接收端发送一个网络时延检测信号、在第100ms向接收端发送一个网络时延检测信号
……
(这里将不进行一一举例),那么第0ms与第50ms可以组成一个检测时间段(包含0ms但未包含第50ms的时间段),即该时间段为[0ms,50ms);同理,第50ms与第100ms可以组成一个检测时间段(包含50ms但未包含第100ms的时间段),即该时间段为[50ms,100ms)
……
对于已经检测到网络传输时延的检测时间段,可称之为历史检测时间段,对于该历史检测时间段所对应的检测到的网络传输时延,可称之为历史网络传输时延。例如,发送端会每个50ms就检测一次网络传输时延,在第0ms通过发送网络时延检测信号检测到发送端与接收端之间的网络传输时延为rtt1,则该检测时间段[0ms,50ms)即可作为一个历史检测时间段,该rtt1即可作为该历史检测时间段所检测到的历史网络传输时延;假如在第50ms通过发送网络时延检测信号检测到发送端与接收端之间的网络传输时延为rtt2,则该检测时间段[50ms,100ms)即可作为一个历史检测时间段,该rtt2即可作为该历史检测时间段所检测到的历史网络传输时延。通过上述可知,通过定期检测发送端与接收端之间的网络传输时延,即可得到连续的历史检测时间段,这些连续的历史检测时间段可以组成历史检测时间段集合,且每个历史检测时间段可以对应有一个检测到的历史网络传输时延。
[0120]
进一步地,在发送端接收到接收端所返回的针对目标原始数据包以及冗余数据包的反馈信息时,发送端可以获取接收到该反馈信息的时刻(即信息接收时刻),并拉取到该信息接收时刻下对应的网络传输时延。其中,拉取时延的过程主要为:例如,发送端每隔10分钟就检测一次网络传输时延,第一次检测网络传输时延时所处时间为2022年3月8号11:00(可记录为第0min),第二次检测网络传输时延时所处时间为2022年3月8号11:10(可记录为第10min),依次类推可得到不同的检测网络传输时延的时刻,可以将前后两次检测时刻组成一个历史检测时间段,其中,一个历史检测时间段可以包含前一个检测时刻且未包含后一个检测时刻,例如,第0min与第10min可组成一个历史检测时间段[0min,10min)。则当获取到接收反馈信息的信息接收时刻时,可以确定信息接收时刻所属的检测时间段是哪一个历史检测时间段,可以将该信息接收时刻所属的历史检测时间段作为目标历史检测时间段,该目标历史检测时间段所对应的历史网络传输时延则为该信息接收时刻下对应的目标网络传输时延。例如,信息接收时刻为2022年3月8号11:25,此时历史检测时间段集合包含历史检测时间段[0min,10min)(该历史检测时间段[0min,10min)对应的时间段为2022年3月8号11:00至2022年3月8号11:10)、历史检测时间段[10min,20min)(该历史检测时间段[10min,20min)对应的时间段为2022年3月8号11:10至2022年3月8号11:20)以及历史检测时间段[20min,30min)(该历史检测时间段[20min,30min)对应的时间段为2022年3月8号11:20至2022年3月8号11:30),则该信息接收时刻2022年3月8号11:25所属的历史检测时间段为历史检测时间段[20min,30min),该历史检测时间段对应的历史网络传输时延为rtt3,则该信息接收时刻对应的目标网络传输时延即为rtt3。
[0121]
进一步地,在获取到目标网络传输时延后,即可根据目标网络传输时延,来动态控制后续视频帧的数据包的传输策略(采用冗余传输策略进行传输;或关闭冗余传输方式,仅
传输原始数据包即可)。对于根据目标网络传输时延,来动态控制冗余传输策略的具体实现方式,可以参见后续图5所对应实施例中的描述。
[0122]
而当实时丢包率大于丢包率阈值时,此时可表征该数据包的传输链路并不是一个稳定丢包链路,数据包已超过了链路带宽容量,若持续采用冗余传输策略进行传输,则丢包情况会越来越严重,接收端处极有可能无法恢复出数据包,从而造成重传概率上升,影响传输效率,增大了端到端的传输时延。那么当实时丢包率大于丢包率阈值时,可以关闭冗余传输策略,即确定冗余编码功能的功能状态为关闭状态,在后续传输剩余视频帧时,不再采用冗余传输策略进行传输。
[0123]
也就是说,若在传输剩余数据帧时,该冗余传输策略所指示的冗余编码功能的功能状态为关闭状态,则在传输剩余数据帧时,可以获取剩余数据帧对应的待传输原始数据包;其中,待传输原始数据包是指对剩余数据帧进行数据编码后所得到的数据包;随后,可以将待传输原始数据包直接发送至接收端(不再进行冗余编码,而是直接将对应的原始数据包发送到接收端)。由此可以减少冗余数据包,在满足链路带宽容量的情况下进行传输。
[0124]
通过上述可知,在反馈信息中包含实时丢包率的情况下,发送端可以基于实时丢包率来动态控制冗余传输策略,而若接收端处无法恢复所有的原始数据包时,可以生成一个针对丢失的数据包的重传请求,并将包含该重传请求的反馈信息返回至发送端。若反馈信息中包括针对丢失数据包的重传请求时,发送端可以基于重传请求从缓存库中获取丢失数据包,并将丢失数据包重新传输至接收端;丢失数据包是指目标原始数据包中,接收端未接收到的原始数据包。
[0125]
可选的,可以理解的是,上述是以业务服务器作为发送端、终端设备作为接收端来描述,实际应用中,采集到媒体数据的终端设备也可以作为发送端、业务服务器也可以作为接收端,采集到媒体数据的终端设备在采集到媒体数据后,在向业务服务器进行传输时,也可以采用冗余传输方式来进行传输,并采用本技术的方法来动态控制冗余传输策略。
[0126]
在本技术实施例中,本技术可以通过实时丢包率以及网络传输时延,来分析传输链路的带宽情况(如实时丢包率过大,则表征传输链路的数据包超过了链路带宽容量),进而可以动态控制冗余传输策略,通过对数据帧进行冗余传输策略的控制,可以在冗余数据包过度的情况下(数据包超过了传输链路的带宽容量的情况下),及时关闭冗余传输策略,减小丢包率;也可以在冗余数据包适量的情况下,继续维持冗余传输策略,从而可以基于冗余传输策略来减少数据包的重传率,进而减小由于重传带来的端到端的延时。综上,本技术通过动态控制数据帧的冗余传输策略,可以在数据帧的传输过程中,减少数据丢包率,并减少数据传输时延。
[0127]
通过上述可知,在实时丢包率处于预设下限值与丢包率阈值之中时,可以获取到信息接收时刻下的目标网络传输时延,可以根据该目标网络传输时延,确定冗余传输策略所指示的冗余编码功能的功能状态(即动态控制采用冗余传输策略或不采用冗余传输策略)。为便于理解,以下将对根据该目标网络传输时延,确定冗余传输策略所指示的冗余编码功能的功能状态的具体实现方式进行描述。请一并参见图5,图5是本技术实施例提供的一种确定冗余编码功能的功能状态的流程示意图,该流程可以对应于上述图4中,根据该目标网络传输时延,确定冗余传输策略所指示的冗余编码功能的功能状态的流程。如图5所示,该流程可以至少包括以下步骤s201-步骤s203:
[0128]
步骤s201,获取历史网络传输时延集合;历史网络传输时延集合包括n个历史网络传输时延,一个历史网络传输时延是指在一个历史检测时间段内,所检测到的网络传输时延;n个正整数;每个历史检测时间段均早于信息接收时刻。
[0129]
具体的,通过上述图4所述可知,发送端可以定期检测发送端与接收端之间的网络传输时延。前后两次检测时延的时刻可以组成一个检测时间段,对于已经检测到网络传输时延的检测时间段,可称之为历史检测时间段,对于该历史检测时间段所对应的检测到的网络传输时延,可称之为历史网络传输时延。则这里的获取历史网络传输时延集合,即可以获取到时间早于目标历史检测时间段(信息接收时刻所属的历史检测时间段)的历史检测时间段,所分别对应的历史网络传输时延所组成的集合。例如,上述图4所举例中,历史检测时间段集合包括[0min,10min)、[10min,20min)以及[20min,30min),该[20min,30min)为目标历史检测时间段,则该[0min,10min)对应的历史网络传输时延(假设为rtt1)以及[10min,20min)对应的历史网络传输时延(假设为rtt2),即可组成历史网络传输时延集合。
[0130]
步骤s202,按照n个历史检测时间段与信息接收时刻的时间顺序,构建针对历史网络传输时延集合与目标网络传输时延的时延变化曲线。
[0131]
具体的,可以将历史检测时间段作为一个时间坐标轴,将网络传输时延作为一个时延坐标轴,根据时间坐标轴与时延坐标轴可以构建一个坐标系,根据n个历史检测时间段与历史网络传输时延,即可在坐标系中绘制得到一条时延变化曲线。
[0132]
为便于理解,请一并参见图6,图6是本技术实施例提供的一种绘制时延变化曲线的示意图。如图6所示,x轴可用于表征时间坐标轴,y轴可用于表征时延坐标轴,第1个历史检测时间段为[0ms,50ms),第2个历史检测时间段为[50ms,100ms),第3个历史检测时间段为[100ms,150ms),第4个历史检测时间段为[150ms,200ms)。第1个历史检测时间段对应的历史网络传输时延为50,第2个历史检测时间段对应的历史网络传输时延为65,第3个历史检测时间段对应的历史网络传输时延为67,第4个历史检测时间段对应的历史网络传输时延为60。假设信息接收时刻所处的目标历史检测时间段为第4个历史检测时间段,根据该历史检测时间段与其对应的历史网络传输时延,可以在坐标系中构建得到如图6所示的曲线,该曲线即可称之为时延变化曲线。
[0133]
步骤s203,根据时延变化曲线所指示的时延变化趋势,确定冗余传输策略所指示的冗余编码功能的功能状态。
[0134]
具体的,根据该时延变化曲线所指示的时延变化趋势,即可确定冗余传输策略所指示的冗余编码功能的功能状态。例如,若时延变化趋势为递增趋势,则可以将冗余传输策略所指示的冗余编码功能的功能状态,确定为关闭状态;而若时延变化趋势为平稳波动趋势,则可以将冗余传输策略所指示的冗余编码功能的功能状态,确定为运行状态。
[0135]
可以理解的是,当实时丢包率处于预设下限值与丢包率阈值之间时,若网络传输时延持续增长(时延变化趋势为递增趋势),则可以表征该传输链路不是一个稳定丢包链路,实际上数据包超过了带宽容量,则此时为了减少传输时延,可以关闭冗余传输方式,后续不再采用冗余传输策略进行传输,也就是将冗余编码功能的功能状态确定为关闭状态;而若网络传输时延并未随着冗余传输方式的持续运行而抖动,一直处于平稳波动状态(波动小于预设值,如波动小于10ms。即时延变化趋势为平稳波动趋势),则可以说明传输链路是一个较稳定的丢包链路,数据包并未超过链路带宽容量,可以持续运行冗余传输策略(也
就是将冗余编码功能的功能状态确定为运行状态),通过冗余传输策略以减少链路重传的情况,进而可以减少端到端的传输延时。
[0136]
本技术实施例中,可以通过实施丢包率以及网络传输时延,来动态且实时控制视频帧的传输方式(如采用冗余传输或不采用冗余传输),一方面可以在传输数据的场景中(如低延时直播传输数据的场景中),让带宽更平滑,从而使得网络拥塞控制更精准,网络链路拥塞时,可以及时关闭冗余传输,减少丢包率;另一方面也可以在未超过链路容量的情况下,通过采用冗余传输策略以减少nack(后向纠错,nack也是一种通知技术,在未收到消息时,通知发送方“我未收到消息”,即通知未达。nack是在接收端检测到数据丢包后,发送nack报文到发送端;发送端根据nack报文中的序列号,在发送缓冲区找到对应的数据包,重新发送到接收端)重传等待的情况,进而可以使得数据传输场景中,端到端的延时更低。
[0137]
通过上述图4所对应实施例可知,可以根据目标数据帧的帧类型,对目标原始数据包进行冗余编码,这里将以目标数据帧的帧类型为帧内编码类型为例,对根据目标数据帧的帧类型,对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包的具体实现方式进行阐述。为便于理解,请一并参见图7,图7是本技术实施例提供的一种对原始数据包进行冗余编码,得到冗余数据包的流程示意图。如图7所示,该流程可以至少包括以下步骤s301-步骤s304:
[0138]
步骤s301,基于冗余传输策略所指示的针对帧内编码类型的第一冗余编码规则,获取目标数据帧所属的单位数据帧组;单位数据帧组是由媒体数据中的m个连续的数据帧所组成的;m为正整数。
[0139]
具体的,本技术可以为不同的帧类型配置不同的冗余编码规则,其中,这里的冗余编码规则可以是指冗余度确定方式,也就是说,针对不同的帧类型,可以存在不同的冗余度确定方式。例如,可以为帧内编码类型(即i帧)配置第一冗余编码规则(第一冗余度确定方式),那么在目标数据帧的帧类型为帧内编码类型时,可以获取到该第一冗余编码规则。为便于理解,请参见公式(1),公式(1)可以为本技术为帧内编码类型所配置的冗余度确定方式(即第一冗余编码规则)。
[0140]
ki=min(5%+(total time)/(gop time)*5%,kmax_loss)
ꢀꢀ
公式(1)
[0141]
其中,如公式(1)所示的total time可以用于表征一次冗余传输策略开启到现在的时长,即冗余传输策略对应的策略维持时长;gop time可以用于表征对一个gop进行编码的大小时长,即目标数据帧组所在的单位数据帧组对应的帧组编码时长;kmax_loss可以用于表征该媒体数据所对应的丢包率阈值。通过该公式(1)所指示的冗余度确定方式,需要获取到目标数据帧所属的单位数据帧组(即目标数据帧所在的gop)。
[0142]
步骤s302,获取单位数据帧组对应的帧组编码时长,以及冗余传输策略对应的策略维持时长。
[0143]
具体的,通过上述公式(1)可知,若要确定目标数据帧对应的冗余度,则需要获取到帧组编码时长以及策略维持时长。本技术中,对于获取单位数据帧组对应的帧组编码时长,以及冗余传输策略对应的策略维持时长的具体实现方式可为:可以获取单位数据帧组包含的每个数据帧分别对应的数据编码时长,得到m个数据编码时长;可以将m个数据编码时长进行相加处理,得到帧组编码时长;可以获取当前时刻,以及冗余传输策略的策略开启时刻;可以将当前时刻与策略开启时刻之间的差值时长,确定为策略维持时长。也就是说,
帧组编码时长可以是指一个gop对应的编码时长,策略维持时长可以是指一次策略开启时刻到当前时刻的持续时长。
[0144]
步骤s303,获取媒体数据所属的业务场景类型,根据业务场景类型确定媒体数据对应的丢包率阈值。
[0145]
具体的,通过上述公式(1)可知,若要确定目标数据帧对应的冗余度,则需要获取到丢包率阈值。对于获取丢包率阈值的具体方式,可以参见上述图4所对应实施例中的描述,这里将不再进行赘述。
[0146]
步骤s304,根据帧组编码时长、策略维持时长以及丢包率阈值,对原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包。
[0147]
具体的,对于根据帧组编码时长、策略维持时长以及丢包率阈值,对原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包的具体实现方式可为:可以根据帧组编码时长、策略维持时长以及丢包率阈值,确定目标数据帧对应的第一冗余度;随后,可以获取目标原始数据包对应的原始包数量,根据第一冗余度以及原始包数量,可以确定目标数据帧对应的第一冗余包数量;根据第一冗余度以及第一冗余包数量,即可对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包;其中,冗余数据包对应的数据包数量为第一冗余包数量。
[0148]
为便于理解上述过程,请一并参见公式(2),公式(2)为冗余度的定义:
[0149]
冗余度=(fec包个数(q))/(q+rtp包个数(w))
ꢀꢀ
公式(2)
[0150]
其中,如公式(2)所示的fec包可以用于表征冗余数据包,rtp包可用于表征原始数据包。也就是说,冗余数据包的总数量,与冗余数据包以及原始数据包的总数量之间的比值,即为冗余度。
[0151]
那么可以理解的是,根据帧组编码时长、策略维持时长以及丢包率阈值以及上述公式(1),即可确定出目标数据帧对应的冗余度(可称之为第一冗余度),通过上述公式(1)可知,该第一冗余度最大可以为丢包率阈值。在确定出第一冗余度后,可以获取到目标原始数据包对应的包数量(可称之为原始包数量),通过上述公式(2)可知,基于目标原始数据包对应的原始包数量(即w)以及该第一冗余度,确定出目标数据帧对应的冗余数据包的数量(即q,可称之为第一冗余包数量)。而进一步地,根据该第一冗余度以及该第一冗余包数量,即可对目标原始数据包进行冗余编码处理,得到对应的冗余数据包。
[0152]
在本技术实施例中,对于不同的帧类型,可以采用不同的冗余编码策略,通过对i帧的fec冗余传输进行动态实时控制(及时关闭fec冗余传输策略,或继续采用fec冗余传输策略),可以很好地改善由于i帧的码率波动造成传输的网络带宽评估不准从而造成网络拥塞丢包的情况。
[0153]
通过上述图4所对应实施例可知,可以根据目标数据帧的帧类型,对目标原始数据包进行冗余编码,这里将以目标数据帧的帧类型为前向编码类型为例,对根据目标数据帧的帧类型,对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包的具体实现方式进行阐述。为便于理解,请一并参见图8,图8是本技术实施例提供的一种对原始数据包进行冗余编码,得到冗余数据包的流程示意图。如图8所示,该流程可以至少包括以下步骤s401-步骤s404:
[0154]
步骤s401,基于冗余传输策略所指示的针对第二帧类型的第二冗余编码规则,获
取目标数据帧所属的单位数据帧组;单位数据帧组是由媒体数据中的m个连续的数据帧所组成的;m为正整数。
[0155]
具体的,本技术可以为不同的帧类型配置不同的冗余编码规则,其中,这里的冗余编码规则可以是指冗余度确定方式,也就是说,针对不同的帧类型,可以存在不同的冗余度确定方式。例如,可以为前向编码类型(即p帧)配置第二冗余编码规则(第二冗余度确定方式),那么在目标数据帧的帧类型为前向编码类型时,可以获取到该第二冗余编码规则。为便于理解,请参见公式(3),公式(3)可以为本技术为前向编码类型所配置的冗余度确定方式(即第二冗余编码规则)。
[0156]
kp=min(p帧单帧rtp包数/i帧单帧rtp包数*ki,1/2)
ꢀꢀ
公式(3)
[0157]
其中,如公式(3)所示的p帧单帧rtp包数可以用于表征该目标数据帧对应的原始数据包的总数量;i帧单帧rtp包数可以用于表征该目标数据帧所在的gop中,i帧对应的原始数据包的总数量;ki可用于表征该目标数据帧所在的gop中,i帧对应的冗余度。通过该公式(1)所指示的冗余度确定方式,需要获取到目标数据帧所属的单位数据帧组(即目标数据帧所在的gop)。
[0158]
步骤s402,获取单位数据帧组中的帧类型为帧内编码类型,且传输状态为已传输状态的参考数据帧。
[0159]
具体的,应当理解,一个gop可以是指以一个i帧起始的数据帧序列,该gop可以包含i帧、p帧以及b帧(本编码方案中,b帧为不对外参考编码帧,可以不采用冗余传输策略),则对于一个gop,首先会对i帧进行编码传输,再对p帧进行编码传输。这里的参考数据帧则是指该gop内的i帧。
[0160]
步骤s403,获取参考数据帧对应的原始数据包,将参考数据帧对应的原始数据包确定为参考数据包。
[0161]
具体的,通过上述公式(3)可知,若要确定目标数据帧对应的冗余度,则需要获取到所在gop内的i帧对应的原始数据包的总数量,所以需要获取到参考数据帧对应的原始数据包,从而获取其对应的包的总数量。
[0162]
步骤s404,获取目标原始数据包对应的第一数据包数量,以及参考数据包对应的第二数据包数量,根据第一数据包数量以及第二数据包数量,对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包。
[0163]
具体的,对于根据第一数据包数量以及第二数据包数量,对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包的具体实现方式可为:可以获取参考数据帧对应的冗余度,随后,可以将参考数据帧对应的冗余度确定为参考冗余度;基于参考冗余度、第一数据包数量以及第二数据包数量,可以确定目标数据帧对应的第一候选冗余度;可以获取第二冗余编码规则所指示的针对第二帧类型的第二候选冗余度;可以将第一候选冗余度与第二候选冗余度之间的最小候选冗余度,确定为目标数据帧对应的第二冗余度;根据第一数据包数量以及第二冗余度,可以确定目标数据帧对应的第二冗余包数量;根据第二冗余度以及第二冗余包数量,可以对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包;冗余数据包对应的数据包数量为第二冗余包数量。
[0164]
可以理解的是,在目标数据帧的帧类型为前向编码类型且要采用冗余传输策略对其进行传输时,可以表明位于p帧之前的i帧也是采用冗余传输方式进行传输的,由于此时
该gop内的i帧已经通过冗余传输的方式,完成了传输,那么可以获取到该i帧在进行冗余传输时的冗余度ki(具体确定ki的方式可以参见上述图7所对应实施例中的描述),以及该i帧的原始数据包的总数量(即,i帧单帧rtp包数)。通过上述公式(3)可知,在获取到第一数据包数量以及第二数据包数量以及参考冗余度(ki)后,即可根据公式(3)中的公式“p帧单帧rtp包数/i帧单帧rtp包数*ki”,计算得到一个数值,该数值即可称之为第一候选冗余度;通过上述公式(3)可知,需要在该数值与1/2之间选择一个最小值,作为该目标数据帧对应的冗余度,则该参数1/2可称之为第二候选冗余度,该第一候选冗余度与第二候选冗余度之间的最小值(可称之为最小候选冗余度),即为目标数据帧对应的冗余度(可称之为第二冗余度)。
[0165]
在确定出第二冗余度后,可以获取到目标原始数据包对应的包数量(即第一数据包数量),通过上述公式(2)可知,基于目标原始数据包对应的原始包数量(即w)以及该第二冗余度,确定出目标数据帧对应的冗余数据包的数量(即q,可称之为第二冗余包数量)。而进一步地,根据该第二冗余度以及该第二冗余包数量,即可对目标原始数据包进行冗余编码处理,得到对应的冗余数据包。
[0166]
在本技术实施例中,由于一段gop由i、p、b帧组成,这样在一个gop内就会出现最开始的i帧码率很大,中间的p帧和b帧占用比较少,传输时占用带宽不平滑容易造成带宽评估不准和网络拥塞。而本技术对于不同的帧类型,可以采用不同的冗余编码策略,通过对i/p帧的fec冗余传输进行动态实时控制(及时关闭fec冗余传输策略,或继续采用fec冗余传输策略),一方面可以改善由于i帧的码率波动造成传输的网络带宽评估不准的网络拥塞丢包的情况;另一方面也能让数据传输场景(如低延时直播传输场景)中,数据带宽更平滑从而可以使得网络拥塞控制更精准,以减少nack重传的情况,进而减少引重传等待造成端到端延时更久的情况。
[0167]
可选的,可以理解的是,在一种可行的实施例中,由于一个gop内的传输速度较快,一般在i帧传输完成获取到对应的rtt后,若基于该rtt确定可以继续采用fec冗余传输策略,则对于该gop内的该i帧后的所有还未经传输的p帧,均可以直接采用fec冗余传输策略进行传输,也就是说,无需再对该gop内的每一个p帧均进行一次判断,以确定是否要采用fec冗余传输策略。当该gop内的数据帧传输完成后,对于下一个gop的第一个i帧,再来继续采用冗余传输方式对其进行传输,且同理,可以获取到其对应的实时丢包率以及网络传输时延,基于实时丢包率以及网络传输时延来决定该gop内的p帧,是否要继续采用fec进行传输。也就是说,本技术可以对某个gop内的第一个i帧,获取其传输后的实时丢包率以及网络传输时延,若基于实时丢包率以及网络传输时延,确定后续不再采用fec冗余传输策略进行传输,那么在传输gop内的p帧以及后续所有gop时,均可以不采用fec冗余传输的方式进行传输;而若基于实时丢包率以及网络传输时延,确定要继续采用fec冗余传输策略进行传输,那么对于该i帧所在的gop内的p帧,可以继续采用fec冗余传输,在下一个gop内的i帧时,也可以继续采用fec冗余传输,但是在下一个gop内的i帧传输完后,可以基于下一个i帧的实时丢包率以及网络传输时延,再一次进行判断,确定后续是否要继续采用fec进行传输。依次类推直至该媒体数据的最后一个gop传输完成。
[0168]
进一步地,请参见图9,图9是本技术实施例提供的一种数据处理装置的结构示意图。该数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如
该数据处理装置为一个应用软件;该数据处理装置可以用于执行图3所示的方法。如图9所示,该数据处理装置1可以包括:包获取模块11、冗余编码模块12、反馈接收模块13以及功能状态确定模块14。
[0169]
包获取模块11,用于目标数据帧对应的目标原始数据包;目标原始数据包是指对目标数据帧进行数据编码后所得到的数据包;
[0170]
冗余编码模块12,用于基于冗余传输策略将目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包,将目标原始数据包与冗余数据包发送至接收端;
[0171]
反馈接收模块13,用于接收接收端返回的反馈信息;
[0172]
功能状态确定模块14,用于若反馈信息包括针对目标原始数据包与冗余数据包的实时丢包率,则在传输剩余数据帧时,基于实时丢包率确定冗余传输策略所指示的冗余编码功能的功能状态;功能状态包括运行状态以及关闭状态;剩余数据帧是指目标数据帧所属的媒体数据中,除目标数据帧以外且未传输的数据帧。
[0173]
其中,包获取模块11、冗余编码模块12、反馈接收模块13以及功能状态确定模块14的具体实现方式,可以参见上述图4所对应实施例中步骤s101-步骤s104的描述,这里将不再进行赘述。
[0174]
在一个实施例中,功能状态确定模块14可以包括:丢包阈值确定单元141、目标时延获取单元142以及功能状态确定单元143。
[0175]
丢包阈值确定单元141,用于获取媒体数据所属的业务场景类型,根据业务场景类型确定媒体数据对应的丢包率阈值;
[0176]
目标时延获取单元142,用于若实时丢包率大于预设下限值,且实时丢包大于丢包率阈值,则获取信息接收时刻下的目标网络传输时延;信息接收时刻是指接收到反馈信息的时刻;
[0177]
功能状态确定单元143,用于根据目标网络传输时延,确定冗余传输策略所指示的冗余编码功能的功能状态;
[0178]
功能状态确定单元143,还用于若实时丢包率大于丢包率阈值,则将冗余传输策略所指示的冗余编码功能的功能状态,确定为关闭状态。
[0179]
其中,丢包阈值确定单元141、目标时延获取单元142以及功能状态确定单元143的具体实现方式,可以参见上述图4所对应实施例中步骤s104的描述,这里将不再进行赘述。
[0180]
在一个实施例中,目标时延获取单元142可以包括:集合获取子单元1421、目标时间段获取子单元1422以及目标时延获取子单元1423。
[0181]
集合获取子单元1421,用于获取针对网络传输时延的历史检测时间段集合;历史检测时间段集合中的每个历史检测时间段用于检测网络传输时延;一个历史检测时间段对应一个所检测到的历史网络传输时延;
[0182]
目标时间段获取子单元1422,用于在历史检测时间段集合中,获取信息接收时刻所属的目标历史检测时间段;
[0183]
目标时延获取子单元1423,用于将目标历史检测时间段对应的历史网络传输时延,确定为信息接收时刻下的目标网络传输时延。
[0184]
其中,集合获取子单元1421、目标时间段获取子单元1422以及目标时延获取子单元1423的具体实现方式,可以参见上述图4所对应实施例中步骤s104的描述,这里将不再进
行赘述。
[0185]
在一个实施例中,功能状态确定单元143可以包括:时延集合获取子单元1431、曲线构建子单元1432以及功能状态确定子单元1433。
[0186]
时延集合获取子单元1431,用于获取历史网络传输时延集合;历史网络传输时延集合包括n个历史网络传输时延,一个历史网络传输时延是指在一个历史检测时间段内,所检测到的网络传输时延;n个正整数;每个历史检测时间段均早于信息接收时刻;
[0187]
曲线构建子单元1432,用于按照n个历史检测时间段与信息接收时刻的时间顺序,构建针对历史网络传输时延集合与目标网络传输时延的时延变化曲线;
[0188]
功能状态确定子单元1433,用于根据时延变化曲线所指示的时延变化趋势,确定冗余传输策略所指示的冗余编码功能的功能状态。
[0189]
其中,时延集合获取子单元1431、曲线构建子单元1432以及功能状态确定子单元1433的具体实现方式,可以参见上述图5所对应实施例中步骤s201-步骤s203的描述,这里将不再进行赘述。
[0190]
在一个实施例中,功能状态确定子单元1433,还具体用于若时延变化趋势为递增趋势,则将冗余传输策略所指示的冗余编码功能的功能状态,确定为关闭状态;
[0191]
功能状态确定子单元1433,还具体用于若时延变化趋势为平稳波动趋势,则将冗余传输策略所指示的冗余编码功能的功能状态,确定为运行状态。
[0192]
在一个实施例中,目标数据帧的帧类型为帧内编码类型;
[0193]
冗余编码模块12可以包括:帧组获取单元121、时长获取单元122、阈值获取单元123以及冗余编码单元124。
[0194]
帧组获取单元121,用于基于冗余传输策略所指示的针对帧内编码类型的第一冗余编码规则,获取目标数据帧所属的单位数据帧组;单位数据帧组是由媒体数据中的m个连续的数据帧所组成的;m为正整数;
[0195]
时长获取单元122,用于获取单位数据帧组对应的帧组编码时长,以及冗余传输策略对应的策略维持时长;
[0196]
阈值获取单元123,用于获取媒体数据所属的业务场景类型,根据业务场景类型确定媒体数据对应的丢包率阈值;
[0197]
冗余编码单元124,用于根据帧组编码时长、策略维持时长以及丢包率阈值,对原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包。
[0198]
其中,帧组获取单元121、时长获取单元122、阈值获取单元123以及冗余编码单元124的具体实现方式,可以参见上述图7所对应实施例中步骤s301-步骤s304的描述,这里将不再进行赘述。
[0199]
在一个实施例中,时长获取单元122可以包括:编码时长获取子单元1221以及时长确定子单元1222。
[0200]
编码时长获取子单元1221,用于获取单位数据帧组包含的每个数据帧分别对应的数据编码时长,得到m个数据编码时长;
[0201]
时长确定子单元1222,用于将m个数据编码时长进行相加处理,得到帧组编码时长;
[0202]
时长确定子单元1222,还用于获取当前时刻,以及冗余传输策略的策略开启时刻;
[0203]
时长确定子单元1222,还用于将当前时刻与策略开启时刻之间的差值时长,确定为策略维持时长。
[0204]
其中,编码时长获取子单元1221以及时长确定子单元1222的具体实现方式,可以参见上述图7所对应实施例中步骤s302的描述,这里将不再进行赘述。
[0205]
在一个实施例中,冗余编码单元124可以包括:冗余度确定子单元1241、冗余包数量确定子单元1242以及冗余编码子单元1243。
[0206]
冗余度确定子单元1241,用于根据帧组编码时长、策略维持时长以及丢包率阈值,确定目标数据帧对应的第一冗余度;
[0207]
冗余包数量确定子单元1242,用于获取目标原始数据包对应的原始包数量,根据第一冗余度以及原始包数量确定目标数据帧对应的第一冗余包数量;
[0208]
冗余编码子单元1243,用于根据第一冗余度以及第一冗余包数量,对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包;冗余数据包对应的数据包数量为第一冗余包数量。
[0209]
其中,冗余度确定子单元1241、冗余包数量确定子单元1242以及冗余编码子单元1243的具体实现方式,可以参见上述图7所对应实施例中步骤s304的描述,这里将不再进行赘述。
[0210]
在一个实施例中,目标数据帧的帧类型为前向编码类型;
[0211]
冗余编码模块12可以包括:参考帧获取单元125、参考包获取单元126以及包编码单元127。
[0212]
参考帧获取单元125,用于基于冗余传输策略所指示的针对第二帧类型的第二冗余编码规则,获取目标数据帧所属的单位数据帧组;单位数据帧组是由媒体数据中的m个连续的数据帧所组成的;m为正整数;
[0213]
参考帧获取单元125,还用于获取单位数据帧组中的帧类型为帧内编码类型,且传输状态为已传输状态的参考数据帧;
[0214]
参考包获取单元126,用于获取参考数据帧对应的原始数据包,将参考数据帧对应的原始数据包确定为参考数据包;
[0215]
包编码单元127,用于获取目标原始数据包对应的第一数据包数量,以及参考数据包对应的第二数据包数量,根据第一数据包数量以及第二数据包数量,对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包。
[0216]
其中,参考帧获取单元125、参考包获取单元126以及包编码单元127的具体实现方式,可以参见上述图8所对应实施例中步骤s401-步骤s404的描述,这里将不再进行赘述。
[0217]
在一个实施例中,包编码单元127,还具体用于获取参考数据帧对应的冗余度,将参考数据帧对应的冗余度确定为参考冗余度;
[0218]
包编码单元127,还具体用于基于参考冗余度、第一数据包数量以及第二数据包数量,确定目标数据帧对应的第一候选冗余度;
[0219]
包编码单元127,还具体用于获取第二冗余编码规则所指示的针对第二帧类型的第二候选冗余度;
[0220]
包编码单元127,还具体用于将第一候选冗余度与第二候选冗余度之间的最小候选冗余度,确定为目标数据帧对应的第二冗余度;
[0221]
包编码单元127,还具体用于根据第一数据包数量以及第二冗余度,确定目标数据帧对应的第二冗余包数量;
[0222]
包编码单元127,还具体用于根据第二冗余度以及第二冗余包数量,对目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包;冗余数据包对应的数据包数量为第二冗余包数量。
[0223]
在一个实施例中,数据处理装置1还可以包括:原始包获取模块15以及原始包发送模块16。
[0224]
原始包获取模块15,用于若在传输剩余数据帧时,冗余传输策略所指示的冗余编码功能的功能状态为关闭状态,则获取剩余数据帧对应的待传输原始数据包;待传输原始数据包是指对剩余数据帧进行数据编码后所得到的数据包;
[0225]
原始包发送模块16,用于将待传输原始数据包发送至接收端。
[0226]
其中,原始包获取模块15以及原始包发送模块16的具体实现方式,可以参见上述图4所对应实施例中步骤s104的描述,这里将不再进行赘述。
[0227]
在一个实施例中,数据处理装置1还可以包括:重传模块17。
[0228]
重传模块17,用于若反馈信息包括针对丢失数据包的重传请求,则基于重传请求从缓存库中获取丢失数据包,将丢失数据包重新传输至接收端;丢失数据包是指目标原始数据包中,接收端未接收到的原始数据包。
[0229]
其中,重传模块17的具体实现方式,可以参见上述图4所对应实施例中步骤s104的描述,这里将不再进行赘述。
[0230]
在本技术实施例中,由于一段gop由i、p、b帧组成,这样在一个gop内就会出现最开始的i帧码率很大,中间的p帧和b帧占用比较少,传输时占用带宽不平滑容易造成带宽评估不准和网络拥塞。而本技术对于不同的帧类型,可以采用不同的冗余编码策略,通过对i/p帧的fec冗余传输进行动态实时控制(及时关闭fec冗余传输策略,或继续采用fec冗余传输策略),一方面可以改善由于i帧的码率波动造成传输的网络带宽评估不准的网络拥塞丢包的情况;另一方面也能让数据传输场景(如低延时直播传输场景)中,数据带宽更平滑从而可以使得网络拥塞控制更精准,以减少nack重传的情况,进而减少引重传等待造成端到端延时更久的情况。
[0231]
进一步地,请参见图10,图10是本技术实施例提供的一种计算机设备的结构示意图。如图10所示,上述图9所对应实施例中的数据处理装置1可以应用于上述计算机设备8000,上述计算机设备8000可以包括:处理器8001,网络接口8004和存储器8005,此外,上述计算机设备8000还包括:用户接口8003,和至少一个通信总线8002。其中,通信总线8002用于实现这些组件之间的连接通信。其中,用户接口8003可以包括显示屏(display)、键盘(keyboard),可选用户接口8003还可以包括标准的有线接口、无线接口。网络接口8004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器8005可以是高速ram存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器8005可选的还可以是至少一个位于远离前述处理器8001的存储装置。如图10所示,作为一种计算机可读存储介质的存储器8005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
[0232]
在图10所示的计算机设备8000中,网络接口8004可提供网络通讯功能;而用户接
口8003主要用于为用户提供输入的接口;而处理器8001可以用于调用存储器8005中存储的设备控制应用程序,以实现:
[0233]
获取目标数据帧对应的目标原始数据包;目标原始数据包是指对目标数据帧进行数据编码后所得到的数据包;
[0234]
基于冗余传输策略将目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包,将目标原始数据包与冗余数据包发送至接收端;
[0235]
接收接收端返回的反馈信息;
[0236]
若反馈信息包括针对目标原始数据包与冗余数据包的实时丢包率,则在传输剩余数据帧时,基于实时丢包率确定冗余传输策略所指示的冗余编码功能的功能状态;功能状态包括运行状态以及关闭状态;剩余数据帧是指目标数据帧所属的媒体数据中,除目标数据帧以外且未传输的数据帧。
[0237]
应当理解,本技术实施例中所描述的计算机设备8000可执行前文图4到图8所对应实施例中对该数据处理方法的描述,也可执行前文图9所对应实施例中对该数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
[0238]
此外,这里需要指出的是:本技术实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的数据处理的计算机设备1000所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图4到图8所对应实施例中对上述数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本技术所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本技术方法实施例的描述。
[0239]
上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
[0240]
本技术的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本技术实施例中一方面提供的方法。
[0241]
本技术实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
[0242]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这
些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。
[0243]
本技术实施例提供的方法及相关装置是参照本技术实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
[0244]
以上所揭露的仅为本技术较佳实施例而已,当然不能以此来限定本技术之权利范围,因此依本技术权利要求所作的等同变化,仍属本技术所涵盖的范围。
技术特征:
1.一种数据处理方法,其特征在于,包括:获取目标数据帧对应的目标原始数据包;所述目标原始数据包是指对所述目标数据帧进行数据编码后所得到的数据包;基于冗余传输策略将所述目标原始数据包进行冗余编码,得到所述目标原始数据包对应的冗余数据包,将所述目标原始数据包与所述冗余数据包发送至接收端;接收所述接收端返回的反馈信息;若所述反馈信息包括针对所述目标原始数据包与所述冗余数据包的实时丢包率,则在传输剩余数据帧时,基于所述实时丢包率确定所述冗余传输策略所指示的冗余编码功能的功能状态;所述功能状态包括运行状态以及关闭状态;所述剩余数据帧是指所述目标数据帧所属的媒体数据中,除所述目标数据帧以外且未传输的数据帧。2.根据权利要求1所述的方法,其特征在于,所述基于所述实时丢包率确定所述冗余传输策略所指示的冗余编码功能的功能状态,包括:获取所述媒体数据所属的业务场景类型,根据所述业务场景类型确定所述媒体数据对应的丢包率阈值;若所述实时丢包率大于预设下限值,且所述实时丢包大于所述丢包率阈值,则获取信息接收时刻下的目标网络传输时延,根据所述目标网络传输时延,确定所述冗余传输策略所指示的冗余编码功能的功能状态;所述信息接收时刻是指接收到所述反馈信息的时刻;若所述实时丢包率大于所述丢包率阈值,则将所述冗余传输策略所指示的冗余编码功能的功能状态,确定为关闭状态。3.根据权利要求2所述的方法,其特征在于,所述获取信息接收时刻下的目标网络传输时延,包括:获取针对网络传输时延的历史检测时间段集合;所述历史检测时间段集合中的每个历史检测时间段用于检测网络传输时延;一个历史检测时间段对应一个所检测到的历史网络传输时延;在所述历史检测时间段集合中,获取所述信息接收时刻所属的目标历史检测时间段;将所述目标历史检测时间段对应的历史网络传输时延,确定为所述信息接收时刻下的目标网络传输时延。4.根据权利要求2所述的方法,其特征在于,所述根据所述目标网络传输时延,确定所述冗余传输策略所指示的冗余编码功能的功能状态,包括:获取历史网络传输时延集合;所述历史网络传输时延集合包括n个历史网络传输时延,一个历史网络传输时延是指在一个历史检测时间段内,所检测到的网络传输时延;n个正整数;每个历史检测时间段均早于所述信息接收时刻;按照所述n个历史检测时间段与所述信息接收时刻的时间顺序,构建针对所述历史网络传输时延集合与所述目标网络传输时延的时延变化曲线;根据所述时延变化曲线所指示的时延变化趋势,确定所述冗余传输策略所指示的冗余编码功能的功能状态。5.根据权利要求4所述的方法,其特征在于,所述根据所述时延变化曲线所指示的时延变化趋势,确定所述冗余传输策略所指示的冗余编码功能的功能状态,包括:若所述时延变化趋势为递增趋势,则将所述冗余传输策略所指示的冗余编码功能的功
能状态,确定为关闭状态;若所述时延变化趋势为平稳波动趋势,则将所述冗余传输策略所指示的冗余编码功能的功能状态,确定为运行状态。6.根据权利要求1所述的方法,其特征在于,所述目标数据帧的帧类型为帧内编码类型;所述基于冗余传输策略将所述目标原始数据包进行冗余编码,得到所述目标原始数据包对应的冗余数据包,包括:基于所述冗余传输策略所指示的针对所述帧内编码类型的第一冗余编码规则,获取所述目标数据帧所属的单位数据帧组;所述单位数据帧组是由所述媒体数据中的m个连续的数据帧所组成的;m为正整数;获取所述单位数据帧组对应的帧组编码时长,以及所述冗余传输策略对应的策略维持时长;获取所述媒体数据所属的业务场景类型,根据所述业务场景类型确定所述媒体数据对应的丢包率阈值;根据所述帧组编码时长、所述策略维持时长以及所述丢包率阈值,对所述原始数据包进行冗余编码,得到所述目标原始数据包对应的冗余数据包。7.根据权利要求6所述的方法,其特征在于,所述获取所述单位数据帧组对应的帧组编码时长,以及所述冗余传输策略对应的策略维持时长,包括:获取所述单位数据帧组包含的每个数据帧分别对应的数据编码时长,得到m个数据编码时长;将所述m个数据编码时长进行相加处理,得到所述帧组编码时长;获取当前时刻,以及所述冗余传输策略的策略开启时刻;将所述当前时刻与所述策略开启时刻之间的差值时长,确定为所述策略维持时长。8.根据权利要求6所述的方法,其特征在于,所述根据所述帧组编码时长、所述策略维持时长以及所述丢包率阈值,对所述目标原始数据包进行冗余编码,得到所述目标原始数据包对应的冗余数据包,包括:根据所述帧组编码时长、所述策略维持时长以及所述丢包率阈值,确定所述目标数据帧对应的第一冗余度;获取所述目标原始数据包对应的原始包数量,根据所述第一冗余度以及所述原始包数量确定所述目标数据帧对应的第一冗余包数量;根据所述第一冗余度以及所述第一冗余包数量,对所述目标原始数据包进行冗余编码,得到所述目标原始数据包对应的冗余数据包;所述冗余数据包对应的数据包数量为所述第一冗余包数量。9.根据权利要求1所述的方法,其特征在于,所述目标数据帧的帧类型为前向编码类型;所述基于冗余传输策略将所述目标原始数据包进行冗余编码,得到所述目标原始数据包对应的冗余数据包,包括:基于所述冗余传输策略所指示的针对所述第二帧类型的第二冗余编码规则,获取所述目标数据帧所属的单位数据帧组;所述单位数据帧组是由所述媒体数据中的m个连续的数
据帧所组成的;m为正整数;获取所述单位数据帧组中的帧类型为帧内编码类型,且传输状态为已传输状态的参考数据帧;获取所述参考数据帧对应的原始数据包,将所述参考数据帧对应的原始数据包确定为参考数据包;获取所述目标原始数据包对应的第一数据包数量,以及所述参考数据包对应的第二数据包数量,根据所述第一数据包数量以及所述第二数据包数量,对所述目标原始数据包进行冗余编码,得到所述目标原始数据包对应的冗余数据包。10.根据权利要求9所述的方法,其特征在于,所述根据所述第一数据包数量以及所述第二数据包数量,对所述目标原始数据包进行冗余编码,得到所述目标原始数据包对应的冗余数据包,包括:获取所述参考数据帧对应的冗余度,将所述参考数据帧对应的冗余度确定为参考冗余度;基于所述参考冗余度、所述第一数据包数量以及所述第二数据包数量,确定所述目标数据帧对应的第一候选冗余度;获取所述第二冗余编码规则所指示的针对所述第二帧类型的第二候选冗余度;将所述第一候选冗余度与所述第二候选冗余度之间的最小候选冗余度,确定为所述目标数据帧对应的第二冗余度;根据所述第一数据包数量以及所述第二冗余度,确定所述目标数据帧对应的第二冗余包数量;根据所述第二冗余度以及所述第二冗余包数量,对所述目标原始数据包进行冗余编码,得到所述目标原始数据包对应的冗余数据包;所述冗余数据包对应的数据包数量为所述第二冗余包数量。11.根据权利要求1所述的方法,其特征在于,所述方法还包括:若在传输剩余数据帧时,所述冗余传输策略所指示的冗余编码功能的功能状态为关闭状态,则获取所述剩余数据帧对应的待传输原始数据包;所述待传输原始数据包是指对所述剩余数据帧进行数据编码后所得到的数据包;将所述待传输原始数据包发送至所述接收端。12.根据权利要求1所述的方法,其特征在于,所述方法还包括:若所述反馈信息包括针对丢失数据包的重传请求,则基于所述重传请求从缓存库中获取所述丢失数据包,将所述丢失数据包重新传输至所述接收端;所述丢失数据包是指所述目标原始数据包中,所述接收端未接收到的原始数据包。13.一种数据处理装置,其特征在于,包括:包获取模块,用于目标数据帧对应的目标原始数据包;所述目标原始数据包是指对所述目标数据帧进行数据编码后所得到的数据包;冗余编码模块,用于基于冗余传输策略将所述目标原始数据包进行冗余编码,得到所述目标原始数据包对应的冗余数据包,将所述目标原始数据包与所述冗余数据包发送至接收端;反馈接收模块,用于接收所述接收端返回的反馈信息;
功能状态确定模块,用于若所述反馈信息包括针对所述目标原始数据包与所述冗余数据包的实时丢包率,则在传输剩余数据帧时,基于所述实时丢包率确定所述冗余传输策略所指示的冗余编码功能的功能状态;所述功能状态包括运行状态以及关闭状态;所述剩余数据帧是指所述目标数据帧所属的媒体数据中,除所述目标数据帧以外且未传输的数据帧。14.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;所述处理器与所述存储器、所述网络接口相连,其中,所述网络接口用于提供网络通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以使所述计算机设备执行权利要求1-12任一项所述的方法。15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行权利要求1-12任一项所述的方法。16.一种计算机程序产品或计算机程序,其特征在于,所述计算机程序产品或计算机程序包括计算机指令,所述计算机指令存储在计算机可读存储介质中,所述计算机指令适于由处理器读取并执行,以使得具有所述处理器的计算机设备执行权利要求1-12任一项所述的方法。
技术总结
本申请公开了一种数据处理方法、装置、设备以及可读存储介质,方法包括:获取目标数据帧对应的目标原始数据包;基于冗余传输策略将目标原始数据包进行冗余编码,得到目标原始数据包对应的冗余数据包,将目标原始数据包与冗余数据包发送至接收端;接收接收端返回的反馈信息;若反馈信息包括针对目标原始数据包与冗余数据包的实时丢包率,则在传输剩余数据帧时,基于实时丢包率确定冗余传输策略所指示的冗余编码功能的功能状态;剩余数据帧是指目标数据帧所属的媒体数据中,除目标数据帧以外且未传输的数据帧。采用本申请,可以在数据传输过程中,减少数据丢包率以及数据传输延时。减少数据丢包率以及数据传输延时。减少数据丢包率以及数据传输延时。
技术研发人员:李志成
受保护的技术使用者:腾讯科技(深圳)有限公司
技术研发日:2022.03.14
技术公布日:2023/9/23
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
航空商城 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/