CN115086285B - 一种数据处理方法、装置、存储介质及电子设备 - Google Patents
一种数据处理方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN115086285B CN115086285B CN202210620504.8A CN202210620504A CN115086285B CN 115086285 B CN115086285 B CN 115086285B CN 202210620504 A CN202210620504 A CN 202210620504A CN 115086285 B CN115086285 B CN 115086285B
- Authority
- CN
- China
- Prior art keywords
- data packet
- streaming media
- queue
- packet
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 34
- 238000012545 processing Methods 0.000 claims abstract description 149
- 230000005540 biological transmission Effects 0.000 claims abstract description 121
- 238000000034 method Methods 0.000 claims abstract description 73
- 238000001514 detection method Methods 0.000 claims description 78
- 238000012937 correction Methods 0.000 claims description 44
- 230000008569 process Effects 0.000 claims description 20
- 238000003780 insertion Methods 0.000 claims description 18
- 230000037431 insertion Effects 0.000 claims description 18
- 238000004590 computer program Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 description 28
- 238000004891 communication Methods 0.000 description 24
- 238000011084 recovery Methods 0.000 description 19
- 238000010586 diagram Methods 0.000 description 18
- 238000005538 encapsulation Methods 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 5
- NUHSROFQTUXZQQ-UHFFFAOYSA-N isopentenyl diphosphate Chemical compound CC(=C)CCO[P@](O)(=O)OP(O)(O)=O NUHSROFQTUXZQQ-UHFFFAOYSA-N 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 description 3
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 239000003795 chemical substances by application Substances 0.000 description 2
- 101100465000 Mus musculus Prag1 gene Proteins 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/80—Responding to QoS
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种数据处理方法、装置、存储介质及电子设备,其中,方法包括:接收第一客户端发送的至少一个流媒体数据,将流媒体数据中的流媒体数据包存入流媒体队列,若流媒体数据中存在冗余数据包,基于流媒体数据包和冗余数据包生成丢失数据包,将丢失数据包存入所述流媒体队列,从流媒体队列中确定出队的目标数据包,将目标数据包发送至至少一个第二客户端进行流媒体处理。采用本申请实施例,可以保障数据传输稳定。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、存储介质及电子设备。
背景技术
随着计算机技术的快速发展,涉及到使用流媒体技术的应用也越来越广泛。目前的流媒体服务,多是将流媒体码流数据按一定规则打包后,通过通信网络,进行数据的分发,诸如对声音流、视频流、文本流、图像流、动画流等流媒体码流数据进行分发。
发明内容
本申请实施例提供了一种数据处理方法、装置、存储介质及电子设备,所述技术方案如下:
第一方面,本申请实施例提供了一种数据处理方法,应用于服务端,所述方法包括:
接收第一客户端发送的至少一个流媒体数据,将所述流媒体数据中的流媒体数据包存入流媒体队列;
若所述流媒体数据中存在冗余数据包,基于所述流媒体数据包和冗余数据包生成丢失数据包,将所述丢失数据包存入所述流媒体队列;
从所述流媒体队列中确定出队的目标数据包,将所述目标数据包发送至至少一个第二客户端进行流媒体处理。
第二方面,本申请实施例提供了一种数据处理方法,应用于第一客户端,所述方法包括:
生成至少一个流媒体数据;
向服务端发送所述流媒体数据,所述流媒体数据用于指示所述服务端将流媒体数据包和/或丢失数据包存入流媒体队列,并从所述流媒体队列中确定出队的目标数据包以及将所述目标数据包发送至至少一个第二客户端进行流媒体处理;
其中,所述丢失数据包为在所述流媒体数据中存在冗余数据包和流媒体数据包时基于所述冗余数据包和所述流媒体数据包生成的数据包。
第三方面,本申请实施例提供了一种数据处理方法,应用于第二客户端,所述方法包括:
接收服务端从流媒体队列中确定出队的目标数据包;所述流媒体队列包含所述服务端接收第一客户端发送的流媒体数据后存入的流媒体数据包和/或丢失数据包;其中,所述丢失数据包为在所述流媒体数据中存在冗余数据包和流媒体数据包时基于所述冗余数据包和所述流媒体数据包生成的数据包。
基于所述目标数据包进行流媒体处理。
第四方面,本申请实施例提供了一种数据处理装置,所述装置包括:
数据接收模块,用于接收第一客户端发送的至少一个流媒体数据;
数据处理模块,用于将所述流媒体数据中的流媒体数据包存入流媒体队列;以及若所述流媒体数据中存在冗余数据包,基于所述流媒体数据包和冗余数据包生成丢失数据包,将所述丢失数据包存入所述流媒体队列;
数据发送模块,用于从所述流媒体队列中确定出队的目标数据包,将所述目标数据包发送至至少一个第二客户端进行流媒体处理。
第五方面,本申请实施例提供了一种数据处理装置,所述装置包括:
数据生成模块,用于生成至少一个流媒体数据;
数据发送模块,用于向服务端发送所述流媒体数据,所述流媒体数据用于指示所述服务端将流媒体数据包和/或丢失数据包存入流媒体队列,并从所述流媒体队列中确定出队的目标数据包以及将所述目标数据包发送至至少一个第二客户端进行流媒体处理;
其中,所述丢失数据包为在所述流媒体数据中存在冗余数据包和流媒体数据包时基于所述冗余数据包和所述流媒体数据包生成的数据包。
第六方面,本申请实施例提供了一种数据处理装置,所述装置包括:
数据接收模块,用于接收服务端从流媒体队列中确定出队的目标数据包;所述流媒体队列包含所述服务端接收第一客户端发送的流媒体数据后存入的流媒体数据包和/或丢失数据包;其中,所述丢失数据包为在所述流媒体数据中存在冗余数据包和流媒体数据包时基于所述冗余数据包和所述流媒体数据包生成的数据包。
数据处理模块,用于基于所述目标数据包进行流媒体处理。
第七方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
第八方面,本申请实施例提供一种电子设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
在本申请一个或多个实施例中,服务端可以接收第一客户端发送的至少一个流媒体数据,将流媒体数据中的流媒体数据包存入流媒体队列,以及在流媒体数据中存在冗余数据包时,基于流媒体数据包和冗余数据包生成丢失数据包,将丢失数据包存入流媒体队列,通过流媒体队列来确定出队的目标数据包,从而将目标数据包发送至至少一个第二客户端进行流媒体处理。在服务端就基于冗余数据包恢复丢失数据包实现数据恢复前置,同时基于流媒体队列对乱序的流媒体数据包、丢失数据包等数据包进行分发规整,通过流媒体队列确定每次出队的目标数据包并进行下发,可以在复杂网络传输场景下具备更好的抗丢包能力,保障数据传输稳定,从而确保流媒体正常处理。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理方法的流程示意图;
图2是本申请实施例提供的一种数据处理方法的流程示意图;
图3本申请实施例提供的一种数据包的包封装结构的示意图;
图4是本申请实施例提供的一种数据处理方法的流程示意图;
图5是本申请实施例提供的一种数据处理方法的流程示意图;
图6是本申请实施例提供的一种数据处理系统的系统场景示意图;
图7是本申请实施例提供的一种数据处理系统涉及的流媒体数据处理的示意图;
图8是本申请实施例提供的一种数据处理装置的结构示意图;
图9是本申请实施例提供的另一种数据处理装置的结构示意图;
图10是本申请实施例提供的另一种数据处理装置的结构示意图;
图11是本申请实施例提供的一种电子设备的结构示意图;
图12是本申请实施例提供的另一种电子设备的结构示意图;
图13是本申请实施例提供的另一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
在相关技术中,涉及到流媒体码流数据分发基于SFU(选择性转发单元)架构来实现,常见的,作为流媒体码流数据生产者的推流端可以将流媒体码流数据发送至基于SFU(选择性转发单元)架构的媒体服务器,由媒体服务器对流媒体码流数据分发至若干拉流端。在流媒体码流数据的实际传输过程中也会由于媒体服务器直接转发以及客观存在的由复杂网络原因引发的数据丢包现象,从而导致数据传输不稳定。
下面结合具体的实施例对本申请进行详细说明。
在一个实施例中,如图1所示,特提出了一种数据处理方法,该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的数据处理装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。所述数据处理装置可以为服务端。
具体的,该数据处理方法包括:
S101:接收第一客户端发送的至少一个流媒体数据;
可以理解的,所述第一客户端基于实际应用场景实时生成流媒体码流,流媒体码流由若干流媒体数据组成,并以流媒体数据的形式发送至服务端。服务端即可接收到第一客户端发送的若干流媒体数据。
示意性的,由于网络流媒体的传输需要实时和低延时等特点,目前常通过预设传输协议实时传输协议(Real-timeTransport Protocol,RTP)来传输流媒体。预设传输协议用来为以一连串的流媒体数据的形式对诸如声音流、视频流、文本流、图像流、动画流等流媒体码流进行实时传输,从而提供端到端的实时传输服务。
可选的,预设传输协议可以是实时传输协议(Real-timeTransport Protocol,RTP)。流媒体数据可为RTP数据,流媒体数据中相应数据包可为RTP数据包;
示意性的,所述第一客户端基于若干流媒体数据对应媒体帧(如视频帧、图像帧、音频帧)的播放顺序,依次发送各个流媒体数据至服务端;
可选的,流媒体数据中至少包括流媒体数据包;
可选的,由于网络环境的不确定性,传输的流媒体数据可能有所丢失,也即流媒体数据包有可能丢失,基于此,第一客户端传输的流媒体数据中可包括流媒体数据包以及冗余数据包。
示意性的,第一客户端可以对当前待传输的媒体帧(如视频帧、图像帧、音频帧)封装得到的流媒体数据包,为了抵抗传输过程中的数据丢失,第一客户端可以对封装后的流媒体数据包进行FEC(前向纠错)冗余编码,将得到冗余数据包;将封装得到的流媒体数据包以及编码得到的冗余数据包组成一个包组作为流媒体数据,并发送流媒体数据至服务端,服务端此时即可接收到第一客户端发送的流媒体数据;
可以理解的,在数据传输过程中,服务端会连续接收到第一客户端发送的若干流媒体数据,这些流媒体数据基于实际传输情况,流媒体数据至少包括流媒体数据包;在一些实施场景下,这些流媒体数据中部分还包括冗余数据包。
在本申请一个或多个实施例中,第一客户端将流媒体数据推送至服务端的过程可理解为推流,推流指的是把第一客户端采集阶段封包好的内容以若干流媒体数据的形式传输到服务端的过程。可理解为第一客户端将现场的多媒体信号传到网络的过程。“推流”对网络要求通常比较高。
进一步的,用于“推流”的预设传输协议可以是RTP协议、RTSP协议、RTMP协议、HLS协议等;
进一步的,与“推流”相对应的是“拉流”,“拉流”在本申请一个或多个实施例中可理解为将流媒体队列中当前出队的目标数据包发送至第二客户端的过程,针对第二客户端而言,第二客户端相对于是从服务端拉取目标数据包。
进一步的,用于“拉流”的预设传输协议可以是RTP协议、RTSP协议、RTMP协议、HLS协议等;
S102:将流媒体数据中的流媒体数据包存入流媒体队列;
所述流媒体队列保存有服务端从第一客户端接收的数据包,服务端通过流媒体队列按照每个数据包对应媒体帧(如视频帧、图像帧、音频帧)的播放顺序进行排列;
可以理解的,服务端每接收到第一客户端发送的流媒体数据之后,即将流媒体数据中的流媒体数据包按照其对应媒体帧的播放顺序放入流媒体队列中。
进一步的,流媒体数据包携带有基于预设数据传输协议划分的包序列号,以预设数据传输协议为RTP协议为例,包序列号可为RTP序列号,RTP序列号与数据包对应媒体帧的播放顺序相关联。
可选的,服务端获取流媒体数据中的流媒体数据包携带的包序列号,按照包序列号将流媒体数据包放入流媒体队列中,并使得流媒体队列中若干数据包的按照包序列号的优先级顺序进行排列。
S103:若流媒体数据中存在冗余数据包,基于流媒体数据包和冗余数据包生成丢失数据包,将丢失数据包存入流媒体队列;
在本申请一个或多个实施例中,第一客户端为了抵抗传输过程中的数据丢失,第一客户端发送的流媒体数据会包含封装得到的流媒体数据包以及编码得到的冗余数据包;
可以理解的,服务端接收到流媒体数据之后,可检测流媒体数据中是否存在冗余数据包,若流媒体数据中存在冗余数据包,可以基于流媒体数据包和冗余数据包生成丢失数据包,将丢失数据包存入流媒体队列。
进一步的,服务端可根据接收到的流媒体数据中的流媒体数据包和冗余数据包进行相应的FEC(前向纠错)解码处理以得到丢失数据包,然后将丢失数据包存入流媒体队列;
FEC前向纠错可以通过增加冗余数据对丢失的数据包进行恢复的信道编/解码算法,FEC前向纠错使用到的编解码算法可以基于RS(Reeds-Solomon)算法、Raptor算法和Tornado算法等算法中的一种或多种。
可选的,丢失数据包也会携带包序列号,服务端基于丢失数据包的包序列号按照序列号顺序将丢失数据包插入到流媒体队列中。
可选的,服务端可获取丢失数据包的包序列号,检测流媒体队列中是否存在与丢失数据包的包序列号一致的数据包;若流媒体队列中不存在与丢失数据包的包序列号一致的数据包,则可将丢失数据包存入流媒体队列;若流媒体队列中存在与丢失数据包的包序列号一致的数据包,则可对丢失数据包进行忽略处理。
在本申请一个或多个实施例中,服务端在从第一客户端至服务端的整个流媒体传输过程中,实时或周期性检测第一数据丢包率;将第一数据丢包率发送至第一客户端,所述第一数据丢包率通常用于指示第一客户端进行前向纠错编码处理生成冗余数据包,并将包含流媒体数据包和所述冗余数据包的流媒体数据发送至服务端。
所述第一数据丢包率是指第一客户端至服务端之间的推流路径的丢包率。
示意性的,服务端向第一客户端反馈第一数据丢包率,可以指示第一客户端基于第一数据丢包率动态调整FEC编码冗余度。例如在第一数据丢包率较高的情况下,可以指示第一客户端使用较高的编码冗余度进行冗余数据包编码;又例如在第一数据丢包率较小的情况下,可以指示第一客户端使用较低的编码冗余度进行冗余数据包编码;从而基于实际网络传输情况,节省冗余数据占用网络带宽。
示意性的,服务端可以指示第一客户端使用相关技术中的自适应FEC算法基于第一数据丢包率动态调整FEC编码冗余度,如多播自适应FEC算法(MA-FEC)。
在本申请一个或多个实施例中,在实际应用场景为WebRTC(网页即时通信)场景时,FEC(前向纠错)算法包括但不限于UlpFEC和FlexFEC。
在本申请一个或多个实施例中,流媒体队列可称作为服务质量队列,也即QoS队列,也即对流媒体数据进行QoS处理所涉及的流媒体队列。通过流媒体队列对接收到的流媒体数据包和/或恢复的丢失数据包进行QoS处理后才将相应目标数据包向第二客户端进行转发。
可以理解的,在推流端至媒体服务器的上行数据传输过程中会由于乱序、丢包等客观网络现象,存在丢包现象,对于服务端而言不仅仅局限于数据分发转发,而是在服务端就基于冗余数据包恢复丢失数据包实现数据恢复前置,同时基于流媒体队列进行QoS服务质量处理,保障接收到若干流媒体数据包和丢失数据包等数据包的规整,这样可对若干流媒体数据包和丢失数据包等数据包按序下发,以避免下游接收到的数据包序列号乱序情况。避免频繁的NACK重传请求会加剧网络负载。
S104:从流媒体队列中确定出队的目标数据包,将目标数据包发送至至少一个第二客户端进行流媒体处理。
所述目标数据包为服务端从流媒体队列中所确定的传输至第二客户端的数据包,也即流媒体队列中当前出队的数据包。
在一种可行的实施方式中,服务端可获取流媒体队列中队首的数据包来确定目标数据包,然后将目标数据包发送至若干第二客户端进行流媒体处理,如第二客户端进行目标数据包进行数据解码以及流媒体播放。
在一种可行的实施方式中,服务端设置有队列出队策略,可以基于队列出队策略从流媒体队列中确定目标数据包,所述队列出队策略用于确定在第二客户端进行数据包解码时解码状态为成功解码状态的所述目标数据包。
在本申请一个或多个实施例中,队列出队策略可以是对队首的数据包进行进行包完整性检测以及包连续性检测,满足包完整性以及包连续性条件可将队首的数据包作为目标数据包。
在本申请一个或多个实施例中,队列出队策略可以是对队首的数据包进行独立编码检测,满足独立编码条件可将队首的数据包作为目标数据包。
可选的,对于出队的目标数据包,还可以将目标数据包设置为跟上一出队的历史数据包的包序列号连续,也即获取上一出队的历史包序列号的下一序列号,基于所述下一序列号对所述目标数据包进行序列号重置处理。然后再才将目标数据包发送至第二客户端。
可以理解的,确定出队后的目标数据包并进行包序列号更新,以保障拉流端收到流媒体码流数据不会由于数据包序列号不连续所触发NACK重传请求机制进行数据恢复,而在网络时延较大的场景且拉流端的数量较多的情况下,大量的拉流端会由于流媒体码流数据存在数据包序列号不连续现象,频繁反馈丢包信息或者频繁触发NACK重传请求机制,加剧了网络负载。基于此,改善了数据传输时延以及网络负载。
在本申请实施例中,服务端可以接收第一客户端发送的至少一个流媒体数据,将流媒体数据中的流媒体数据包存入流媒体队列,以及在流媒体数据中存在冗余数据包时,基于流媒体数据包和冗余数据包生成丢失数据包,将丢失数据包存入流媒体队列,通过流媒体队列来确定出队的目标数据包,从而将目标数据包发送至至少一个第二客户端进行流媒体处理。在服务端就基于冗余数据包恢复丢失数据包实现数据恢复前置,同时基于流媒体队列对乱序的流媒体数据包、丢失数据包等数据包进行分发规整,通过流媒体队列确定每次出队的目标数据包并进行下发,可以在复杂网络传输场景下具备更好的抗丢包能力,保障数据传输稳定,从而确保流媒体正常处理。
请参见图3,图3是本申请提出的一种数据处理方法的另一种实施例的流程示意图。具体的:
S201:接收第一客户端发送的至少一个流媒体数据;
具体可参见S101,此处不再赘述。
S202:将所述流媒体数据中的流媒体数据包存入流媒体队列;
可以理解的,第一客户端通常以一连串的流媒体数据的形式进行数据传输,通常当前接收到的流媒体数据包在流媒体队列的数据包之后,可直接将流媒体数据包放入流媒体队列的队尾位置;
在一种可行的实施方式中,也可基于当前的流媒体数据包的当前包序列号,基于当前包序列号和流媒体队列中数据包的包序列号的序列号顺序,确定当前流媒体数据包在流媒体队列中的存入位置,然后基于该存入位置将流媒体数据包存入流媒体队列中。
S203:若流媒体数据中存在冗余数据包,基于流媒体数据包和冗余数据包生成丢失数据包。
可以理解的,基于流媒体数据包和冗余数据包生成丢失数据包之后,可以将丢失数据包存入流媒体队列,具体可参考以下方法步骤。
S204:确定所述丢失数据包的队列插入位置,基于所述队列插入位置将所述丢失数据包插入至所述流媒体队列。
所述队列插入位置为所述丢失数据包在流媒体队列中待插入的位置。
在一种可行的实施方式中,服务端执行所述确定所述丢失数据包的队列插入位置,可以是:
服务端先确定所述丢失数据包的第一包序列号,获取所述流媒体队列中所有数据包的第二包序列号;然后基于所述第一包序列号以及所述第二包序列号确定队列插入位置。
根据一些实施例中,诸如流媒体数据包以及丢失数据包均携带有基于预设数据传输协议划分的包序列号,以预设数据传输协议为RTP协议为例,包序列号可为RTP序列号,包序列号与数据包对应媒体帧的播放顺序相关联。
所述第一包序列号通常可以在丢失数据包的包头部或包尾部获取到。
所述第二包序列号通常可以在数据包的包头部或包尾部获取到。
示意性的,服务端可在确定丢失数据包的第一包序列号,以及流媒体队列中所有数据包的第二包序列号之后,按照包序列号的优先级顺序来确定丢失数据包在流媒体队列中的队列插入位置,将所述丢失数据包插入至所述流媒体队列的队列插入位置上。
可选的,服务端可以先检测流媒体队列中是否存在与丢失数据包的第一包序列号一致的数据包;若流媒体队列中不存在与丢失数据包的第一包序列号一致的数据包,则可将丢失数据包存入流媒体队列;若流媒体队列中存在与丢失数据包的第一包序列号一致的数据包,则可对丢失数据包进行忽略处理。
S205:获取所述流媒体队列中处于队首的第一数据包,基于队列出队策略对所述第一数据包进行出队检测,得到出队检测结果。
在本申请一个或多个实施例中,服务端可以在每当有新的数据包(如新的丢失数据包或流媒体数据包)加入流媒体队列时,服务端可以获取流媒体队列中处于队首的第一数据包。
可以理解的,服务端在获取到流媒体队列中处于队首的第一数据包,基于队列出队策略对所述第一数据包进行出队检测,得到出队检测结果;
在本申请一个或多个实施例中,队列出队策略用于确定在第二客户端进行数据包解码时解码状态为成功解码状态的所述目标数据包。也即第二客户端在接收到所确定的目标数据包之后,在对目标数据包进行数据包解码时可以成功解码。
可以理解的,通过队列出队策略可以判断流媒体队列中是否有符合出队条件的数据包可以出队,服务端可以基于队列出队策略从流媒体队列中确定出队的目标数据包。
在一种可行的实施方式中,队列出队策略可以是对所述第一数据包进行包完整性检测以及包连续性检测得到第一检测结果;
包完整性检测即检测当前的数据包是否数据完整,以避免第二客户端无法对不完整的数据包进行包解码。
包连续性检测即检测当前的数据包与上一个已出队的历史数据包之间是否包连续。
可选的,可以是检测第一数据包的包封装结构中的数据是否完整,通常流媒体数据包、第一数据包、丢失数据包等是按照预设数据传输协议进行封装成包的,按照预设数据传输协议所规定的包封装结构,检测各个结构部分的数据是否完整。
示意性的,以数据包为视频帧对应的按照“vp8编码协议”编码的数据包为例,如图3所示,图3是本申请涉及的一种数据包的包封装结构的示意图。如图3,vp8数据包每帧的PictureID和帧头标识从“vp8 payload descriptor”中解析,vp8数据包的帧尾标识由实时传输控制协议头的Marker位标识。vp8关键帧信息在“vp8 payload header”中解析。
进一步的,(某一PictureID)数据包满足完整性检测:需要满足该PictureID的数据包至少存在帧头数据和帧尾数据,且该(某一PictureID)数据包的帧头数据和帧尾数据之间的rtp实时传输控制协议包的包序列号是连续的;
包连续性检测也即:数据包对应的视频帧满足与上一个数据包对应的视频帧之间帧连续的条件,也即数据包对应的视频帧PictureID较上一个数据包对应的视频帧的PictureID递增1。
示意性的,所述第一检测结果包括出队通过结果以及出队不通过结果;可以理解为,对所述第一数据包进行包完整性检测以及包连续性检测,在第一数据包通过包完整性检测和包连续性检测后,确定第一检测结果为出队通过结果;在第一数据包未通过包完整性检测和/或包连续性检测,确定第一检测结果为出队不通过结果;
在一种可行的实施方式中,队列出队策略可以是对所述第一数据包进行独立编码检测得到第二检测结果。
所述独立编码也即检测第一数据包对应的多媒体帧数据在帧编码时是否依赖于其他多媒体帧数据进行编码;通过独立编码检测考虑到第一客户端接收到之后是否可以不依赖于其他数据包对应的帧数据进行独立解码。
示意性的,对第一数据包进行独立编码检测,也即获取第一数据包的编码类型,检测该编码类型是否为独立编码类型,在编码类型为独立编码类型的情况下,确定第二检测结果为出队通过结果;在编码类型为参考编码类型的情况下,确定第二检测结果为出队不通过结果;
其中,参考编码类型指示的数据包所对应的多媒体帧数据在数据解码时需要参考其他数据包所对应的多媒体帧数据才能够完成数据解码。
在流媒体码流传输过程中,通常会采用预设多媒体编码模式对多媒体帧数据进行编码封装后得到多媒体数据包。针对一些多媒体类型的数据(如图像多媒体、视频多媒体),而按照预设多媒体编码进行多媒体帧数据进行编码,又分为独立编码类型和参考编码类型,按照独立编码类型进行编码的多媒体帧可称作为独立编码帧,按照参考编码类型参考其他参考多媒体帧对当前多媒体帧进行编码的当前多媒体帧可称作为参考编码帧。参考编码帧进行解码时必须参考编码是的其他多媒体帧进行解码才能够完成数据解码。
示意性的,以流媒体码流为视频码流或图像码流为例,多媒体数据包对应的多媒体帧数据在编码时通常采用IPPP编码模式,即IPPP…IPPP…IPPP…编码模式,IPPP编码模式中的I帧为独立编码帧,独立编码帧在编码封装时不依赖其他帧,可独立解码还原多媒体帧,P帧为参考编码帧,参考编码帧编码需要参考其前一帧I帧或P帧,不能独立编码,解码时也需要参考其前一帧。
进一步的,获取第一数据包的编码类型可以对第一数据包中帧数据进行数据解析可得到编码类型。
S206:基于所述出队检测结果和所述第一数据包,从所述流媒体队列中确定目标数据包。
在一种可行的实施方式中,若出队检测结果为出队通过结果,则从所述流媒体队列中将所述第一数据包作为目标数据包;
在一种可行的实施方式中,若出队检测结果为出队不通过结果,则遍历流媒体队列中的至少一个第二数据包,基于第二数据包的数据编码类型确定目标数据包。
可以理解的,在出队检测结果为出队不通过结果时,即使将第一数据包作为目标数据包发送至若干第二客户端,第二客户端也无法直接进行数据解码,必须得获取第一数据包之前包序列号连续的数据包进行数据解码。此时第二客户端会高概率发送丢包反馈信息经服务端至第一客户端,在网络情况不佳、流媒体业务繁忙、拉流端频繁反馈丢包的情景,势必会导致推流端根据最差情况进行FEC(前向纠错)处理频繁产生冗余数据并下发用于丢包恢复,从而增加不必要的网络负载。基于此,服务端在出队检测结果为出队不通过结果的情况下,舍弃第一数据包,也即不将第一数据包作为目标数据包进行下发。以降低整个网络负载情况,改善流媒体应用状况,如保障基于流媒体的会议应用场景、视频直播场景、即时通讯场景等流媒体处理的稳定性。
进一步的,若出队检测结果为出队不通过结果,则服务端开始遍历流媒体队列中的至少一个第二数据包,基于第二数据包的数据编码类型来确定目标数据包。
可以理解的,服务端开始遍历流媒体队列中位于第一数据包之后若干第二数据包,通过获取第二数据包的数据编码类型来选择符合预期的目标数据包。
可选的,服务端执行所述基于所述至少一个第二数据包的数据编码类型确定目标数据包,可以是:
服务端确定各所述第二数据包的数据编码类型,获取所述数据编码类型为独立编码类型的目标数据包。
示意性的,各第二数据包的数据编码类型基于第一客户端的编码情况,可以是独立编码类型以及参考编码类型,在本说明书一个或多个实施例中,服务端在流媒体队列中筛选出位于第一数据包之后且编码类型为独立编码类型的第二数据包。
进一步的,若所述流媒体队列中存在第二数据包为独立编码类型,则将独立编码类型的第二数据包作为所述目标数据包,将该目标数据包发送至若干第二客户端。
可选的,若所述流媒体队列中存在所述目标数据包,也即流媒体队列中存在独立编码类型的目标数据包,则服务端可以将所述流媒体队列中位于所述目标数据包之前的第三数据包进行丢弃处理,也即将位于目标数据包之前的第三数据包从流媒体队列中清空。
在本说明书一个或多个实施例中,不选择参考编码类型的第二数据包作为目标数据包,考虑到参考编码类型的第二数据包下发至第二客户端,也无法对其进行包数据解码,无法解码出第二数据包所对应的多媒体帧数据,基于此,不将参考编码类型的第二数据包进行下发,来保障拉流端进行流媒体处理时的稳定性,也避免频繁产生重传请求,降低网络负载。
在一种可行的实施方式,实际应用场景下也会存在流媒体队列中不存在独立编码类型的目标数据包的情景,此时服务端可进一步进行数据处理,如下;
可选的,若所述流媒体队列中不存在所述目标数据包,也即在流媒体队列中不存在独立编码类型的数据包且第一数据包也不满足出队策略,则服务端可以向第一客户端发送针对所述目标数据包的数据包发送请求;
所述数据包发送请求用于向第一客户端请求可以独立解码的目标数据包,也即编码类型为独立编码类型的目标数据包。以便于第一客户端接收到针对目标数据包的数据包发送请求之后,可以发送满足出队策略的目标数据包。
可选的,若所述流媒体队列中不存在所述目标数据包,此时,流媒体队列中的任一数据包下发至第二客户端也无法数据解码,基于此服务端可以对所述流媒体队列进行队列重置处理,如将流媒体队列中的数据包清空,以节省服务端的数据资源消耗,同时也避免下发无法解码的数据包,以保障拉流端进行流媒体处理时的稳定性,也避免频繁产生重传请求,降低网络负载。
在一种可行的实施方式中,服务端确定出队检测结果为出队不通过结果之后,可以进行预设延时超时判断,判断是否超过预设延时,考虑到可能当前未收到可以用于恢复丢包的下一流媒体数据,在收到下一流媒体数据且下一流媒体数据携带的冗余数据包和流媒体数据包可还原出的参考丢失数据包,参考丢失数据包有可能属于队首的第一数据包的包序列号之前的数据包,而该参考丢失数据包可能满足队列出队策略,基于此可基于预设延时超时判断。具体而言,在确定出队检测结果为出队不通过结果,
服务端在执行所述遍历所述流媒体队列中的至少一个第二数据包之前,还可以执行以下步骤:
服务端获取针对所述流媒体数据的目标传输延时,获取针对第三数据包的等待时长,所述第三数据包为满足所述队列出队策略且位于所述第一数据包之前的数据包。
所述目标传输延时用于在确定出队检测结果为出队不通过结果之后,对当前的流媒体数据进行预设延时超时判断,通过获取针对第三数据包的等待时长,所述第三数据包为满足所述队列出队策略且位于所述第一数据包之前的数据包,也即在第一数据包的包序列号之前的第三数据包,该第三数据包满足与第一数据包的包序列号连续,或,第三数据包为第一数据包之前最近时间间隔的独立编码类型的数据包,最近时间间隔可理解为在第三数据包与第一数据包对应多媒体帧数据间隔内不存在独立编码类型的数据包。
所述目标传输延时也即用于预设延时超时判断的延时阈值。
进一步的,目标传输延时也可称作QoS(服务质量)队列超时,目标传输延时可以根据网络抖动计算超时时间,如下:
t=jitter+n*rtt(n大于或等于0),
其中,t为目标传输延时,jitter为时间抖动,rtt为网络时延,n为设置的重传周期数量(n可以根据业务实时性要求设定)。
可以理解的,设置目标传输延时也即QoS超时考虑在一些FEC(前向纠错)无法恢复的情况下,通过重传机制来恢复丢包。n大于或等于0主要是考虑n个重传周期仍无法恢复就重置QoS队列并向推流端(也即第一客户端)请求关键帧,关键帧通常为独立编码类型的多媒体帧数据。
所述等待时长从接收当前的流媒体数据的时刻开始所累计的时间。
若所述等待时长小于所述目标传输延时,对所述第三数据包进行延时等待处理;
进一步的,若在目标传输延时内,接收到了下一流媒体数据包,且基于下一流媒体数据包中的流媒体数据包和冗余数据包还原得到了第三数据包,则判断该第三数据包是否满足队列出队策略,若满足队列出队策略,则将第三数据包作为目标数据包。
若所述等待时长大于或等于所述目标传输延时,执行遍历所述流媒体队列中的至少一个第二数据包的步骤。
S207:获取已发送至所述第二客户端的历史数据包的历史包序列号;
S208:获取所述历史包序列号的下一序列号,基于所述下一序列号对所述目标数据包进行序列号重置处理。
可以理解的,服务端在从流媒体队列中确定出队的目标数据包之后,考虑到当前出队的目标数据包的包序列号可能与上一发生至第二客户端的历史数据包的历史包序列号不连续。
示意性的,若目标数据包的包序列号与上一历史数据包的历史包序列号不连续,会触发第二客户端的在网络情况不佳、流媒体业务繁忙、拉流端频繁反馈丢包的情景进行重传请求,但实际上第二客户端基于目标数据包进行流媒体处理可以保障稳定,以避免增加不必要的网络负载。
可以理解的,服务端可以获取已发送至所述第二客户端的历史数据包的历史包序列号,获取所述历史包序列号的下一序列号,所述下一序列号也即在历史包序列号的基础上累加一个单位数值,然后基于所述目标包序列号对所述目标数据包进行序列号重置处理。
可以理解的,也即将下一序列号作为目标数据包的包序列号,也即将出队的数据包按照预设数据传输协议如rtp协议的序列号重新设置成连续的序列号,并转发给各个作为拉流端的第二客户端。
服务端转发第一客户端的数据包时经过QoS队列进行规整,通过诸如完整性和连续性判定等队列出队策略对数据包对应帧数据进行出队检测保证第二客户端可以成功解码出队的数据包;在一些实施例中,重新对每一个出队的数据包设置包序列号(如rtp序列号),保证下行码流数据包的序列号连续,一方面,避免频繁触发若干第二客户端的Nack重传请求机制,降低整个数据传输链路的负载。
S209:将目标数据包发送至至少一个第二客户端进行流媒体处理。
具体可参考本说明书涉及的其他实施例的方法步骤,此处不再赘述。
S210:接收第二客户端发送的第二数据丢包率;
在本申请一个或多个实施例中,第二客户端在整个流媒体传输过程中,实时或周期性检测第二数据丢包率;第二客户端将第二数据丢包率发送至服务端,服务端即可接收到第二客户端发送的第二数据丢包率;
在本申请一个或多个实施例中,所述第二数据丢包率通常用于服务端进行前向纠错编码处理生成目标冗余数据包,并将包含流媒体数据包和目标冗余数据包的流媒体数据发送至服务端。
所述第二数据丢包率是指服务端至第二端之间的拉流路径的丢包率。
S211:基于所述第二数据丢包率对所述目标数据包进行前向纠错编码处理生成目标冗余数据包;
示意性的,第二客户端向服务端反馈第二数据丢包率,服务端基于第二数据丢包率动态调整FEC编码冗余度。例如在第二数据丢包率较高的情况下,服务端可以使用较高的编码冗余度进行冗余数据包编码;又例如在第二数据丢包率较小的情况下,服务端可以使用较低的编码冗余度进行冗余数据包编码;从而基于实际网络传输情况,节省冗余数据占用网络带宽。
示意性的,服务端可以使用相关技术中的自适应FEC算法基于第二数据丢包率动态调整FEC编码冗余度,基于目标数据包和编码冗余度进行FEC编码,得到目标冗余数据包;
可选的,自适应FEC算法可以是多播自适应FEC算法(MA-FEC)。
在本申请一个或多个实施例中,在实际应用场景为WebRTC(网页即时通信)场景时,FEC(前向纠错)算法包括但不限于UlpFEC和FlexFEC。
在本申请一个或多个实施例中,流媒体队列可称作为服务质量队列,也即QoS队列,也即对流媒体数据进行QoS处理所涉及的流媒体队列。通过流媒体队列对接收到的流媒体数据包和/或恢复的丢失数据包进行QoS处理后才确定待出队的目标数据包,同时基于第二数据丢包率调整编码冗余度进行冗余数据包编码,以生成目标冗余数据包。
可以理解的,通过设置流媒体队列进行QoS处理以及确定出队的目标数据包,服务端相对于实现了对“第一客户端至服务端”对应推流路径的传输控制,服务端在进行下行对目标数据包的转发时可降低推流路径的丢包影响,不需要关注传输至第二客户端的每个出队数据包与流媒体原始传输顺序是否一致,服务端仅仅关注于“目标数据包对于第二客户端可成功解码”即可,实现了整个流媒体传输过程的负载优化。而针对于第二客户端反馈的第二数据丢包率可以基于“流媒体队列以及队列出队策略”转化为反馈“服务端至第二客户端”对应拉流路径的网络丢包情况,而不是推流端至拉流端的网络丢包情况,实现了对流媒体网络传输过程的细化和精准检测,这样对网络丢包情况的反馈也更加准确。服务端可以根据每个第二客户端反馈的第二数据丢包单独进行FEC(前向纠错)编码处理,为每个第二客户端生成目标冗余数据包,以保障拉流端的流媒体处理的稳定性,也提高了下行抗丢包能力,降低了数据延时。
S212:将所述目标数据包以及所述目标冗余数据包发送至至少一个第二客户端,所述目标冗余数据包用于指示所述第二客户端基于所述目标数据包以及所述目标冗余数据进行流媒体处理。
可选的,服务端可以将所述目标数据包以及所述目标冗余数据包作为一个包组的拉流数据发送至相应的第二客户端;
在本申请一个或多个实施例中,数据转发时经过流媒体队列,基于队列出队策略判定,且重新设置包序列号,保证下行码流包序列号连续,在服务端确定目标数据包的同时就可以进行下行FEC(前向纠错)编码,提高下行抗丢包能力,降低延时。并且因为发送给拉流端的数据包都是是连续序列号,拉流端反馈的第二数据丢包率实际是诸如媒体服务器等服务端到拉流端的网络丢包情况,而不是推流端到拉流端的整个网络传输过程的丢包。对网络的丢包反馈更加准确,诸如媒体服务器等服务端可以根据各个拉流端反馈的网络丢包情况对单独进行下行的FEC(前向纠错)处理,抵抗丢包效果更好且网络负载更低。
可以理解的,实际网络传输环境中,每个第二客户端反馈的第二数据丢包率可能不相同,也可能部分相同或全部相同,基于此,服务端可以针对每个第二客户端反馈的第二数据丢包率生成相应的目标冗余数据包,可以理解的第二客户端反馈的第二数据丢包率不同,则目标冗余数据包不同;因此,服务端可以将所述目标数据包以及所述目标冗余数据包作为一个包组的拉流数据发送至相应的第二客户端。
可选的,服务端可以将所述目标数据包以及所述目标冗余数据包依次发送至相应的第二客户端,也即不同时发送目标数据包以及所述目标冗余数据包。
可以理解的,第二客户端在接收到目标数据包以及目标冗余数据包之后,可以检测是否产生数据包丢包,如基于所有接收到的多媒体数据包(非冗余数据包)的包序列号进行判断,如产生数据包丢包,
可以理解的,若产生媒体数据包丢包,也即已出队的历史数据包丢包,第二客户端可以对目标数据包以及目标冗余数据包进行FEC(前向纠错)解码处理,得到恢复的数据包,然后可基于目标数据包和恢复的数据包进行流媒体解码播放。例如,以数据包为视频数据包为例,当视频编码采用H.264视频编码算法时,视频解码相应采用H.264视频解码算法,也即可采用H.264视频解码算法对目标数据包和恢复的数据包分别对应的媒体帧进行视频解码播放。
在本申请实施例中,在服务端就基于冗余数据包恢复丢失数据包实现数据恢复前置,同时基于流媒体队列对乱序的流媒体数据包、丢失数据包等数据包进行分发规整,通过流媒体队列确定每次出队的目标数据包后进行包序列号重置更新并进行下发,可以在复杂网络传输场景下具备更好的抗丢包能力,保障数据传输稳定,降低了端到端的传输时延;以及,基于队列出队策略来保证出队的目标数据包拉流端可以成功数据解码,避免频繁重传请求,改善网络传输状况从而确保流媒体正常解码以及播放;以及实现了支持分段FEC前向纠错功能,在数据转发时可以对“推流端发送码流到服务端”、“服务端发送码流到拉流端”两段信道进行FEC前向纠错以及精准信道反馈,更大程度抵抗网络丢包。
在一个实施例中,如图4所示,特提出了一种数据处理方法,该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的数据处理装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。所述数据处理装置可以为第一客户端。
具体的,该数据处理方法包括:
S301:生成至少一个流媒体数据;
在一种具体的实施场景中,第一客户端响应于第二客户端或服务端的RTSP(RealTime Streaming Protocol,实时流传输协议)地址访问请求,开始采集多媒体帧数据,每完成一帧多媒体数据的采集,即对采集到的该帧多媒体数据进行多媒体编码(如视频编码),得到该帧媒体帧;
可以理解的,第一客户端按照预设传输协议(如RTP协议),将该帧媒体帧封装成流媒体数据包;
在一种可行的实施方式中,第一客户端可直接将流媒体数据包作为当前的流媒体数据。在整个数据传输过程中,服务端会连续接收到第一客户端发送的若干流媒体数据
在一种可行的实施方式中,由于网络环境的不确定性,传输的流媒体数据可能有所丢失,也即流媒体数据包有可能丢失,基于此,第一客户端传输的流媒体数据中可包括流媒体数据包以及冗余数据包。
可以理解的,第一客户端可以对封装得到的流媒体数据包进行FEC冗余编码,将得到冗余数据包;将封装得到的流媒体数据包以及编码得到的冗余数据包组成一个包组作为流媒体数据;在整个数据传输过程中,服务端会连续接收到第一客户端发送的若干流媒体数据
可选的,预设传输协议可以为RTP,即包组内的流媒体数据包以及冗余数据包均为RTP数据包。
S302:向服务端发送所述流媒体数据,所述流媒体数据用于指示所述服务端将流媒体数据包和/或丢失数据包存入流媒体队列,并从所述流媒体队列中确定出队的目标数据包以及将所述目标数据包发送至至少一个第二客户端进行流媒体处理;
在本说明书一个或多个实施例中,所述丢失数据包为在所述流媒体数据中存在冗余数据包和流媒体数据包时基于所述冗余数据包和所述流媒体数据包生成的数据包。
在本说明书一个或多个实施例中,第一客户端将流媒体数据发送至服务端。
根据一些实施例中,服务端接收第一客户端发送的至少一个流媒体数据之后,可以将流媒体数据中的流媒体数据包存入流媒体队列,以及在流媒体数据中存在冗余数据包,基于流媒体数据包和冗余数据包生成丢失数据包,将丢失数据包存入流媒体队列;服务端然后从流媒体队列中确定出队的目标数据包,将目标数据包发送至至少一个第二客户端进行流媒体处理;
在一种可行的实施方式中,服务端还可以基于目标数据包生成目标冗余数据包,将目标数据包生成目标冗余数据包发送至至少一个第二客户端进行流媒体处理;
示意性的,第二客户端可根据接收到的包组的目标数据包和目标冗余数据包进行相应的FEC解码处理以及媒体帧解码处理,将并解码得到的媒体帧进行播放。
在本申请一个或多个实施例中,第一客户端可以辅助在服务端就基于冗余数据包恢复丢失数据包实现数据恢复前置,同时基于流媒体队列对乱序的流媒体数据包、丢失数据包等数据包进行分发规整,通过流媒体队列确定每次出队的目标数据包后进行包序列号重置更新并进行下发,可以在复杂网络传输场景下具备更好的抗丢包能力,保障数据传输稳定,降低了端到端的传输时延;以及,基于队列出队策略来保证出队的目标数据包拉流端可以成功数据解码,避免频繁重传请求,改善网络传输状况从而确保流媒体正常解码以及播放;以及实现了支持分段FEC前向纠错功能,在数据转发时可以对“推流端发送码流到服务端”、“服务端发送码流到拉流端”两段信道进行FEC前向纠错以及精准信道反馈,更大程度抵抗网络丢包。
在一个实施例中,如图5所示,特提出了一种数据处理方法,该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的数据处理装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。所述数据处理装置可以为第二客户端。
具体的,该数据处理方法包括:
S401:接收服务端从流媒体队列中确定出队的目标数据包;所述流媒体队列包含所述服务端接收第一客户端发送的流媒体数据后存入的流媒体数据包和/或丢失数据包;其中,所述丢失数据包为在所述流媒体数据中存在冗余数据包和流媒体数据包时基于所述冗余数据包和所述流媒体数据包生成的数据包。
在本说明书一个或多个实施例中,第一客户端可以将至少一个流媒体数据发送至服务端;服务端接收流媒体数据之后,可以将流媒体数据中的流媒体数据包存入流媒体队列,以及在流媒体数据中存在冗余数据包,基于流媒体数据包和冗余数据包生成丢失数据包,将丢失数据包存入流媒体队列;服务端然后从流媒体队列中确定出队的目标数据包,将目标数据包发送至至少一个第二客户端进行流媒体处理;此时第二客户端可以接收到服务端从流媒体队列中确定出队的目标数据包。
S402:基于所述目标数据包进行流媒体处理。
可以理解的,第二客户端接收到目标数据包之后,对目标数据包进行封装解码处理得到媒体帧(如视频帧、图像帧、音频帧),然后对媒体帧进行流媒体解码播放。例如,以目标数据包为视频数据包为例,当视频编码采用H.264视频编码算法时,媒体帧解码播放相应采用H.264视频解码算法,也即可采用H.264视频解码算法对目标数据包对应的媒体帧进行视频解码播放。
在本申请一个或多个实施例中,在服务端就基于冗余数据包恢复丢失数据包实现数据恢复前置,同时基于流媒体队列对乱序的流媒体数据包、丢失数据包等数据包进行分发规整,通过流媒体队列确定每次出队的目标数据包后进行包序列号重置更新并进行下发,可以在复杂网络传输场景下具备更好的抗丢包能力,保障数据传输稳定,降低了端到端的传输时延;以及,基于队列出队策略来保证出队的目标数据包拉流端可以成功数据解码,避免频繁重传请求,改善网络传输状况从而确保流媒体正常解码以及播放;以及实现了支持分段FEC前向纠错功能,在数据转发时可以对“推流端发送码流到服务端”、“服务端发送码流到拉流端”两段信道进行FEC前向纠错以及精准信道反馈,更大程度抵抗网络丢包。
请参见图6,为本说明书提供的一种数据处理系统的系统场景示意图。如图6所示,所述数据处理系统至少可以包括第一客户端100、服务端110以及第二客户端集群。
第一客户端100可以是具备通信功能的电子设备,该电子设备包括但不限于:可穿戴设备、手持设备、个人电脑、平板电脑、车载设备、智能手机、计算设备或连接到无线调制解调器的其它处理设备等。在不同的网络中电子设备可以叫做不同的名称,例如:用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置、蜂窝电话、无绳电话、个人数字处理(personaldigital assistant,PDA)、5G网络或未来演进网络中的电子设备等。
所述服务端110可以是单独的服务器设备,例如:机架式、刀片、塔式、或者机柜式的服务器设备,或采用工作站、大型计算机等具备较强计算能力硬件设备;也可以是采用多个服务器组成的服务器集群,所述服务集群中的各服务器可以是以对称方式组成的,其中每台服务器在事务链路中功能等价、地位等价,各服务器均可单独对外提供服务,所述单独提供服务可以理解为无需另外的服务器的辅助。
所述第二客户端集群可以包括至少一个客户端,如图6所示,具体包括用户对应的客户端1、用户对应的客户端2、…、用户对应的客户端n,n为大于0的整数。
第二客户端集群中的各第二客户端可以是具备通信功能的电子设备,该电子设备包括但不限于:可穿戴设备、手持设备、个人电脑、平板电脑、车载设备、智能手机、计算设备或连接到无线调制解调器的其它处理设备等。在不同的网络中电子设备可以叫做不同的名称,例如:用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置、蜂窝电话、无绳电话、个人数字处理(personal digital assistant,PDA)、5G网络或未来演进网络中的电子设备等。
在本说明书的一个或多个实施例中,第一客户端100、服务端110以及第二客户端集群彼此之间可建立通信连接,基于该通信连接完成数据处理过程中数据的交互;
第一客户端100、服务端110以及第二客户端集群彼此之间通过网络建立通信连接进行交互通信,其中,网络可以是无线网络,也可以是有线网络,无线网络包括但不限于蜂窝网络、无线局域网、红外网络或蓝牙网络,有线网络包括但不限于以太网、通用串行总线(universal serial bus,USB)或控制器局域网络。在说明书一个或多个实施例中,使用包括超文本标记语言(Hyper Text Mark-up Language,HTML)、可扩展标记语言(ExtensibleMarkup Language,XML)等的技术和/或格式来代表通过网络交换的数据(如目标压缩包)。此外还可以使用诸如安全套接字层(Secure Socket Layer,SSL)、传输层安全(TransportLayer Security,TLS)、虚拟专用网络(Virtual Private Network,VPN)、网际协议安全(Internet Protocol Security,IPsec)等常规加密技术来加密所有或者一些链路。在另一些实施例中,还可以使用定制和/或专用数据通信技术取代或者补充上述数据通信技术。
请参考图7,为本说明书提供的一种数据处理系统涉及的流媒体数据处理的示意图。
S701、第一客户端100可以生成至少一个流媒体数据;
S702、第一客户端100向服务端110发送至少一个所述流媒体数据;
可选的,服务端110在在流媒体传输过程中,可以实时或周期性检测第一数据丢包率;将第一数据丢包率发送至第一客户端100;进一步的,服务端110可以发送包含第一数据丢包率的网络传输信息(如基于实时传输控制协议的rtcp反馈信息)至第一客户端100。
可选的,第一客户端100可以根据所述第一数据丢包率动态调整FEC编码冗余度对当前的流媒体数据包进行前向纠错编码处理生成冗余数据包,第一客户端100并将包含流媒体数据包和所述冗余数据包的流媒体数据发送至服务端110。
S703、服务端110接收第一客户端100发送的至少一个流媒体数据;
S704、服务端110将流媒体数据中的流媒体数据包存入流媒体队列;
S705、若流媒体数据中存在冗余数据包,服务端110可以基于流媒体数据包和冗余数据包进行前向纠错解码处理生成丢失数据包,将丢失数据包插入流媒体队列。
S706、服务端110可以从流媒体队列中确定出队的目标数据包;
示意性的,服务端110设置有队列出队策略,服务端110可以基于队列出队策略从流媒体队列中确定目标数据包,所述队列出队策略用于确定在第二客户端进行数据包解码时解码状态为成功解码状态的所述目标数据包。
S707-A、服务端110可以直接将目标数据包发送至至少一个第二客户端,如第二客户端1、第二客户端2...第二客户端n;
进一步的,服务端110可能接收到第二客户端发送的第二数据丢包率;第二客户端在整个流媒体传输过程中,实时或周期性检测第二数据丢包率;第二客户端将第二数据丢包率发送至服务端110,服务端110即可接收到第二客户端发送的第二数据丢包率;
示意性的,第二客户端可以发送包含第二数据丢包率的网络传输信息(如基于实时传输控制协议的rtcp反馈信息)至服务端110。
S707-B、服务端110可以基于第二数据丢包率对所述目标数据包进行前向纠错编码处理生成目标冗余数据包,将所述目标数据包(media)以及所述目标冗余数据包(fec)发送至至少一个第二客户端,如第二客户端1、第二客户端2...第二客户端n;
S708、第二客户端可以基于所述目标数据包和/或目标冗余数据包进行流媒体处理。
本说明书所提供的数据处理系统实施例与一个或多个实施例中的所述数据处理方法属于同一构思,数据处理系统实施例其体现实现过程可详见上述的至少一个方法实施例,这里不再赘述。
在本申请一个或多个实施例中,在服务端就基于冗余数据包恢复丢失数据包实现数据恢复前置,同时基于流媒体队列对乱序的流媒体数据包、丢失数据包等数据包进行分发规整,通过流媒体队列确定每次出队的目标数据包后进行包序列号重置更新并进行下发,可以在复杂网络传输场景下具备更好的抗丢包能力,保障数据传输稳定,降低了端到端的传输时延;以及,基于队列出队策略来保证出队的目标数据包拉流端可以成功数据解码,避免频繁重传请求,改善网络传输状况从而确保流媒体正常解码以及播放;以及实现了支持分段FEC前向纠错功能,在数据转发时可以对“推流端发送码流到服务端”、“服务端发送码流到拉流端”两段信道进行FEC前向纠错以及精准信道反馈,更大程度抵抗网络丢包。
下面将结合图8,对本申请实施例提供的数据处理装置进行详细介绍。需要说明的是,图8所示的数据处理装置,用于执行本申请所示方法实施例的方法步骤,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请所示的方法实施例。
请参见图8,其示出本申请实施例的数据处理装置的结构示意图。该数据处理装置1可以通过软件、硬件或者两者的结合实现成为用户终端的全部或一部分。根据一些实施例,该数据处理装置1包括数据接收模块11、数据处理模块12和数据发送模块13,具体用于:
数据接收模块11,用于接收第一客户端发送的至少一个流媒体数据;
数据处理模块12,用于将所述流媒体数据中的流媒体数据包存入流媒体队列;以及若所述流媒体数据中存在冗余数据包,基于所述流媒体数据包和冗余数据包生成丢失数据包,将所述丢失数据包存入所述流媒体队列;
数据发送模块13,用于从所述流媒体队列中确定出队的目标数据包,将所述目标数据包发送至至少一个第二客户端进行流媒体处理。
可选的,所述装置1,还用于:
检测第一数据丢包率;
将所述第一数据丢包率发送至第一客户端,所述第一数据丢包率用于指示所述第一客户端进行前向纠错编码处理生成冗余数据包,并将包含流媒体数据包和所述冗余数据包的流媒体数据发送至服务端。
可选的,所述数据处理模块12,具体用于:
确定所述丢失数据包的队列插入位置,基于所述队列插入位置将所述丢失数据包插入至所述流媒体队列。
可选的,所述数据处理模块12,具体用于:
确定所述丢失数据包的第一包序列号,获取所述流媒体队列中所有数据包的第二包序列号;
基于所述第一包序列号以及所述第二包序列号确定队列插入位置。
可选的,所述数据发送模块13,具体用于:
基于队列出队策略从所述流媒体队列中确定目标数据包,所述队列出队策略用于确定在第二客户端进行数据包解码时解码状态为成功解码状态的所述目标数据包。
可选的,所述数据发送模块13,具体用于:
获取所述流媒体队列中处于队首的第一数据包,基于队列出队策略对所述第一数据包进行出队检测,得到出队检测结果;
基于所述出队检测结果和所述第一数据包,从所述流媒体队列中确定目标数据包。
可选的,所述数据发送模块13,具体用于:
对所述第一数据包进行包完整性检测以及包连续性检测得到第一检测结果;或,
对所述第一数据包进行独立编码检测得到第二检测结果。
可选的,所述数据发送模块13,具体用于:
若所述出队检测结果为出队通过结果,则从所述流媒体队列中将所述第一数据包作为目标数据包;
若所述出队检测结果为出队不通过结果,则遍历所述流媒体队列中的至少一个第二数据包,基于所述第二数据包的数据编码类型确定目标数据包。
可选的,所述数据发送模块13,具体用于:
确定各所述第二数据包的数据编码类型,获取所述数据编码类型为独立编码类型的目标数据包。
可选的,所述数据发送模块13,具体用于:
若所述流媒体队列中不存在所述目标数据包,则向所述第一客户端发送针对所述目标数据包的数据包发送请求;或,
若所述流媒体队列中不存在所述目标数据包,则对所述流媒体队列进行队列重置处理;或,
若所述流媒体队列中存在所述目标数据包,则将所述流媒体队列中位于所述目标数据包之前的第三数据包进行丢弃处理。
可选的,所述数据发送模块13,具体用于:
获取针对所述流媒体数据的目标传输延时,获取针对第三数据包的等待时长,所述第三数据包为满足所述队列出队策略且位于所述第一数据包之前的数据包。
若所述等待时长小于所述目标传输延时,对所述第三数据包进行延时等待处理;
若所述等待时长大于或等于所述目标传输延时,执行遍历所述流媒体队列中的至少一个第二数据包的步骤。
可选的,所述数据发送模块13,具体用于:
获取已发送至所述第二客户端的历史数据包的历史包序列号;
获取所述历史包序列号的下一序列号,基于所述下一序列号对所述目标数据包进行序列号重置处理。
可选的,所述装置1还用于:
接收第二客户端发送的第二数据丢包率;
基于所述第二数据丢包率对所述目标数据包进行前向纠错编码处理生成目标冗余数据包;
所述目标数据包发送至至少一个第二客户端,包括:
将所述目标数据包以及所述目标冗余数据包发送至至少一个第二客户端,所述目标冗余数据包用于指示所述第二客户端基于所述目标数据包以及所述目标冗余数据进行流媒体处理。
需要说明的是,上述实施例提供的数据处理装置在执行数据处理方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请一个或多个实施例中,在服务端就基于冗余数据包恢复丢失数据包实现数据恢复前置,同时基于流媒体队列对乱序的流媒体数据包、丢失数据包等数据包进行分发规整,通过流媒体队列确定每次出队的目标数据包后进行包序列号重置更新并进行下发,可以在复杂网络传输场景下具备更好的抗丢包能力,保障数据传输稳定,降低了端到端的传输时延;以及,基于队列出队策略来保证出队的目标数据包拉流端可以成功数据解码,避免频繁重传请求,改善网络传输状况从而确保流媒体正常解码以及播放;以及实现了支持分段FEC前向纠错功能,在数据转发时可以对“推流端发送码流到服务端”、“服务端发送码流到拉流端”两段信道进行FEC前向纠错以及精准信道反馈,更大程度抵抗网络丢包。
请参见图9,其示出本申请实施例的数据处理装置的结构示意图。该数据处理装置2可以通过软件、硬件或者两者的结合实现成为用户终端的全部或一部分。根据一些实施例,该数据处理装置2包括数据生成模块21和数据发送模块22,具体用于:
数据生成模块21,用于生成至少一个流媒体数据;
数据发送模块22,用于向服务端发送所述流媒体数据,所述流媒体数据用于指示所述服务端将流媒体数据包和/或丢失数据包存入流媒体队列,并从所述流媒体队列中确定出队的目标数据包以及将所述目标数据包发送至至少一个第二客户端进行流媒体处理;
其中,所述丢失数据包为在所述流媒体数据中存在冗余数据包和流媒体数据包时基于所述冗余数据包和所述流媒体数据包生成的数据包。
需要说明的是,上述实施例提供的数据处理装置在执行数据处理方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请一个或多个实施例中,在服务端就基于冗余数据包恢复丢失数据包实现数据恢复前置,同时基于流媒体队列对乱序的流媒体数据包、丢失数据包等数据包进行分发规整,通过流媒体队列确定每次出队的目标数据包后进行包序列号重置更新并进行下发,可以在复杂网络传输场景下具备更好的抗丢包能力,保障数据传输稳定,降低了端到端的传输时延;以及,基于队列出队策略来保证出队的目标数据包拉流端可以成功数据解码,避免频繁重传请求,改善网络传输状况从而确保流媒体正常解码以及播放;以及实现了支持分段FEC前向纠错功能,在数据转发时可以对“推流端发送码流到服务端”、“服务端发送码流到拉流端”两段信道进行FEC前向纠错以及精准信道反馈,更大程度抵抗网络丢包。
请参见图10,其示出本申请实施例的数据处理装置的结构示意图。该数据处理装置3可以通过软件、硬件或者两者的结合实现成为用户终端的全部或一部分。根据一些实施例,该数据处理装置3包括数据接收模块31和数据处理模块32,具体用于:
数据接收模块31,用于接收服务端从流媒体队列中确定出队的目标数据包;所述流媒体队列包含所述服务端接收第一客户端发送的流媒体数据后存入的流媒体数据包和/或丢失数据包;其中,所述丢失数据包为在所述流媒体数据中存在冗余数据包和流媒体数据包时基于所述冗余数据包和所述流媒体数据包生成的数据包。
数据处理模块32,用于基于所述目标数据包进行流媒体处理。
需要说明的是,上述实施例提供的数据处理装置在执行数据处理方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请一个或多个实施例中,在服务端就基于冗余数据包恢复丢失数据包实现数据恢复前置,同时基于流媒体队列对乱序的流媒体数据包、丢失数据包等数据包进行分发规整,通过流媒体队列确定每次出队的目标数据包后进行包序列号重置更新并进行下发,可以在复杂网络传输场景下具备更好的抗丢包能力,保障数据传输稳定,降低了端到端的传输时延;以及,基于队列出队策略来保证出队的目标数据包拉流端可以成功数据解码,避免频繁重传请求,改善网络传输状况从而确保流媒体正常解码以及播放;以及实现了支持分段FEC前向纠错功能,在数据转发时可以对“推流端发送码流到服务端”、“服务端发送码流到拉流端”两段信道进行FEC前向纠错以及精准信道反馈,更大程度抵抗网络丢包。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述所示方法实施例的所述数据处理方法,具体执行过程可以参见本说明书所示一个或多个实施例的具体说明,在此不进行赘述。
本申请还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行如上述所示方法实施例的所述数据处理方法,具体执行过程可以参见本说明书所示一个或多个实施例的具体说明,在此不进行赘述。
请参见图11,为本申请实施例提供了一种电子设备的结构示意图。如图11所示,所述车辆遥控设备1000可以包括:至少一个处理器1001,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。
其中,通信总线1002用于实现这些组件之间的连接通信。
其中,用户接口1003可以包括显示屏(Display)、摄像头(Camera),可选用户接口1003还可以包括标准的有线接口、无线接口。
其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种借口和线路连接整个服务器1000内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行服务器1000的各种功能和处理数据。可选的,处理器1001可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1001可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块芯片进行实现。
其中,存储器1005可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器1005包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图11所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及应用程序。
在图11所示的车辆遥控设备1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的应用程序,并具体执行以下操作:
接收第一客户端发送的至少一个流媒体数据,将所述流媒体数据中的流媒体数据包存入流媒体队列;
若所述流媒体数据中存在冗余数据包,基于所述流媒体数据包和冗余数据包生成丢失数据包,将所述丢失数据包存入所述流媒体队列;
从所述流媒体队列中确定出队的目标数据包,将所述目标数据包发送至至少一个第二客户端进行流媒体处理。
在一个实施例中,所述处理器1001在执行所述数据处理方法时,还执行以下步骤:
检测第一数据丢包率;
将所述第一数据丢包率发送至第一客户端,所述第一数据丢包率用于指示所述第一客户端进行前向纠错编码处理生成冗余数据包,并将包含流媒体数据包和所述冗余数据包的流媒体数据发送至服务端。
在一个实施例中,所述处理器1001在执行所述将所述丢失数据包存入所述流媒体队列时,具体执行以下步骤:
确定所述丢失数据包的队列插入位置,基于所述队列插入位置将所述丢失数据包插入至所述流媒体队列。
在一个实施例中,所述处理器1001在执行所述确定所述丢失数据包的队列插入位置时,具体执行以下步骤:
确定所述丢失数据包的第一包序列号,获取所述流媒体队列中所有数据包的第二包序列号;
基于所述第一包序列号以及所述第二包序列号确定队列插入位置。
在一个实施例中,所述处理器1001在执行所述从所述流媒体队列中确定目标数据包,包括:
基于队列出队策略从所述流媒体队列中确定目标数据包,所述队列出队策略用于确定在第二客户端进行数据包解码时解码状态为成功解码状态的所述目标数据包。
在一个实施例中,所述处理器1001在执行所述基于队列出队策略从所述流媒体队列中确定目标数据包时,具体执行以下步骤:
获取所述流媒体队列中处于队首的第一数据包,基于队列出队策略对所述第一数据包进行出队检测,得到出队检测结果;
基于所述出队检测结果和所述第一数据包,从所述流媒体队列中确定目标数据包。
在一个实施例中,所述处理器1001在执行所述基于队列出队策略对所述第一数据包进行出队检测,得到出队检测结果时,具体执行以下步骤:
对所述第一数据包进行包完整性检测以及包连续性检测得到第一检测结果;或,
对所述第一数据包进行独立编码检测得到第二检测结果。
在一个实施例中,所述处理器1001在执行所述基于所述出队检测结果和所述第一数据包,从所述流媒体队列中确定目标数据包时,具体执行以下步骤:若所述出队检测结果为出队通过结果,则从所述流媒体队列中将所述第一数据包作为目标数据包;
若所述出队检测结果为出队不通过结果,则遍历所述流媒体队列中的至少一个第二数据包,基于所述第二数据包的数据编码类型确定目标数据包。
在一个实施例中,所述处理器1001在执行所述基于所述至少一个第二数据包的数据编码类型确定目标数据包时,具体执行以下步骤:
确定各所述第二数据包的数据编码类型,获取所述数据编码类型为独立编码类型的目标数据包。
在一个实施例中,所述处理器1001在执行所述数据处理方法时,还执行以下步骤:
若所述流媒体队列中不存在所述目标数据包,则向所述第一客户端发送针对所述目标数据包的数据包发送请求;或,
若所述流媒体队列中不存在所述目标数据包,则对所述流媒体队列进行队列重置处理;或,
若所述流媒体队列中存在所述目标数据包,则将所述流媒体队列中位于所述目标数据包之前的第三数据包进行丢弃处理。
在一个实施例中,所述处理器1001在执行所述遍历所述流媒体队列中的至少一个第二数据包之前,还执行以下步骤:
获取针对所述流媒体数据的目标传输延时,获取针对第三数据包的等待时长,所述第三数据包为满足所述队列出队策略且位于所述第一数据包之前的数据包。
若所述等待时长小于所述目标传输延时,对所述第三数据包进行延时等待处理;
若所述等待时长大于或等于所述目标传输延时,执行遍历所述流媒体队列中的至少一个第二数据包的步骤。
在一个实施例中,所述处理器1001在执行所述从所述流媒体队列中确定出队的目标数据包之后,还执行以下步骤:
获取已发送至所述第二客户端的历史数据包的历史包序列号;
获取所述历史包序列号的下一序列号,基于所述下一序列号对所述目标数据包进行序列号重置处理。
在一个实施例中,所述处理器1001在执行所述数据处理方法时,还执行以下步骤:
接收第二客户端发送的第二数据丢包率;
基于所述第二数据丢包率对所述目标数据包进行前向纠错编码处理生成目标冗余数据包;
所述目标数据包发送至至少一个第二客户端,包括:
将所述目标数据包以及所述目标冗余数据包发送至至少一个第二客户端,所述目标冗余数据包用于指示所述第二客户端基于所述目标数据包以及所述目标冗余数据进行流媒体处理。
在本申请一个或多个实施例中,在服务端就基于冗余数据包恢复丢失数据包实现数据恢复前置,同时基于流媒体队列对乱序的流媒体数据包、丢失数据包等数据包进行分发规整,通过流媒体队列确定每次出队的目标数据包后进行包序列号重置更新并进行下发,可以在复杂网络传输场景下具备更好的抗丢包能力,保障数据传输稳定,降低了端到端的传输时延;以及,基于队列出队策略来保证出队的目标数据包拉流端可以成功数据解码,避免频繁重传请求,改善网络传输状况从而确保流媒体正常解码以及播放;以及实现了支持分段FEC前向纠错功能,在数据转发时可以对“推流端发送码流到服务端”、“服务端发送码流到拉流端”两段信道进行FEC前向纠错以及精准信道反馈,更大程度抵抗网络丢包。
请参见图12,为本申请实施例提供了另一种电子设备的结构示意图。如图12所示,所述电子设备2000可以包括:至少一个处理器2001,至少一个网络接口2004,用户接口2003,存储器2005,至少一个通信总线2002。
其中,通信总线2002用于实现这些组件之间的连接通信。
其中,用户接口2003可以包括显示屏(Display)、摄像头(Camera),可选用户接口2003还可以包括标准的有线接口、无线接口。
其中,网络接口2004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器2001可以包括一个或者多个处理核心。处理器2001利用各种借口和线路连接整个服务器2000内的各个部分,通过运行或执行存储在存储器2005内的指令、程序、代码集或指令集,以及调用存储在存储器2005内的数据,执行服务器2000的各种功能和处理数据。可选的,处理器2001可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器2001可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器2001中,单独通过一块芯片进行实现。
其中,存储器2005可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器2005包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器2005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器2005可选的还可以是至少一个位于远离前述处理器2001的存储装置。如图12所示,作为一种计算机存储介质的存储器2005中可以包括操作系统、网络通信模块、用户接口模块以及应用程序。
在图12所示的电子设备2000中,用户接口2003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器2001可以用于调用存储器2005中存储的应用程序,并具体执行以下操作:
生成至少一个流媒体数据;
向服务端发送所述流媒体数据,所述流媒体数据用于指示所述服务端将流媒体数据包和/或丢失数据包存入流媒体队列,并从所述流媒体队列中确定出队的目标数据包以及将所述目标数据包发送至至少一个第二客户端进行流媒体处理;
其中,所述丢失数据包为在所述流媒体数据中存在冗余数据包和流媒体数据包时基于所述冗余数据包和所述流媒体数据包生成的数据包。
在本申请一个或多个实施例中,在服务端就基于冗余数据包恢复丢失数据包实现数据恢复前置,同时基于流媒体队列对乱序的流媒体数据包、丢失数据包等数据包进行分发规整,通过流媒体队列确定每次出队的目标数据包后进行包序列号重置更新并进行下发,可以在复杂网络传输场景下具备更好的抗丢包能力,保障数据传输稳定,降低了端到端的传输时延;以及,基于队列出队策略来保证出队的目标数据包拉流端可以成功数据解码,避免频繁重传请求,改善网络传输状况从而确保流媒体正常解码以及播放;以及实现了支持分段FEC前向纠错功能,在数据转发时可以对“推流端发送码流到服务端”、“服务端发送码流到拉流端”两段信道进行FEC前向纠错以及精准信道反馈,更大程度抵抗网络丢包。
请参见图13,为本申请实施例提供了一种电子设备的结构示意图。如图13所示,所述服务器3000可以包括:至少一个处理器3001,至少一个网络接口3004,用户接口3003,存储器3005,至少一个通信总线3002。
其中,通信总线3002用于实现这些组件之间的连接通信。
其中,用户接口3003可以包括显示屏(Display)、摄像头(Camera),可选用户接口3003还可以包括标准的有线接口、无线接口。
其中,网络接口3004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器3001可以包括一个或者多个处理核心。处理器3001利用各种借口和线路连接整个服务器3000内的各个部分,通过运行或执行存储在存储器3005内的指令、程序、代码集或指令集,以及调用存储在存储器3005内的数据,执行服务器3000的各种功能和处理数据。可选的,处理器3001可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器3001可集成中央处理器(Central Processing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器3001中,单独通过一块芯片进行实现。
其中,存储器3005可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。可选的,该存储器3005包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器3005可用于存储指令、程序、代码、代码集或指令集。存储器3005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器3005可选的还可以是至少一个位于远离前述处理器3001的存储装置。如图13所示,作为一种计算机存储介质的存储器3005中可以包括操作系统、网络通信模块、用户接口模块以及应用程序。
在图13所示的服务器3000中,用户接口3003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器3001可以用于调用存储器3005中存储的应用程序,并具体执行以下操作:
接收服务端从流媒体队列中确定出队的目标数据包;所述流媒体队列包含所述服务端接收第一客户端发送的流媒体数据后存入的流媒体数据包和/或丢失数据包;其中,所述丢失数据包为在所述流媒体数据中存在冗余数据包和流媒体数据包时基于所述冗余数据包和所述流媒体数据包生成的数据包。
基于所述目标数据包进行流媒体处理。
在本申请一个或多个实施例中,在服务端就基于冗余数据包恢复丢失数据包实现数据恢复前置,同时基于流媒体队列对乱序的流媒体数据包、丢失数据包等数据包进行分发规整,通过流媒体队列确定每次出队的目标数据包后进行包序列号重置更新并进行下发,可以在复杂网络传输场景下具备更好的抗丢包能力,保障数据传输稳定,降低了端到端的传输时延;以及,基于队列出队策略来保证出队的目标数据包拉流端可以成功数据解码,避免频繁重传请求,改善网络传输状况从而确保流媒体正常解码以及播放;以及实现了支持分段FEC前向纠错功能,在数据转发时可以对“推流端发送码流到服务端”、“服务端发送码流到拉流端”两段信道进行FEC前向纠错以及精准信道反馈,更大程度抵抗网络丢包。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (14)
1.一种数据处理方法,其特征在于,应用于服务端,所述方法包括:
接收第一客户端发送的至少一个流媒体数据,将所述流媒体数据中的流媒体数据包存入流媒体队列;
若所述流媒体数据中存在冗余数据包,基于所述流媒体数据包和冗余数据包生成丢失数据包,将所述丢失数据包存入所述流媒体队列;
从所述流媒体队列中确定出队的目标数据包,将所述目标数据包发送至至少一个第二客户端进行流媒体处理;
其中,所述从所述流媒体队列中确定目标数据包,包括:
基于队列出队策略从所述流媒体队列中确定目标数据包;
对所述目标数据包进行包序列号更新处理,以使得所述第二客户端收到的所述目标数据包的包序列号不会与上一出队的历史数据包的包序列号不连续;
其中,所述基于队列出队策略从所述流媒体队列中确定目标数据包,包括:
获取所述流媒体队列中处于队首的第一数据包,基于队列出队策略对所述第一数据包进行出队检测,得到出队检测结果;
若所述出队检测结果为出队通过结果则从所述流媒体队列中将所述第一数据包作为目标数据包;若所述出队检测结果为出队不通过结果则遍历所述流媒体队列中的至少一个第二数据包,基于所述第二数据包的数据编码类型确定目标数据包。
2.根据权利要求1所述的方法,其特征在于,所述对所述目标数据包进行包序列号更新处理,包括:
获取已发送至所述第二客户端的历史数据包的历史包序列号;
获取所述历史包序列号的下一序列号,基于所述下一序列号对所述目标数据包进行序列号重置处理。
3.根据权利要求1所述的方法,其特征在于,所述将所述丢失数据包存入所述流媒体队列,包括:
确定所述丢失数据包的队列插入位置,基于所述队列插入位置将所述丢失数据包插入至所述流媒体队列。
4.根据权利要求3所述的方法,其特征在于,所述确定所述丢失数据包的队列插入位置,包括:
确定所述丢失数据包的第一包序列号,获取所述流媒体队列中所有数据包的第二包序列号;
基于所述第一包序列号以及所述第二包序列号确定队列插入位置。
5.根据权利要求1所述的方法,其特征在于,所述基于队列出队策略对所述第一数据包进行出队检测,得到出队检测结果,包括:
对所述第一数据包进行包完整性检测以及包连续性检测得到第一检测结果;或,
对所述第一数据包进行独立编码检测得到第二检测结果。
6.根据权利要求1所述的方法,其特征在于,所述基于所述至少一个第二数据包的数据编码类型确定目标数据包,包括:
确定各所述第二数据包的数据编码类型,获取所述数据编码类型为独立编码类型的目标数据包。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述流媒体队列中不存在所述目标数据包,则向所述第一客户端发送针对所述目标数据包的数据包发送请求;或,
若所述流媒体队列中不存在所述目标数据包,则对所述流媒体队列进行队列重置处理;或,
若所述流媒体队列中存在所述目标数据包,则将所述流媒体队列中位于所述目标数据包之前的第三数据包进行丢弃处理。
8.根据权利要求1所述的方法,其特征在于,所述遍历所述流媒体队列中的至少一个第二数据包之前,还包括:
获取针对所述流媒体数据的目标传输延时,获取针对第三数据包的等待时长,所述第三数据包为满足所述队列出队策略且位于所述第一数据包之前的数据包;
若所述等待时长小于所述目标传输延时,对所述第三数据包进行延时等待处理;
若所述等待时长大于或等于所述目标传输延时,执行遍历所述流媒体队列中的至少一个第二数据包的步骤。
9.根据权利要求1-8任一项所述的方法,其特征在于,所述方法还包括:
检测第一数据丢包率;
将所述第一数据丢包率发送至第一客户端,所述第一数据丢包率用于指示所述第一客户端进行前向纠错编码处理生成冗余数据包,并将包含流媒体数据包和所述冗余数据包的流媒体数据发送至服务端。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收第二客户端发送的第二数据丢包率;
基于所述第二数据丢包率对所述目标数据包进行前向纠错编码处理生成目标冗余数据包;
所述目标数据包发送至至少一个第二客户端,包括:
将所述目标数据包以及所述目标冗余数据包发送至至少一个第二客户端,所述目标冗余数据包用于指示所述第二客户端基于所述目标数据包以及所述目标冗余数据进行流媒体处理。
11.一种数据处理方法,其特征在于,应用于第一客户端,包括:
生成至少一个流媒体数据;
向服务端发送所述流媒体数据,所述流媒体数据用于指示所述服务端将流媒体数据包和/或丢失数据包存入流媒体队列,并从所述流媒体队列中确定出队的目标数据包以及将所述目标数据包发送至至少一个第二客户端进行流媒体处理;
其中,服务端从所述流媒体队列中确定出队的目标数据包,包括:基于队列出队策略从所述流媒体队列中确定目标数据包,对所述目标数据包进行包序列号更新处理,以使得所述第二客户端收到的所述目标数据包的包序列号不会与上一出队的历史数据包的包序列号不连续;其中,所述丢失数据包为在所述流媒体数据中存在冗余数据包和流媒体数据包时基于所述冗余数据包和所述流媒体数据包生成的数据包;
其中,所述基于队列出队策略从所述流媒体队列中确定目标数据包,包括:获取所述流媒体队列中处于队首的第一数据包,基于队列出队策略对所述第一数据包进行出队检测,得到出队检测结果;若所述出队检测结果为出队通过结果则从所述流媒体队列中将所述第一数据包作为目标数据包;若所述出队检测结果为出队不通过结果则遍历所述流媒体队列中的至少一个第二数据包,基于所述第二数据包的数据编码类型确定目标数据包。
12.一种数据处理方法,其特征在于,应用于第二客户端,包括:
接收服务端从流媒体队列中确定出队的目标数据包;所述流媒体队列包含所述服务端接收第一客户端发送的流媒体数据后存入的流媒体数据包和/或丢失数据包;其中,所述丢失数据包为在所述流媒体数据中存在冗余数据包和流媒体数据包时基于所述冗余数据包和所述流媒体数据包生成的数据包;
基于所述目标数据包进行流媒体处理;
其中,服务端从所述流媒体队列中确定出队的目标数据包,包括:基于队列出队策略从所述流媒体队列中确定目标数据包,对所述目标数据包进行包序列号更新处理,以使得所述第二客户端收到的所述目标数据包的包序列号不会与上一出队的历史数据包的包序列号不连续;
其中,所述基于队列出队策略从所述流媒体队列中确定目标数据包,包括:获取所述流媒体队列中处于队首的第一数据包,基于队列出队策略对所述第一数据包进行出队检测,得到出队检测结果;若所述出队检测结果为出队通过结果则从所述流媒体队列中将所述第一数据包作为目标数据包;若所述出队检测结果为出队不通过结果则遍历所述流媒体队列中的至少一个第二数据包,基于所述第二数据包的数据编码类型确定目标数据包。
13.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~10、11或12任意一项的方法步骤。
14.一种电子设备,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~10、11或12任意一项的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210620504.8A CN115086285B (zh) | 2022-06-02 | 2022-06-02 | 一种数据处理方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210620504.8A CN115086285B (zh) | 2022-06-02 | 2022-06-02 | 一种数据处理方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115086285A CN115086285A (zh) | 2022-09-20 |
CN115086285B true CN115086285B (zh) | 2024-05-17 |
Family
ID=83248438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210620504.8A Active CN115086285B (zh) | 2022-06-02 | 2022-06-02 | 一种数据处理方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115086285B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101505202A (zh) * | 2009-03-16 | 2009-08-12 | 华中科技大学 | 一种流媒体传输自适应纠错方法 |
WO2017045568A1 (zh) * | 2015-09-15 | 2017-03-23 | 华为技术有限公司 | 一种媒体流传输方法、设备及系统 |
CN106656422A (zh) * | 2017-01-03 | 2017-05-10 | 珠海全志科技股份有限公司 | 一种动态调整fec冗余度的流媒体传输方法 |
CN109547467A (zh) * | 2018-12-19 | 2019-03-29 | 北京东土科技股份有限公司 | 媒体数据纠错传输及纠错方法、装置、设备及存储介质 |
CN114422864A (zh) * | 2021-12-27 | 2022-04-29 | 广州佰锐网络科技有限公司 | 一种音视频抗弱网传输方法及系统 |
CN114501052A (zh) * | 2022-01-26 | 2022-05-13 | 腾讯科技(深圳)有限公司 | 直播数据处理方法、云平台、计算机设备和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2266365A4 (en) * | 2008-04-04 | 2011-12-28 | Powerwave Cognition Inc | METHOD AND SYSTEMS FOR MOBILE ROUTING-WIDE BROADBAND INTERNET |
-
2022
- 2022-06-02 CN CN202210620504.8A patent/CN115086285B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101505202A (zh) * | 2009-03-16 | 2009-08-12 | 华中科技大学 | 一种流媒体传输自适应纠错方法 |
WO2017045568A1 (zh) * | 2015-09-15 | 2017-03-23 | 华为技术有限公司 | 一种媒体流传输方法、设备及系统 |
CN106656422A (zh) * | 2017-01-03 | 2017-05-10 | 珠海全志科技股份有限公司 | 一种动态调整fec冗余度的流媒体传输方法 |
CN109547467A (zh) * | 2018-12-19 | 2019-03-29 | 北京东土科技股份有限公司 | 媒体数据纠错传输及纠错方法、装置、设备及存储介质 |
CN114422864A (zh) * | 2021-12-27 | 2022-04-29 | 广州佰锐网络科技有限公司 | 一种音视频抗弱网传输方法及系统 |
CN114501052A (zh) * | 2022-01-26 | 2022-05-13 | 腾讯科技(深圳)有限公司 | 直播数据处理方法、云平台、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115086285A (zh) | 2022-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11349900B2 (en) | Voice encoding and sending method and apparatus | |
JP6476197B2 (ja) | 輻輳制御ビットレート・アルゴリズム | |
CN110418376B (zh) | 数据传输方法及装置 | |
EP2890133B1 (en) | System and method for distributing live broadcast content | |
KR102107716B1 (ko) | 미디어 데이터 전달 제어를 위한 방법 및 장치 | |
WO2022247550A1 (zh) | 数据重传处理方法、装置、计算机设备和存储介质 | |
EP3322145A1 (en) | Method, server side and system for computing bandwidth of network transmission of streaming media | |
US20230083441A1 (en) | Managing subpacket transmission and reception for advanced interactive services | |
US8010863B2 (en) | Method and apparatus for synchronizing multiple multimedia streams | |
US10367873B2 (en) | Method of communicating data packets within data communication systems | |
JP2014524092A (ja) | 単一ソケットポイントツーマルチポイント性能による高信頼性仮想双方向データストリーム通信のためのシステムおよび方法 | |
US20230071243A1 (en) | Conserving network resources during transmission of packets of interactive services | |
TW201540031A (zh) | 實現客戶端側的傳送功能的傳輸加速器 | |
EP2774322B1 (en) | Apparatus and method for transmitting a message to multiple receivers | |
CN114039703A (zh) | 数据传输方法、装置、设备和介质 | |
Dong et al. | In-packet network coding for effective packet wash and packet enrichment | |
CN114221909B (zh) | 数据传输方法、装置、终端及存储介质 | |
CN110233856B (zh) | 报文处理方法、装置及计算机可读存储介质 | |
CN115086285B (zh) | 一种数据处理方法、装置、存储介质及电子设备 | |
CN114039702B (zh) | 数据传输方法、装置、设备和介质 | |
CN116318545A (zh) | 视频数据传输方法、装置、设备及存储介质 | |
WO2021164405A1 (zh) | 数据编解码方法、相关设备及系统 | |
CN114979793A (zh) | 一种直播数据传输方法、装置、系统、设备和介质 | |
CN115484005A (zh) | 多路径视频传输方法、网关和系统、电子设备和存储介质 | |
WO2016203870A1 (ja) | 送信装置、送信方法、及び通信システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |