CN115209163B - 数据处理方法、装置、存储介质及电子设备 - Google Patents
数据处理方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN115209163B CN115209163B CN202210740516.4A CN202210740516A CN115209163B CN 115209163 B CN115209163 B CN 115209163B CN 202210740516 A CN202210740516 A CN 202210740516A CN 115209163 B CN115209163 B CN 115209163B
- Authority
- CN
- China
- Prior art keywords
- stream
- frame
- media
- media stream
- control unit
- 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 20
- 238000012545 processing Methods 0.000 claims abstract description 222
- 238000000034 method Methods 0.000 claims abstract description 85
- 230000007246 mechanism Effects 0.000 claims description 52
- 230000005540 biological transmission Effects 0.000 claims description 41
- 239000000872 buffer Substances 0.000 claims description 41
- 230000008569 process Effects 0.000 claims description 38
- 238000001514 detection method Methods 0.000 claims description 32
- 238000005070 sampling Methods 0.000 claims description 30
- 238000005538 encapsulation Methods 0.000 claims description 27
- 238000009877 rendering Methods 0.000 claims description 21
- 238000004806 packaging method and process Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 16
- 230000000694 effects Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 238000011161 development Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 7
- 238000012937 correction Methods 0.000 description 6
- 101000741965 Homo sapiens Inactive tyrosine-protein kinase PRAG1 Proteins 0.000 description 5
- 102100038659 Inactive tyrosine-protein kinase PRAG1 Human genes 0.000 description 5
- 230000009286 beneficial effect Effects 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012952 Resampling Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000008261 resistance mechanism Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 238000004383 yellowing Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/21805—Source of audio or video content, e.g. local disk arrays enabling multiple viewpoints, e.g. using a plurality of cameras
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
- H04N21/2365—Multiplexing of several video streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
- H04N21/2368—Multiplexing of audio and video streams
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种数据处理方法、装置、存储介质及电子设备,其中,方法包括:控制选择性转发单元接收至少两路媒体流,以及通过选择性转发单元将各媒体流发送至多点控制单元,控制多点控制单元对各媒体流进行合流处理得到目标媒体流,并通过多点控制单元对目标媒体流进行流媒体业务处理。采用本申请实施例,可以提升流媒体处理的稳定性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、存储介质及电子设备。
背景技术
随着计算机技术的快速发展,涉及到使用流媒体技术的应用也越来越广泛。目前的流媒体服务,多是将流媒体码流数据按一定规则打包后,通过服务平台进一步进行流媒体处理,诸如对声音流、视频流、文本流、图像流、动画流等流媒体码流数据进行流媒体推流处理。
发明内容
本申请实施例提供了一种数据处理方法、装置、存储介质及电子设备,所述技术方案如下:
第一方面,本申请实施例提供了一种数据处理方法,所述方法包括:
控制选择性转发单元接收至少两路媒体流,以及通过所述选择性转发单元将各所述媒体流发送至多点控制单元;
控制所述多点控制单元对各所述媒体流进行合流处理得到目标媒体流,并通过所述多点控制单元对所述目标媒体流进行流媒体业务处理。
第二方面,本申请实施例提供了一种数据处理装置,所述装置包括:
接收模块,用于控制选择性转发单元接收至少两路媒体流,以及通过所述选择性转发单元将各所述媒体流发送至多点控制单元;
处理模块,用于控制所述多点控制单元对各所述媒体流进行合流处理得到目标媒体流,并通过所述多点控制单元对所述目标媒体流进行流媒体业务处理。
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
第四方面,本申请实施例提供一种电子设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
在本申请一个或多个实施例中,服务平台通过控制选择性转发单元接收至少两路媒体流,以及通过选择性转发单元将各所述媒体流发送至多点控制单元,然后控制多点控制单元对各媒体流进行合流处理得到目标媒体流,并通过多点控制单元对所述目标媒体流进行流媒体业务处理,通过基于选择性转发单元和选择性转发单元进行流媒体数据处理,可实现多点控制单元和选择性转发单元的服务质量能力以及抗弱网能力的充分复用,克服了服务平台对流媒体处理的局限性,在兼顾流媒体传输效率的同时大幅提升了流媒体处理的稳定性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理方法的流程示意图;
图2是一种涉及选择性转发单元的场景示意图;
图3是一种涉及多点控制单元的场景示意图;
图4是本申请实施例提供的另一种数据处理方法的流程示意图;
图5是本申请实施例提供的另一种数据处理方法的流程示意图;
图6是本申请实施例提供的一种合流的示意图;
图6是本申请实施例提供的另一种数据处理装置的结构示意图;
图7是本申请实施例提供的一种视频媒体流合流的示意图;
图8是本申请实施例提供的一种音频媒体流合流的示意图;
图9是本申请实施例提供的一种音视频媒体流合流的示意图;
图10是本申请实施例提供的一种数据处理装置的结构示意图;
图11是本申请实施例提供的另一种数据处理装置的结构示意图;
图12是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
下面结合具体的实施例对本申请进行详细说明。
在一个实施例中,如图1所示,特提出了一种数据处理方法,该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的数据处理装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。所述数据处理装置可以为服务平台。
具体的,该数据处理方法包括:
S101:控制选择性转发单元接收至少两路媒体流,以及通过所述选择性转发单元将各所述媒体流发送至多点控制单元;
所述选择性转发单元(Selective ForwardingUnit,SFU)可以接收若干“推流”客户端的若干路媒体流,如音频流、视频流、音视频流。在相关技术中,基于选择性转发单元接收到若干媒体流之后,通常基于实际流媒体业务的不同按需将媒体流直接转发给下游的若干“拉流”客户端。如图2所示,图2是一种涉及选择性转发单元的场景示意图,在基于选择性转发单元SFU的场景下,每个作为参与者的“客户端”都将与SFU服务平台建立连接;“客户端”可以向其上传自己的一路媒体流,SFU不上传的媒体流进行混流,收到某个客户端的媒体流后,按需(目标客户端是否订阅)将媒体流原封不动的转发给目标客户端。在这种方案里,SFU相当于一个音视频路由转发器,所有的混流都是在下游客户端完成的,无法处理诸如大规模的会议、直播推流等流媒体应用场景,也无法处理转码、合流录制、合流推RTMP直播、合流转SIP、音视频的旁路理解(实时翻译、视频鉴黄)等流媒体应用场景,导致服务平台侧的流媒体处理效率不高。
所述多点控制单元(Multipoint Control Unit,MCU)可以对多路媒体流进行合流,多点控制单元可以将每路媒体流的数据经过解码、同步、重采样、布局、混流、编码等合流处理,最后把合流之后的目标媒体进行相应流媒体业务处理,如将目标媒体流推送给所有的客户端。在相关技术中,基于多点控制单元接收到若干媒体流之后,通常基于实际流媒体业务的不同按需将媒体流直接转发给下游的若干“拉流”客户端。如图3所示,图3是一种涉及多点控制单元的场景示意图,在基于MCU的场景下,每个作为参与者的“客户端”会向MCU服务平台发送一路流,并接收一路MCU服务平台合成后的混合流,其特点为上行和下行的带宽都较低,但是基于MCU的方案中,缺少抗弱网机制(NACK机制、FEC机制、PLI机制等),在网络抖动、丢包等场景下效果较差。
在本说明书中,基于选择性转发单元或多点控制单元进行流媒体处理均存在一定的局限性,无法兼顾流媒体处理效率以及流媒体处理稳定性。
客户端包括但不限于:个人电脑、平板电脑、手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其它处理设备等。在不同的网络中终端设备可以叫做不同的名称,例如:用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置、蜂窝电话、无绳电话、5G网络或未来演进网络中的设备等
在本说明书一个或多个实施例中,服务平台可以至少由选择性转发单元以及多点控制单元组成,选择性转发单元以及多点控制单元中的其一可以是单独的服务器设备;也可以是采用多个服务器组成的服务器集群。可选的,服务平台可以应用在诸如WebRTC网页即时通信场景下。
可以理解的,服务平台可以控制选择性转发单元接收实际流媒体业务场景下的若干媒体流(如至少两路媒体流),然后通过选择性转发单元将各所述媒体流发送至多点控制单元。
示意性的,流媒体流由若干流媒体数据组成,并以流媒体数据的形式由于客户端(如推流客户端)发送至服务平台。服务平台即可接收到若干客户端分别发送的若干媒体流。
示意性的,由于网络流媒体的传输需要实时和低延时等特点,目前常通过预设传输协议实时传输协议(Real-timeTransport Protocol,RTP)来传输流媒体。预设传输协议用来为以一连串的流媒体数据的形式对诸如声音流、视频流、文本流、图像流、动画流等媒体流进行实时传输,从而提供端到端的实时传输服务。
进一步的,用于媒体流传输的预设传输协议可以是RTP协议、RTSP协议、RTMP协议、HLS协议等;
进一步的,由于每个客户端产生的媒体流是直接发送至服务平台的选择性转发单元,基于此,服务平台至少可以控制选择性转发单元采用抗弱网机制(如NACK机制、FEC机制、PLI机制等)对媒体流的传输过程(也即由客户端发送至选择性转发单元的链路)进行抗弱网处理,以此来抵抗网络抖动、丢包等场景,至少可保障所接收到的媒体流进行流媒体业务处理,如可以成功播放媒体流的帧数据(如音频帧数据、视频帧数据、音视频帧数据)。
在一种可行的实施方式中,服务平台可以采用至少由SFU和MCU组成的混合式媒体服务器方案,其中SFU和MCU分别为服务平台的两个子模块,SFU和MCU之间通过线程间的通信机制进行数据交互。进一步的,在若干客户端将产生的媒体流发送至服务平台时,服务平台可以通过信令调用外部级联接口将若干客户端产生的媒体流推流到选择性转发单元SFU上,服务平台可以指示多点控制单元MCU订阅选择性转发单元SFU的多路媒体流,服务平台就可以通过信令调用内部级联接口控制选择性转发单元将各路媒体流发送至多点控制单元。
S102:控制所述多点控制单元对各所述媒体流进行合流处理得到目标媒体流,并通过所述多点控制单元对所述目标媒体流进行流媒体业务处理。
所述目标媒体流可以理解为对若干路媒体流进行合流或混流之后生成的一路媒体流。
可以理解的,服务平台可以控制多点控制单元对可以将每路媒体流的每个数据包经过诸如解码、同步、重采样、布局、混流、编码、封装等一种或多种合流处理,得到合流处理之后的一路目标媒体流,最后把合流之后的目标媒体流进行相应流媒体业务处理;
可以理解的,服务平台可以基于流媒体任务通过所述多点控制单元对所述目标媒体流进行流媒体业务处理,不同的流媒体任务对应不同的处理方式。
在一种可行的实施方式中,服务平台可以基于合流推流任务控制多点控制单元将目标媒体流推送给所有订阅流媒体的客户端;或,服务平台控制多点控制单元将目标媒体流发送至选择性转发单元,控制选择性转发单元对目标媒体流进行推流处理,也即由选择性转发单元将目标媒体流推送给所有订阅流媒体的客户端;
在一种可行的实施方式中,服务平台可以基于合流录制业务,则通过多点控制单元对所述目标媒体流进行流媒体录制处理,以录制完成后得到相应的流媒体文件。
在本申请一个或多个实施例中,服务平台通过基于选择性转发单元和多点控制单元进行流媒体数据处理,可实现选择性转发单元和多点控制单元的服务质量能力以及抗弱网能力的充分复用,克服了服务平台对流媒体处理的局限性,在兼顾流媒体传输效率的同时大幅提升了流媒体处理的稳定性;以及,实际应用中避免了在多点控制单元上开发诸如抗弱网功能,降低了服务平台侧的维护成本以及开发难度。
请参见图4,图4是本申请提出的一种数据处理方法的另一种实施例的流程示意图。具体的:
S201:控制选择性转发单元接收至少两路媒体流;
在本说明书一个或多个实施例中,服务平台可以基于选择性转发单元和所述多点控制单元中的至少其一,对所述媒体流进行抗弱网处理。
S202:在所述选择性转发单元接收所述媒体流时,控制所述选择性转发单元采用第一抗弱网机制对所述媒体流进行服务质量处理,得到处理后的所述媒体流。
所述第一抗弱网机制可以是自动重传请求(ARQ)、FEC(前向纠错)机制、PLI(帧数据丢失指示)机制、FIR(关键帧)机制等抗弱网丢包机制中一种或多种的拟合。
以PLI(帧数据丢失指示)机制为例,通过PLI机制可以检测出媒体流中诸如图片帧数据是否有数据丢失。当作为媒体的接收者的服务平台丢失一个完整编码的帧帧数或更多帧数据时,可以发送PLI请求以指示帧数据丢失,PLI请求可以是通过RTCP协议发送。媒体流的生成者客户端接收到该PLI请求消息后会重新发送一个完整的帧。
以自动重传请求ARQ机制为例,通过ARQ机制接收端可以检测媒体流是否丢失数据包,在检测出现丢包时,所述选择性转发单元采用ARQ机制会向发送端发送重传请求NACK,以请求发送端重传丢失的数据包。
以FEC(前向纠错)机制为例,FEC前向纠错可以通过增加冗余数据对丢失的数据包进行恢复的信道编/解码算法,发送端基于FEC前向纠错编码算法生成媒体流,接收端基于FEC前向纠错解码算法在出现数据包丢失的情况下,基于冗余数据进行数据包的恢复。
以FIR(关键帧)机制为例,关键帧通常也称之为即时刷新帧,以视频媒体流为例,即时刷新帧无需参考之前的帧进行解码,因此在丢包严重时可以通过请求关键帧进行画面的恢复。
所述服务质量处理可以理解为基于选择性转发单元SFU的第一抗弱网机制复用相关技术中SFU的各类服务质量(Quality of service,Qos)能力对媒体流进行Qos处理,来增加选择性转发单元进行合流时的抗弱网能力。
在本申请中,由于每个客户端产生的媒体流是直接发送至服务平台的选择性转发单元,基于此,服务平台至少可以控制选择性转发单元采用抗弱网机制(如NACK机制、FEC机制、PLI机制等)对媒体流的传输过程(也即由客户端发送至选择性转发单元的链路)进行抗弱网丢包处理,在服务平台涉及的合流场景下可预先借助控制选择性转发单元的第一抗弱网机制来抵抗网络抖动、丢包等场景,至少可保障在服务平台涉及到多媒体业务的合流场景下可保障所接收到的媒体流进行流媒体业务正常处理,如可以成功播放媒体流的帧数据(如音频帧数据、视频帧数据、音视频帧数据),这样在服务平台基于流媒体业务合流需求进行数据处理阶段,可最大程度充分复用SFU的各类Qos(Quality of service,服务质量)能力,如NACK、FEC、FIR等能力,显著增加了MCU后续合流处理过程的抗弱网合流能力。
S203:通过所述选择性转发单元将各所述媒体流发送至多点控制单元;
S204:在所述多点控制单元接收到所述媒体流时,控制所述多点控制单元采用第二抗弱网机制对所述媒体流进行服务质量处理,得到处理后的所述媒体流。
所述第二抗弱网机制可以理解为基于相关多点控制单元技术上进一步开发构建的抗弱网机制,通过在多点控制单元引入抗弱网机制在一些实施例中可实现对选择性转发单元SFU抗弱网能力的二次校验;也可在兼顾多点控制单元的多路媒体流合流能力基础上通过第二抗弱网机制,在合流之前实现减小因网络抖动和丢包造成的影响,从而保障流媒体处理的稳定性,实现了基于混合SFU/MCU架构的服务平台在兼顾编解码、合流等基础能力的同时引入抗弱网机制,在网络抖动、丢包等场景流媒体处理效果更佳,可以应用在实时性要求高的流媒体场景下,如合流录制、合流推流直播、合流转录制、音视频的旁路理解(如实时翻译)等应用场景。
所述服务质量处理可以理解为基于多点控制单元/MCU所引入的第二抗弱网机制以对媒体流进行Qos处理,来增加MCU进行合流之前的抗弱网能力。
可以理解的,媒体流由若干流媒体数据包组成,客户端基于若干流媒体数据包对应媒体帧(如视频帧、图像帧、音频帧)的播放顺序,依次发送每个流媒体数据包至服务平台,这些流媒体数据包就构成了一路媒体流。
可以理解的,控制多点控制单元采用第二抗弱网机制对所述媒体流进行服务质量处理,具体实施中可以是对媒体流所对应的至少一个流媒体数据包进行服务质量处理。
可选的,所述第二抗弱网机制可以是自动重传请求(ARQ)、FEC(前向纠错)机制、PLI(帧数据丢失指示)机制、FIR(关键帧)机制等抗弱网丢包机制中一种或多种的拟合。
示意性的,多点控制单元可以对媒体流的至少一个流媒体数据包进行包连续性检测,以基于连续性检测结构来进行相应关键帧重传处理,这样来得到服务质量处理后的所述媒体流,具体如下:
1、可以控制多点控制单元对媒体流对应的至少一个流媒体数据包进行包连续性检测,得到连续性检测结果;
进一步的,流媒体数据包携带有基于预设数据传输协议划分的包序列号,以预设数据传输协议为RTP协议为例,包序列号可为RTP序列号,RTP序列号与数据包对应媒体帧的播放顺序相关联。
所述包连续性检测媒体流所包含的各个流媒体数据包之间是否包连续,也即包序列号是否连续,通过包连续性检测可以得到连续性检测结果。
示意性的,可以控制多点控制单元对媒体流的流媒体数据包进行包连续性检测,检测该流媒体数据包与媒体流中的上一流媒体数据包的包序列号是否连续。通过包连续性检测,可以至少反馈媒体流中各个流媒体数据包之间是否连续。通常连续性检测结果包括连续结果和不连续结果这两种类型,连续结果类型也即媒体流中各个流媒体数据包之间包序列号连续;不连续结果类型也即媒体流中某个流媒体数据包与其上一流媒体数据包的包序列号不连续。
2、基于所述连续性检测结果控制所述多点控制单元对所述媒体流进行关键帧重传处理,得到处理后包含关键帧数据包的所述媒体流。
可以理解的,可以基于连续性检测结果控制多点控制单元MCU对媒体流进行关键帧重传处理,以此来得到关键帧对应关键帧数据包,从而可以得到包含该关键帧数据包的媒体流。通过连续性检测在流媒体数据包不连续时,为了避免流媒体合流业务受阻,可以直接请求关键帧,而非继续等待缺失的流媒体数据包到达,可以满足实时性需求高的流媒体业务的正常进行,提高数据处理效率。
可以理解的,关键帧通常也称之为即时刷新帧,以视频媒体流为例,即时刷新帧无需参考之前的帧进行解码,因此在丢包严重时可以通过请求关键帧进行流媒体恢复
可选的,所述关键帧可以是缺失流媒体数据包对应帧数据之后的关键帧数据。
在一种可行的实施方式中,考虑到常用多点控制单元常聚焦于或侧重于合流事务,对于抗弱网事务而言,可以调用选择性转发单元SFU辅助进行,以提高处理效率,优化多点控制单元的处理资源。也即多点控制单元MCU不直接向客户端请求媒体流中的关键帧,而是向选择性转发单元SFU请求关键帧,选择性转发单元SFU可以基于第一抗弱网机制来获取到相应的关键帧。
具体的,若连续性检测结果为不连续结果,则服务平台控制多点控制单元MCU指示选择性转发单元SFU进行关键帧重传处理,通过选择性转发单元向流媒体发送端发送针对媒体流中关键帧数据包的关键帧请求;
如:多点控制单元MCU可以向选择性转发单元SFU发送用于关键帧重传的请求指令,选择性转发单元SFU通过响应于该请求指令,可向流媒体发送端发送针对媒体流中关键帧数据包的关键帧请求(也即PLI请求),其中,可以基于实时传输控制(RTCP)协议来生成PLI请求;
进一步的,考虑到媒体流中的流媒体数据包传输中会客观存在传输时延,因此在可先进行等待处理,在等待超时的情况下在进行关键帧重传处理。
示意性的,在执行所述控制所述多点控制单元指示所述选择性转发单元进行关键帧重传处理的步骤时,具体可以是:
多点控制单元MCU确定不连续结果对应的目标帧数据包,对所述目标帧数据包进行等待处理;
示意性的,目标帧数据包可以是不连续流媒体数据包之前的至少一个数据包,如仅连续性检测确定流媒体数据包A的包序列号不连续,可以是获取流媒体数据包A之前所接收到的临近流媒体数据包B,流媒体数据包A与流媒体数据包B之间所缺失的流媒体数据包也即目标帧数据包。
示意性的,目标帧数据包可以是包序列号不连续数据包之后的关键帧数据包,相当于为提升合流效率保障流媒体正常处理,对未接收到的丢失流媒体数据包进行丢弃处理。此时,对目标帧数据包考虑到选择性转发单元SFU存在第一抗弱网机制已经预先进行了相应的抗弱网处理,针对多点控制单元MCU而言可等待一定时长。
具体的,对所述目标帧数据包进行等待处理,并同时获取针对所述目标帧数据包的目标等待时长,若所述目标等待时长超时,则控制所述多点控制单元指示所述选择性转发单元进行关键帧重传处理。
所述目标等待时长也即进行等待处理的时间,可以设置针对目标等待时长的等待时间阈值,若目标等待时长大于等待时间阈值,则认为目标等待时长超时,此时可执行控制所述多点控制单元指示所述选择性转发单元进行关键帧重传处理的步骤。
具体而言可以是,在进行关键帧重传处理之后,关键帧重传处理所请求的是关键帧数据包,在流媒体发送端响应服务平台的关键帧重传请求之后,可以生成关键帧对应的关键帧数据包,然后将关键帧数据包发送至服务平台的选择性转发单元。
具体的,对于多点控制单元而言,服务平台通过控制选择性转发单元接收关键帧数据包并将关键帧数据包发送至所述多点控制单元;服务平台可以控制多点控制单元接收关键帧数据包,接收到关键帧数据包之后,就可以将该关键帧数据包***媒体流中,生成包含关键帧数据包的媒体流。
在本说明书一个或多个实施例中,多点控制单元可包括组件层,组件层包含用于实现各类用于MCU基础能力的组件以及用于抗弱网的组件;在一些实施例中,组件层可包括流媒体缓存组件;
示意性的,流媒体缓存组件用于接收所述选择性转发单元的各所述媒体流,并对所述媒体流对应的至少一个流媒体数据包进行缓存处理;
示意性的,在一些实施例中,流媒体缓存组件还用于执行S204,也即在多点控制单元接收到所述媒体流时,控制多点控制单元的所述流媒体缓存组件对所述媒体流进行抗弱网处理,也即通过多点控制单元的所述流媒体缓存组件来执行采用第二抗弱网机制对所述媒体流进行服务质量处理,得到处理后的所述媒体流的步骤。
在一种具体的实施场景中,流媒体缓存组件可以是RtpJitterBuffer组件,该组件可具备缓存功能,通过流媒体缓存组件可以接收选择性转发单元的各所述媒体流的RTP包,并可在接收到所述媒体流时对所述媒体流进行抗弱网处理,以输出有序的RTP包,实现抵抗网络抖动和丢包。
如,当连续性检测结果为不连续结果时,通过流媒体缓存组件确定所述不连续结果对应的目标帧数据包,对所述目标帧数据包进行等待处理;获取针对所述目标帧数据包的目标等待时长,若所述目标等待时长超时,则控制所述多点控制单元指示所述选择性转发单元进行关键帧重传处理;可以理解为:通过流媒体缓存组件会等待一定时间,若超时后缺失序号的目标帧数据包或之后的可独立解码的目标帧数据包仍未到达,则会向SFU请求关键帧,SFU则会通过RTCP协议发送PLI请求给发送端,从而进行流媒体恢复。
S205:控制所述多点控制单元对各所述媒体流进行合流处理得到目标媒体流,并通过所述多点控制单元对所述目标媒体流进行流媒体业务处理。
具体可参考本说明书涉及的其他实施例的方法步骤,此处不再赘述。
在本申请一个或多个实施例中,服务平台通过基于选择性转发单元和多点控制单元进行流媒体数据处理,可实现选择性转发单元和多点控制单元的服务质量能力以及抗弱网能力的充分复用,克服了服务平台对流媒体处理的局限性,在兼顾流媒体传输效率的同时大幅提升了流媒体处理的稳定性;以及,实际应用中避免了在多点控制单元上开发诸如抗弱网功能,降低了服务平台侧的维护成本以及开发难度。
请参见图5,图5是本申请提出的一种数据处理方法的另一种实施例的流程示意图。具体的:
S301:控制选择性转发单元接收至少两路媒体流,通过所述选择性转发单元将各所述媒体流发送至多点控制单元。
具体可参考本说明书涉及的其他实施例的方法步骤,此处不再赘述。
S302:通过所述多点控制单元的所述流媒体缓存组件接收所述选择性转发单元的各所述媒体流,并对所述媒体流对应的至少一个流媒体数据包进行缓存处理;
在本说明书一个或多个实施例中,多点控制单元可包括组件层以及传输层,组件层包含用于实现各类用于MCU基础能力的组件以及用于抗弱网的组件;在一些实施例中,组件层可包括流媒体缓存组件;
可以理解的,流媒体缓存组件用于接收选择性转发单元的各所述媒体流,并对所述媒体流对应的至少一个流媒体数据包进行缓存处理;
S303:通过所述多点控制单元的所述流媒体缓存组件对所述媒体流进行抗弱网处理。
具体可参考本说明书涉及的其他实施例的方法步骤,此处不再赘述。
S304:控制所述多点控制单元的所述组件层对各所述媒体流进行合流处理得到目标媒体流;
可选的,所述组件层还可以包括解封装组件、流媒体解码组件、流媒体合流组件、流媒体编码组件以及流媒体封装组件。
示意性的,服务平台再控制多点控制单元的组件层对各所述媒体流进行合流处理可以得到目标媒体流,具体如下:
1、控制所述多点控制单元的解封装组件对各所述媒体流进行解封装处理,得到各所述媒体流分别对应的编码帧数据流;
所述解封装组件用于对媒体流中的至少一个流媒体数据包进行解封装,通常媒体流在传输过程中,会基于预设传输控制协议(如RTP协议)进行数据包封装,以封装后的流媒体数据包进行传输。在一些实施例中,以预设传输控制协议为RTP协议为例,解封装组件可以称作RtpDemuxer组件
示意性的,流媒体缓存组件缓存各路媒体流的流媒体数据包,流媒体缓存组件可以向解封装组件传输的流媒体数据包,或者对解封装组件提供组件接口以供读取流媒体数据包,通过控制解封装组件读取流媒体缓存组件所缓存的各路媒体流的若干流媒体数据包,对每路媒体流的流媒体数据包依次解封装,可以得到媒体流对应的编码帧数据流。
其中,编码帧数据流由若干编码帧(如音频帧、视频帧、音视频帧)组成,如编码帧数据流由若干编码帧AVPacket组成。
在一些实施例中,在控制所述多点控制单元的解封装组件使用前,首先通过解封装组件初始化其编码格式(如VP8、H264、OPUS)、采样率、初始时间等编码参数,对读取到的流媒体数据包如RTP包,根据流媒体数据包的编码封装格式对流媒体数据包进行解封装,将其解封装组成完整的一帧packet也即编码帧,一路媒体流中若干流媒体数据包分别对应的编码帧就构成可编码帧数据流;对于解封装过程中错误的帧,将错误的帧丢弃,错误的帧可以是指编码帧数据的数据结构不完整的帧。
可选的,在解封装处理过程中,还可以根据接收到该流媒体数据包的时间减去初始时间得到该帧的播放时间戳(pts)、解码时间戳(dts)等信息。在一些实施例中,初始时间可以理解为在合流初始化所确定的起始时间,可预先进行初始化设置,在一些实施例中播放时间戳(pts)与解码时间戳(dts)的数值相同。
在一种可行的实施方式中,若媒体流为音频流,则可以直接控制多点控制单元的解封装组件对各音频流进行解封装处理,得到各音频流分别对应的音频编码帧数据流,也即不经过流媒体缓存组件缓存各路音频流的音频数据包以保证其流媒体连续性,通过流媒体解码组件对实时接收到的音频数据包直接进行解码,而不必关注是否存在某个或某几个音频数据包缺失影响音频合流效率。
2、控制多点控制单元的流媒体解码组件对各编码帧数据流进行帧解码处理,分别得到各编码帧数据流分别对应的解码帧数据流;
所述流媒体解码组件用于对基于相应编码规则进行编码的编码帧进行解码得到解码帧。
所述流媒体解码组件作为可用作音/视频帧解码,在一些实施例中可称作MediaDecoder组件。
通过流媒体解码组件接收或读取解封装组件解封装后的编码帧数据流的编码帧,经流媒体解码组件对编码帧进行音/视频解码,输出解码后的解码帧,如视频编码帧对应的视频帧AVFrame。如在使用流媒体解码组件进行解码时,首先要根据帧编码格式初始化解码器,对接收或读取到的编码帧,将其送给解码器进行解码,并从解码器获取解码后的解码帧;经流媒体解码组件解码之后的一路媒体流中若干编码帧分别对应的解码帧就构成解码帧数据流;
3、控制所述多点控制单元的流媒体合流组件对各路所述解码帧数据流进行合流处理,得到第一媒体流;
所述流媒体合流组件用于将若干路解码帧数据流合流为一条媒体流,流媒体合流组件的输入为若干路解码帧数据流,输出为第一媒体流。
在本说明书一个或多个实施例中,按照数据类型(音频类型、视频类型)不同可分为音频流媒体合流组件以及视频流媒体合流组件;
所述音频流媒体合流组件可称作AudioMixer,其输入多路音频解码帧数据流-AVFrame流至音频流媒体合流组件,输出一路合成后的音频媒体流作为第一媒体流。
所述视频流媒体合流组件可称作VideoMixer,其输入多路视频解码帧数据流-AVFrame流至视频流媒体合流组件,输出一路合成后的视频媒体流作为第一媒体流。
通过多点控制单元的流媒体合流组件接收或读取流媒体解码组件的各路解码帧数据流,经流媒体解码组件对若干路解码帧数据流的每一帧数据进行合流,输出合流后的第一媒体流,
4、控制所述多点控制单元的流媒体编码组件对第一媒体流进行帧编码处理,得到帧编码处理后的第二媒体流;
所述流媒体编码组件可至少用于对合流之后的第一媒体流进行帧编码处理,以得到帧编码之后的;
所述流媒体编码组件至少可用于音/视频帧编码,在一些实施例中,可称作MediaEncoder组件;
可以理解的,通过流媒体编码组件接收或读取第一媒体流中的(多媒体)合流帧(如音频合流帧、视频合流帧),输出编码后的合流编码帧。在使用前,首先要根据编码格式初始化编码器。对接收或读取第一媒体流中的(多媒体)合流帧,将其输入给编码器进行编码,并从编码器获取编码后的合流编码帧。经流媒体编码组件编码之后的一路第一媒体流中若干合流帧分别对应的合流编码帧就构成第二媒体流;
5、控制所述多点控制单元的流媒体封装组件对第二媒体流进行数据封装处理,得到数据封装处理后的目标媒体流。
所述流媒体封装组件可至少用于对第二媒体流中若干合流编码帧进行帧封装处理,以得到帧封装之后的合流封装帧,若干合流封装帧对应目标媒体流;
所述流媒体封装组件至少可用于合流音/视频编码帧封装,在一些实施例中,可称作Muxer组件;
可以理解的,通过流媒体封装组件接收或读取第二媒体流中若干合流编码帧,输出封装后的合流封装帧。在使用前,首先要根据封装格式初始化封装器。对接收或读取第二媒体流中的(多媒体)合流编码帧,将其输入给封装器进行封装,并从封装器获取封装后的合流封装帧。经流媒体封装组件封装之后的一路第二媒体流中若干合流帧分别对应的合流封装帧就构成目标媒体流;
示意性的,流媒体封装组件可以是一种基于RTP传输控制协议的封装组件RtpMuxer,接收合流编码后的合流编码帧,输出封装后的RTP包。在使用前,首先要初始化其编码格式(如VP8、H264、OPUS)、playloadType、ssrc等参数,对接收到的合流编码帧,根据其帧编码格式按照在RTP包中的数据传输结构,将合流编码帧打包成一组RTP包;进一步的,在打包生成RTP包同时可设置RTP包的时间戳timestamp。例如,可以在合流转发RTP流业务场景中,使用RtpMuxer封装组件。
示意性的,流媒体封装组件可以是一种非RTP传输控制协议包的封装组件MediaMuxer,接收合流编码后的合流编码帧,输出各类封装格式对应的合流封装帧。可支持mp4、ts、rtmp等文件格式。如,可以通过FFmpeg的AVFormatContext数据结构来设置管理封装的信息,并通过FFmpeg的av_interleaved_write_frame()接口将合流编码帧写入相应的封装格式。例如,可以在合流录制、合流推RTMP流业务场景中,使用MediaMuxer封装组件。
示意性的,以下对各路解码帧数据流进行合流处理的合流过程进行释义,如下:
在一种可行的实施方式中,以所述解码帧数据流为视频帧数据流为例,控制多点控制单元的流媒体合流组件执行所述对各路所述解码帧数据流进行合流处理,得到第一媒体流,具体可以是:
1、获取各路所述视频帧数据流中的至少一帧视频解码帧,创建针对所述视频解码帧的基础画布;
所述基础画布用于容纳每路视频解码帧所对应的视频显示画面,可以理解为多路视频的背景。在对视频合流过程中,会将各路流媒体对应的视频画面设置在基础画布上,常应用在流媒体录制、旁路推流、多方会议等流媒体业务场景下。
示意性的,预先基于实际流媒体业务场景结合视频帧数据流,对每路视频帧数据流的视频解码帧进行画面布局信息的初始化。所述画面布局信息可以是画面宽度、画面高度、帧率FPS、采样的时钟频率、帧信息、画面层数和x、y坐标、名称name、旋转角度、画面是否高亮highlight,渲染器filter等信息参数中的一种或多种的拟合,画面布局信息用于后续如何将各路视频解码帧渲染至基础画布生成视频合流帧。
可选的,流媒体合流组件会在合流之前预先初始化画面布局信息,并将画面布局信息进行存储,如可以存储在源映射集合(mapSources)中,源映射集合(mapSources)中包括多个视频数据结构VideoSource,一路视频帧数据流的每帧视频解码帧所对应的画面布局信息存储在一个视频数据结构VideoSource中。
示意性的,控制多点控制单元的流媒体合流组件从而获取到至少一路视频帧数据流,此时可得到各路视频帧数据流中的至少一帧视频解码帧,然后开始将至少一组视频帧数据流加入到合流中:从源映射集合(mapSources)中查询每路视频解码帧的视频数据结构VideoSource,按照视频数据结构VideoSource中的画面布局信息来创建一个基础画布baseFrame,具体根据画面布局信息中的画面宽度以及画面高度创建一个基础画布baseFrame作为多路视频帧画面的背景;
2、将各所述视频解码帧渲染至所述基础画布上,以基于所述基础画布生成视频合流帧;
3、确定包含至少一帧所述视频合流帧的第一媒体流。
可以理解的,在画面布局信息包含了预先针对视频解码帧在基础画布baseFrame上的合流布局信息,如渲染位置、画面大小等合流布局信息,基于此,可根据每路视频解码帧在基础画布baseFrame的画面布局信息将视频解码帧对应的视频显示画面渲染至基础画布的布局位置,这样一组多路视频解码帧在基础画布上渲染完成后就可以生成一帧视频合流帧。如图6所示,图6是一种合流的示意图,一路流的当前视频解码帧基于画面布局信息在基础画布上对应一个视频帧画面,多路流的各帧视频解码帧在图6所示的基础画布上对应多个视频帧画面,如视频帧画面1、视频帧画面2、视频帧画面n等等,将每路流的当前视频解码帧对应的视频显示画面渲染至基础画布的布局位置,这样基础画布上就包含已经渲染完成的多个视频帧画面,基于渲染完成的基础画布就可以生成一帧视频合流帧,随着各路视频解码帧的合流过程的不断进行,可以得到若干帧视频合流帧,这些若干帧视频合流帧就构成了第一媒体流。
可选的,合流布局信息在基础画布上所对应的合流布局样式可以是悬浮布局样式、自适应布局样式、自适应布局样式、自定义布局样式等等,合流布局信息预先可基于流媒体业务来进行设置。
可选的,在获取各路所述视频帧数据流中的至少一帧视频解码帧之后,可以对流媒体业务进行相应扩展以更契合实际业务需求。具体控制多点控制单元实现对多路视频解码帧对应视频帧画面的旋转、缩放、布局、高亮和文字渲染等画面调整,可以避免直接画面合流所呈现的画面显示样式单一,丰富了合流画面的显示效果,契合实际流媒体业务需求。
具体的,可以确定针对各路视频帧数据流的视频解码帧的画面调整方式,按照所述画面调整方式对各视频解码帧进行画面调整,得到画面调整后的目标视频解码帧;然后再将各目标视频解码帧渲染至所述基础画布上的目标位置,以基于渲染完成的基础画布生成视频合流帧。
所述画面调整方式包括但不限于画面旋转、画面缩放、画面布局、画面高亮和画面文字渲染等方式,具体画面调整方式包基于实际流媒体应用场景预先确定。
可以理解的,流媒体合流组件预先会初始化画面布局信息,并将画面布局信息进行存储,如可以存储在源映射集合(mapSources)中,源映射集合(mapSources)中包括多个视频数据结构VideoSource,在画面布局信息中会包含画面调整方式,如是画面旋转信息、画面布局信息、画面高亮信息等等。
示意性的,流媒体合流组件执行所述确定针对各所述视频解码帧的画面调整方式,可以是:
通过获取针对各视频帧数据流的画面布局信息,从画面布局信息中确定视频帧数据流对应视频解码帧的画面调整方式。如,可以从源映射集合(mapSources)中获取某路视频帧数据流的视频数据结构VideoSource,视频数据结构VideoSource对应存储有画面布局信息,基于此可从画面布局信息中确定视频帧数据流对应视频解码帧的画面调整方式,诸如画面旋转、画面缩放、画面布局、画面高亮和画面文字渲染等方式中的一种或多种。
进一步的,在获取到各路所述视频帧数据流中的至少一帧视频解码帧之后,开始合流时先可以获取当前的混流间隔时间,混流间隔时间也即当前的合流时间与上一次混流间隔时间的时间差值。
进一步的,在获取到混流间隔时间之后,检测混流间隔时间是否大于单帧间隔时间,所述单帧间隔时间为帧率fps的倒数;
若是,则执行创建针对所述视频解码帧的基础画布的步骤,也即开始对多路视频解码帧进行合流。
若否,则取消本次合流。
例如,服务平台通过流媒体合流组件的组件接口进行合流操作,流媒体合流组件可以获取到各路视频帧数据流中的至少一帧视频解码帧,检测当前的混流间隔时间间是否大于单帧间隔时间,若是,进行合流;进一步的,流媒体合流组件创建针对各路视频解码帧的基础画布,然后遍历源映射集合mapSources,取出每个视频帧数据流中当前待合流的视频解码帧(通常为接收时间较早的视频解码帧),获取并确定针对各视频帧数据流的画面布局信息,从画面布局信息中确定视频帧数据流对应视频解码帧的画面调整方式,如画面缩放信息、画面高亮信息等等,按照画面调整方式对视频解码帧对应的视频帧画面进行调整(如等比例缩放、画面高亮等等),然后得到画面调整之后的目标视频解码帧;然后再将各目标视频解码帧对应的画面渲染至所述基础画布上的目标位置,如根据画面布局信息中的x,y,w,h等位置信息将目标视频解码帧的yuv数据拷贝到基础画布baseFrame的指定位置,并基于渲染器filter将目标视频解码帧对应画面名称name添加到基础画布baseFrame上,如果画面调整方式的highlight为ture(也即需要对目标视频解码帧进行画面高亮),则同时将高亮的yuv框添加到baseFrame中。最后,根据当前的***时间偏移,设置基础画布baseFrame的播放(显示)时间戳pts和/或解码时间戳dts等信息以便于后续可以正常播放,这样就基于渲染完成的基础画布生成了视频合流帧。
在一种可行的实施方式中,所述解码帧数据流为音频帧数据流,控制多点控制单元的流媒体合流组件执行所述对各路所述解码帧数据流进行合流处理,得到第一媒体流,具体可以是:
1、将各路所述音频帧数据流的每帧音频解码帧保存至音频队列中,获取针对所述音频帧数据流的混流间隔时间;
示意性的,预先基于实际流媒体业务场景结合音频帧数据流,对每路音频帧数据流的音频解码帧进行音频基础信息的初始化。所述音频基础信息可以是音频采样率、声道数、合流间隔(mixCycle)时间、是否***静音帧insertMute、等待时间bufferDelay等信息参数中的一种或多种的拟合,音频基础信息用于后续如何将各路音频解码帧进行合流处理。
可选的,流媒体合流组件会在合流之前预先初始化音频基础信息,并将音频基础信息进行存储,如可以存储在源映射集合(mapSources)中,源映射集合(mapSources)中包括多个音频数据结构AVSource,一路音频帧数据流的每帧音频解码帧所对应的的音频基础信息存储在一个音频数据结构AVSource中,在音频数据结构AVSource中的音频基础信息还可以包含该路流对应的音频队列frame,音频队列frame上一次添加音频解码帧的时间lastMs。
所述音频队列用于存放或容纳一路音频帧数据流的音频解码帧,不同的音频队列对应不同路的音频帧数据流。可以理解的,在服务平台的多点控制单元每获取到音频帧数据流的当前音频解码帧,即将当前音频解码帧放入音频队列中。
所述混流间隔时间为当前***时间与上一次混流(或合流)时间的时间差值。
可以理解的,控制多点控制单元的流媒体合流组件获取或接收各路音频帧数据流的音频解码帧通常会持续一段时间,在每接收到任一路的音频解码帧后,将每路音频解码帧分别放入到相应音频帧数据流的音频队列中,并同时更新lastMs,也即音频队列的上一次添加音频解码帧的时间。
以及,保存至音频队列中的同时基于当前***时间与上一次混流时间计算当前的混流间隔时间。
2、若所述混流间隔时间大于合流间隔时间,则将各所述音频队列中处于队首的参考音频解码帧添加入合流队列,所述合流间隔时间为针对第一媒体流设置的帧间隔时间;
可以理解的,在音频队列中每帧音频解码帧按照时间顺序进行排序。
所述合流队列用于对所加入的参考音频解码帧进行存储或保存,后续可直接对合流队列的所有参考音频解码帧进行音频合流,得到音频合流帧。进一步的,在每对合流队列的所有参考音频解码帧完成一帧音频合流帧的合流,即可以对合流队列的帧进行清除。通常每次合流队列的参考音频解码帧的数量小于或等于音频帧数据流的路数。
所述合流间隔时间为针对第一媒体流设置的帧间隔时间,预先基于实际流媒体业务的音频合流传输需求确定,如考虑到音频数据包常规的音频传输时间,可将合流间隔时间设置为音频传输时间(如20ms)。
在一种可行的实施方式中,可仅比较混流间隔时间以及合流间隔时间,在混流间隔时间大于合流间隔时间时,将各所述音频队列中处于队首的参考音频解码帧添加入合流队列。
可选的,在混流间隔时间大于合流间隔时间的情况下,可进一步考虑到流媒体业务需求以及抗弱网的效果,通过纳入缓存等待时延进行是否合流的优化。
示意性的,若所述混流间隔时间大于合流间隔时间,则可认为这一路流可以加入合流,具体实施中,若混流间隔时间大于合流间隔时间,则检测各音频队列中是否存在不含帧数据的第一音频队列以及所述第一音频队列的帧入队间隔时间是否小于缓存等待时延;
所述不含帧数据的第一音频队列也即考虑到由于网络抖动等客观因素可能某一路音频帧传输过程中丢失率较高,这一路音频帧数据流未接收到完整的音频解码帧,也即该路音频帧数据流对应的音频队列中不含音频解码帧的帧数据,符合前述形式的音频队列也即第一队列。
所述帧入队间隔时间为在第一音频队列不含帧数据的情况下,第一音频队列的上一次帧入队时间与当前***时间的时间差值也即帧入队间隔时间。
可选的,若各所述音频队列中不存在所述第一音频队列,则将各音频队列中处于队首的参考音频解码帧添加入合流队列;可以理解的,不存第一音频队列也即所有音频队列中均存在音频解码帧,此时通常各路流的传输环境良好或抗弱网效果较高,基于此,可直接将各音频队列中处于队首的参考音频解码帧添加入合流队列。
可选的,若各所述音频队列中存在所述第一音频队列且所述帧入队间隔时间小于所述缓存等待时延,则停止合流处理;可以理解的,此时存在某一路流由于网络抖动等客观原因导致未正常获取到该路流的音频解码帧,后续存在一定时延可能在较短时间内接收到该路流的音频解码帧以加入第一音频队列中,或,后续可能在较短时间内基于服务平台的抗弱网机制恢复了丢失的音频解码帧以加入第一音频队列中。基于此,通过设置缓存等待时延进行,可以实现对前述情形的等待量化,因此退出合流避免关键音频数据因直接合流导致的数据丢失,进行音频解码帧的等待处理。
可选的,若各音频队列中存在所述第一音频队列且第一音频队列的帧入队间隔时间大于或等于缓存等待时延,则可以将第二音频队列中处于队首的参考音频解码帧添加入合流队列,所述第二音频队列为各所述音频队列中除所述第一音频队列的音频队列。可以理解的,此时,当前的帧入队间隔时间超过了实际缓存等待时延,为了保障流媒体业务的实时性等需求,则取消音频解码帧的等待处理,将第二音频队列中处于队首的参考音频解码帧添加入合流队列触发合流。
示意性的,考虑到音频采样特性,每路音频解码帧进行合流时需要考虑到合流间隔时间对应采样时间的影响,以避免合流效果不佳,具体如下:
执行所述将各所述音频队列中处于队首的参考音频解码帧添加入合流队列,可以是:
1、确定各所述音频队列中处于队首的参考音频解码帧,确定各所述参考音频解码帧对应的播放时间戳以及各所述播放时间戳中最小值指示的目标播放时间戳;
示意性的,假设有4路音频流,则每路流分别对应一个音频队列,每个音频队列中保存有该路流的音频解码帧,确定音频队列中处于队首的音频解码帧作为参考音频解码帧。可以基于音频解码帧的帧数据结构来获取到帧编码时对应的播放时间戳。也就是说,确定各所述参考音频解码帧对应的播放时间戳可以通过“音频解码帧的帧数据结构”来确定。基于此,可从播放时间戳中获取到最小值指示的目标播放时间戳。
2、计算所述播放时间戳与所述目标播放时间戳的时间差值,将所述时间差值的绝对值作为针对所述参考音频解码帧的绝对差值时间,以及获取合流间隔时间对应的采样时间;
所述合流间隔时间对应的采样时间可直接基于设置的音频采样率、合流间隔时间进行时间转换得到采样时间,假设合流间隔时间设置为20ms,音频采样率为48000,则合流间隔时间对应的采样时间为:48000除1000(s与ms的换算单位)再乘20所得到的值。
示意性的,可以基于音频数据结构AVSource中的音频基础信息来确定音频采样率以及合流间隔时间(mixCycle),基于此可确定合流间隔时间对应的采样时间。
所述绝对差值时间为针对任一音频队列的参考音频解码帧计算其播放时间戳与所述目标播放时间戳的时间差值diff,取时间差值的绝对值作为绝对差值时间。
3、获取各所述参考音频解码帧中所述绝对差值时间小于所述采样时间的第一音频解码帧,则将所述第一音频解码帧添加入合流队列。
示意性的,对各非空的音频队列中的参考音频解码帧进行检测,检测参考音频解码帧的绝对差值时间是否小于采样时间;
若参考音频解码帧的绝对差值时间小于采样时间,则将该参考音频作为第一音频解码帧,将第一音频解码帧从音频队列中出队加入至合流队列中。此时,可的第一音频解码帧为满足音频合流需求的数据。
可选的,若参考音频解码帧对应的时间差值大于采样时间,则将时间差值大于采样时间的参考音频解码帧从音频队列中出队并进行丢弃。可以理解的,如果这个差值大于合流间隔对应的采样时间较多,从音频语境上来看可能与其其他路合流音频不在同一维度上(如同一时间点上),因此需要进行舍弃,以避免直接音频合流导致合流之后的音频实际效果不佳。
3、对所述合流队列的所有参考音频解码帧进行合流处理,得到音频合流帧,基于音频合流帧生成第一媒体流。
示意性的,遍历合流队列中的所有参考音频解码帧对应的音频采样点,对每个参考音频解码帧的采样点幅值进行叠加合流处理,得到音频合流帧;进一步的,生成一帧音频合流帧之后对合流队列进行队列数据清除,以此类推依次合流得到若干音频合流帧
可选的,若叠加合流处理中某个合流点的幅值超出了预设幅值范围,则对每个采样点按一定幅值系数进行幅值削弱,以避免声音过饱和。
在一些流媒体场景中,在流媒体合流之前,可能存在基于流媒体业务场景会设置静音帧标志位,可从音频数据结构AVSource中的音频基础信息检测是否包含是否需要***静音帧insertMute,如果需要***静音帧insertMute,则可以检测各音频合流帧的播放时间戳之间的帧间隔范围,结合合流间隔时间(如20ms)在帧间隔范围内来***静音帧。
在一种具体的实施场景中,以媒体流为视频媒体流为例结合多点控制单元的组件层对数据流转场景进行示意,如图7所示,图7是一种视频媒体流合流的示意图。如下:
A1、控制选择性转发单元接收至少两路视频媒体流,通过所述选择性转发单元将各视频媒体流发送至多点控制单元;
A2、通过所述多点控制单元的所述流媒体缓存组件接收所述选择性转发单元的各视频媒体流,并对视频媒体流对应的至少一个流媒体数据包进行缓存处理;
A3、控制多点控制单元的解封装组件读取流媒体缓存组件所缓存的各视频媒体流并对视频媒体流进行解封装处理,得到各视频媒体流分别对应的视频编码帧数据流;
A4、控制多点控制单元的流媒体解码组件对各视频编码帧数据流进行帧解码处理,分别得到各视频编码帧数据流分别对应的视频解码帧数据流;
A5、控制多点控制单元的流媒体合流组件对各路视频解码帧数据流进行合流处理,得到第一视频媒体流。
A6、控制所述多点控制单元的流媒体编码组件对第一媒体流进行视频帧编码处理,得到视频帧编码处理后的第二视频媒体流。
A7、控制所述多点控制单元的流媒体封装组件对第二视频媒体流进行数据封装处理,得到数据封装处理后的目标视频媒体流。
在一种具体的实施场景中,以媒体流为音频媒体流为例结合多点控制单元的组件层对数据流转场景进行示意,如图8所示,图8是一种音频媒体流合流的示意图。如下:
B1、控制选择性转发单元接收至少两路音频媒体流,通过所述选择性转发单元将各音频媒体流发送至多点控制单元;
B2、控制多点控制单元的解封装组件获取各音频媒体流并对音频媒体流进行解封装处理,得到各音频媒体流分别对应的音频编码帧数据流;
在一种可行的实施方式中,可以通过多点控制单元的所述流媒体缓存组件接收所述选择性转发单元的各音频媒体流,并对音频媒体流对应的至少一个流媒体数据包进行缓存处理;
然后再控制多点控制单元的解封装组件读取流媒体缓存组件所缓存的各音频媒体流并对音频媒体流进行解封装处理,得到各音频媒体流分别对应的音频编码帧数据流;
B3、控制多点控制单元的流媒体解码组件对各音频编码帧数据流进行帧解码处理,分别得到各音频编码帧数据流分别对应的音频解码帧数据流;
B4、控制多点控制单元的流媒体合流组件对各路音频解码帧数据流进行合流处理,得到第一音频媒体流。
B5、控制所述多点控制单元的流媒体编码组件对第一媒体流进行音频帧编码处理,得到音频帧编码处理后的第二音频媒体流。
B6控制所述多点控制单元的流媒体封装组件对第二音频媒体流进行数据封装处理,得到数据封装处理后的目标音频媒体流。
在一种具体的实施场景中,媒体流还可以是音频媒体流和视频媒体流,以媒体流为音频媒体流和视频媒体流为例结合多点控制单元的组件层对数据流转场景进行示意,如图9所示,图9是一种音视频媒体流合流的示意图。基于图9可知多点控制单元可以分两路进行,一路可执行A1~A7进行视频合流,一路可执行B1~B6进行音频合流,具体细节与上述音频媒体流和视频媒体流的合流过程类型,此处不再额外赘述。
S305:通过所述多点控制单元的所述传输层对所述目标媒体流进行流媒体业务处理。
可以理解的,服务平台在多点控制单元上通过组件层和传输层的分层设计,通过组件层实现各类基础合流能力,通过传输层实现各类流媒体业务处理逻辑,高内聚低耦合的特性利于流媒体业务处理的快速扩展,服务平台通过多点控制单元的传输层对目标媒体流进行流媒体业务处理,如媒体流分发、合流推流等。
在本申请一个或多个实施例中,服务平台通过基于选择性转发单元和多点控制单元进行流媒体数据处理,可实现选择性转发单元和多点控制单元的服务质量能力以及抗弱网能力的充分复用,克服了服务平台对流媒体处理的局限性,在兼顾流媒体传输效率的同时大幅提升了流媒体处理的稳定性;以及,实际应用中避免了在多点控制单元上开发诸如抗弱网功能,降低了服务平台侧的维护成本以及开发难度;以及,在多点控制单元上通过组件层和传输层的分层处理,通过组件层实现各类基础能力,通过传输层实现各类业务逻辑,高内聚低耦合的架构利于新的业务的快速扩展;以及,通过在多点控制单元上设置视频合流组件,能够在合流的同时实现多个视频流画面的诸如旋转、缩放、布局、高亮和文字渲染等画面调整,提升了合流画面效果;以及通过在多点控制单元上设置流媒体缓存组件,实现了在多点控制单元在的抗弱网效果,能够减小因网络抖动和丢包造成的画面损失。
下面将结合图10,对本申请实施例提供的数据处理装置进行详细介绍。需要说明的是,图10所示的数据处理装置,用于执行本申请一个或多个所示实施例的方法,为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请一个或多个所示的实施例。
请参见图10,其示出本申请实施例的数据处理装置的结构示意图。该数据处理装置1可以通过软件、硬件或者两者的结合实现成为用户终端的全部或一部分。根据一些实施例,该数据处理装置1包括接收模块11和处理模块12,具体用于:
接收模块11,用于控制选择性转发单元接收至少两路媒体流,以及通过所述选择性转发单元将各所述媒体流发送至多点控制单元;
处理模块12,用于控制所述多点控制单元对各所述媒体流进行合流处理得到目标媒体流,并通过所述多点控制单元对所述目标媒体流进行流媒体业务处理。
可选的,如图11所示,所述装置1,还包括:
抗弱网模块13,用于基于所述选择性转发单元和所述多点控制单元中的至少其一,对所述媒体流进行抗弱网处理。
可选的,所述抗弱网模块13,具体用于:
在所述选择性转发单元接收所述媒体流时,控制所述选择性转发单元采用第一抗弱网机制对所述媒体流进行服务质量处理,得到处理后的所述媒体流;和/或,
在所述多点控制单元接收到所述媒体流时,控制所述多点控制单元采用第二抗弱网机制对所述媒体流进行服务质量处理,得到处理后的所述媒体流。
可选的,所述抗弱网模块13,具体用于:
控制所述多点控制单元对所述媒体流对应的至少一个流媒体数据包进行包连续性检测,得到连续性检测结果;
基于所述连续性检测结果控制所述多点控制单元对所述媒体流进行关键帧重传处理,得到处理后包含关键帧数据包的所述媒体流。
可选的,所述抗弱网模块13,具体用于:
若所述连续性检测结果为不连续结果,则控制所述多点控制单元指示所述选择性转发单元进行关键帧重传处理,通过所述择性转发单元向流媒体发送端发送针对媒体流中关键帧数据包的关键帧请求;
控制所述选择性转发单元接收所述关键帧数据包并将所述关键帧数据包发送至所述多点控制单元;
控制所述多点控制单元接收所述关键帧数据包并生成包含所述关键帧数据包的所述媒体流。
可选的,所述抗弱网模块13,具体用于:
确定所述不连续结果对应的目标帧数据包,对所述目标帧数据包进行等待处理;
获取针对所述目标帧数据包的目标等待时长,若所述目标等待时长超时,则控制所述多点控制单元指示所述选择性转发单元进行关键帧重传处理。
可选的,所述多点控制单元包括组件层和传输层,所述处理模块12,具体用于:
控制所述多点控制单元的所述组件层对各所述媒体流进行合流处理得到目标媒体流;
通过所述多点控制单元的所述传输层对所述目标媒体流进行流媒体业务处理。
可选的,所述组件层包括流媒体缓存组件,
所述装置1,还用于:
通过所述多点控制单元的所述流媒体缓存组件接收所述选择性转发单元的各所述媒体流,并对所述媒体流对应的至少一个流媒体数据包进行缓存处理;和/或,
通过所述多点控制单元的所述流媒体缓存组件对所述媒体流进行抗弱网处理。
可选的,所述组件层包括解封装组件、流媒体解码组件、流媒体合流组件、流媒体编码组件以及流媒体封装组件,
所述处理模块12,具体用于:
控制所述多点控制单元的解封装组件对各所述媒体流进行解封装处理,得到各所述媒体流分别对应的编码帧数据流;
控制所述多点控制单元的流媒体解码组件对各所述编码帧数据流进行帧解码处理,分别得到各所述编码帧数据流分别对应的解码帧数据流;
控制所述多点控制单元的流媒体合流组件对各路所述解码帧数据流进行合流处理,得到第一媒体流;
控制所述多点控制单元的流媒体编码组件对第一媒体流进行帧编码处理,得到帧编码处理后的第二媒体流;
控制所述多点控制单元的流媒体封装组件对第二媒体流进行数据封装处理,得到数据封装处理后的目标媒体流。
可选的,所述解码帧数据流为视频帧数据流,所述处理模块12,具体用于:
获取各路所述视频帧数据流中的至少一帧视频解码帧,创建针对所述视频解码帧的基础画布;
将各所述视频解码帧渲染至所述基础画布上,以基于所述基础画布生成视频合流帧;
确定包含至少一帧所述视频合流帧的第一媒体流。
可选的,所述处理模块12,具体用于:
确定针对各所述视频解码帧的画面调整方式,按照所述画面调整方式对各所述视频解码帧进行画面调整,得到画面调整后的目标视频解码帧;
所述将各所述视频解码帧渲染至所述基础画布上,包括:
将各所述目标视频解码帧渲染至所述基础画布上的目标位置。
可选的,所述处理模块12,具体用于:
获取针对各所述视频帧数据流的画面布局信息,从所述画面布局信息中确定所述视频帧数据流对应视频解码帧的画面调整方式。
可选的,所述处理模块12,具体用于:
所述对各路所述解码帧数据流进行合流处理,得到第一媒体流,包括:
将各路所述音频帧数据流的每帧音频解码帧保存至音频队列中,获取针对所述音频帧数据流的混流间隔时间;
若所述混流间隔时间大于合流间隔时间,则将各所述音频队列中处于队首的参考音频解码帧添加入合流队列,所述合流间隔时间为针对第一媒体流设置的帧间隔时间;
对所述合流队列的所有参考音频解码帧进行合流处理,得到音频合流帧,基于所述音频合流帧生成第一媒体流。
可选的,所述处理模块12,具体用于:
若所述混流间隔时间大于合流间隔时间,则检测各所述音频队列中是否存在不含帧数据的第一音频队列以及所述第一音频队列的帧入队间隔时间是否小于缓存等待时延;
若各所述音频队列中不存在所述第一音频队列,则将各所述音频队列中处于队首的参考音频解码帧添加入合流队列;
若各所述音频队列中存在所述第一音频队列且所述第一音频队列的帧入队间隔时间大于或等于缓存等待时延,则将第二音频队列中处于队首的参考音频解码帧添加入合流队列,所述第二音频队列为各所述音频队列中除所述第一音频队列的音频队列。
可选的,所述处理模块12,具体用于:
若各所述音频队列中存在所述第一音频队列且所述帧入队间隔时间小于所述缓存等待时延,则停止合流处理;
可选的,所述处理模块12,具体用于:
确定各所述音频队列中处于队首的参考音频解码帧,确定各所述参考音频解码帧对应的播放时间戳以及各所述播放时间戳中最小值指示的目标播放时间戳;
计算所述播放时间戳与所述目标播放时间戳的时间差值,将所述时间差值的绝对值作为针对所述参考音频解码帧的绝对差值时间,以及获取合流间隔时间对应的采样时间;
获取各所述参考音频解码帧中所述绝对差值时间小于所述采样时间的第一音频解码帧,则将所述第一音频解码帧添加入合流队列。
可选的,所述处理模块12,具体用于:
若各所述参考音频解码帧中所述时间差值小于所述采样时间的第二音频解码帧,则将所述第二音频解码帧进行丢弃处理。
可选的,所述装置1,具体用于若流媒体业务为合流推流业务,则通过所述多点控制单元将所述目标媒体流发送至所述选择性转发单元,控制所述选择性转发单元对所述目标媒体流进行推流处理;
若流媒体业务为合流录制业务,则通过所述多点控制单元对所述目标媒体流进行流媒体录制处理。
需要说明的是,上述实施例提供的数据处理装置在执行数据处理方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请一个或多个实施例中,服务平台通过基于选择性转发单元和多点控制单元进行流媒体数据处理,可实现选择性转发单元和多点控制单元的服务质量能力以及抗弱网能力的充分复用,克服了服务平台对流媒体处理的局限性,在兼顾流媒体传输效率的同时大幅提升了流媒体处理的稳定性;以及,实际应用中避免了在多点控制单元上开发诸如抗弱网功能,降低了服务平台侧的维护成本以及开发难度;以及,在多点控制单元上通过组件层和传输层的分层处理,通过组件层实现各类基础能力,通过传输层实现各类业务逻辑,高内聚低耦合的架构利于新的业务的快速扩展;以及,通过在多点控制单元上设置视频合流组件,能够在合流的同时实现多个视频流画面的诸如旋转、缩放、布局、高亮和文字渲染等画面调整,提升了合流画面效果;以及通过在多点控制单元上设置流媒体缓存组件,实现了在多点控制单元在的抗弱网效果,能够减小因网络抖动和丢包造成的画面损失。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1~图9所示实施例的所述数据处理方法,具体执行过程可以参见图1~图9所示实施例的具体说明,在此不进行赘述。
本申请还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行如上述图1~图9所示实施例的所述数据处理方法,具体执行过程可以参见图1~图9所示实施例的具体说明,在此不进行赘述。
请参见图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在执行所述对各路所述解码帧数据流进行合流处理,得到第一媒体流时,具体执行以下步骤:
将各路所述音频帧数据流的每帧音频解码帧保存至音频队列中,获取针对所述音频帧数据流的混流间隔时间;
若所述混流间隔时间大于合流间隔时间,则将各所述音频队列中处于队首的参考音频解码帧添加入合流队列,所述合流间隔时间为针对第一媒体流设置的帧间隔时间;
对所述合流队列的所有参考音频解码帧进行合流处理,得到音频合流帧,基于所述音频合流帧生成第一媒体流。
在一个实施例中,所述处理器1001在执行所述若所述混流间隔时间大于合流间隔时间,则将各所述音频队列中处于队首的参考音频解码帧添加入合流队列时,具体执行以下步骤:
若所述混流间隔时间大于合流间隔时间,则检测各所述音频队列中是否存在不含帧数据的第一音频队列以及所述第一音频队列的帧入队间隔时间是否小于缓存等待时延;
若各所述音频队列中不存在所述第一音频队列,则将各所述音频队列中处于队首的参考音频解码帧添加入合流队列;
若各所述音频队列中存在所述第一音频队列且所述第一音频队列的帧入队间隔时间大于或等于缓存等待时延,则将第二音频队列中处于队首的参考音频解码帧添加入合流队列,所述第二音频队列为各所述音频队列中除所述第一音频队列的音频队列。
在一个实施例中,所述处理器1001在执行所述数据处理方法时,还执行以下步骤:
若各所述音频队列中存在所述第一音频队列且所述帧入队间隔时间小于所述缓存等待时延,则停止合流处理;
在一个实施例中,所述处理器1001在执行所述将各所述音频队列中处于队首的参考音频解码帧添加入合流队列时,具体执行以下步骤:
确定各所述音频队列中处于队首的参考音频解码帧,确定各所述参考音频解码帧对应的播放时间戳以及各所述播放时间戳中最小值指示的目标播放时间戳;
计算所述播放时间戳与所述目标播放时间戳的时间差值,将所述时间差值的绝对值作为针对所述参考音频解码帧的绝对差值时间,以及获取合流间隔时间对应的采样时间;
获取各所述参考音频解码帧中所述绝对差值时间小于所述采样时间的第一音频解码帧,则将所述第一音频解码帧添加入合流队列。
在一个实施例中,所述处理器1001在执行所述数据处理方法时,还执行以下步骤:
若各所述参考音频解码帧中所述时间差值小于所述采样时间的第二音频解码帧,则将所述第二音频解码帧进行丢弃处理。
在一个实施例中,所述处理器1001在执行所述通过所述多点控制单元的所述传输层对所述目标媒体流进行流媒体业务处理时,具体执行以下步骤:
若流媒体业务为合流推流业务,则通过所述多点控制单元将所述目标媒体流发送至所述选择性转发单元,控制所述选择性转发单元对所述目标媒体流进行推流处理;
若流媒体业务为合流录制业务,则通过所述多点控制单元对所述目标媒体流进行流媒体录制处理。
在本申请一个或多个实施例中,服务平台通过基于选择性转发单元和多点控制单元进行流媒体数据处理,可实现选择性转发单元和多点控制单元的服务质量能力以及抗弱网能力的充分复用,克服了服务平台对流媒体处理的局限性,在兼顾流媒体传输效率的同时大幅提升了流媒体处理的稳定性;以及,实际应用中避免了在多点控制单元上开发诸如抗弱网功能,降低了服务平台侧的维护成本以及开发难度;以及,在多点控制单元上通过组件层和传输层的分层处理,通过组件层实现各类基础能力,通过传输层实现各类业务逻辑,高内聚低耦合的架构利于新的业务的快速扩展;以及,通过在多点控制单元上设置视频合流组件,能够在合流的同时实现多个视频流画面的诸如旋转、缩放、布局、高亮和文字渲染等画面调整,提升了合流画面效果;以及通过在多点控制单元上设置流媒体缓存组件,实现了在多点控制单元在的抗弱网效果,能够减小因网络抖动和丢包造成的画面损失。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (19)
1.一种数据处理方法,其特征在于,应用于服务平台,所述方法包括:
控制选择性转发单元接收至少两路媒体流,以及通过所述选择性转发单元将各所述媒体流发送至多点控制单元;
控制所述多点控制单元对各所述媒体流进行合流处理得到目标媒体流,并通过所述多点控制单元对所述目标媒体流进行流媒体业务处理;
其中,所述方法还包括:
在所述多点控制单元接收到所述选择性转发单元发送的所述媒体流时,控制所述多点控制单元采用第二抗弱网机制对所述媒体流进行服务质量处理,得到处理后的所述媒体流;
其中,所述控制所述多点控制单元采用第二抗弱网机制对所述媒体流对应的至少一个流媒体数据包进行服务质量处理,得到处理后的所述媒体流,包括:
控制所述多点控制单元对所述媒体流对应的至少一个流媒体数据包进行包连续性检测,得到连续性检测结果;
基于所述连续性检测结果控制所述多点控制单元对所述媒体流进行关键帧重传处理,得到处理后包含关键帧数据包的所述媒体流。
2.根据权利要求1所述的方法,其特征在于,所述通过所述选择性转发单元将各所述媒体流发送至多点控制单元,包括:
在所述选择性转发单元接收到客户端发送的所述媒体流时,控制所述选择性转发单元采用第一抗弱网机制对所述媒体流进行服务质量处理,得到处理后的所述媒体流;
通过所述选择性转发单元将处理后的所述媒体流发送至多点控制单元。
3.根据权利要求1所述的方法,其特征在于,所述基于所述连续性检测结果控制所述多点控制单元对所述媒体流进行关键帧重传处理,得到处理后包含关键帧数据包的所述媒体流,包括:
若所述连续性检测结果为不连续结果,则控制所述多点控制单元指示所述选择性转发单元进行关键帧重传处理,通过所述选择性转发单元向流媒体发送端发送针对媒体流中关键帧数据包的关键帧请求;
控制所述选择性转发单元接收所述关键帧数据包并将所述关键帧数据包发送至所述多点控制单元;
控制所述多点控制单元接收所述关键帧数据包并生成包含所述关键帧数据包的所述媒体流。
4.根据权利要求3所述的方法,其特征在于,所述控制所述多点控制单元指示所述选择性转发单元进行关键帧重传处理,包括:
确定所述不连续结果对应的目标帧数据包,对所述目标帧数据包进行等待处理;
获取针对所述目标帧数据包的目标等待时长,若所述目标等待时长超时,则控制所述多点控制单元指示所述选择性转发单元进行关键帧重传处理。
5.根据权利要求1所述的方法,其特征在于,所述多点控制单元包括组件层和传输层,
所述控制所述多点控制单元对各所述媒体流进行合流处理得到目标媒体流,并通过所述多点控制单元对所述目标媒体流进行流媒体业务处理,包括:
控制所述多点控制单元的所述组件层对各所述媒体流进行合流处理得到目标媒体流;
通过所述多点控制单元的所述传输层对所述目标媒体流进行流媒体业务处理。
6.根据权利要求5所述的方法,其特征在于,所述组件层包括流媒体缓存组件,
所述通过所述选择性转发单元将各所述媒体流发送至多点控制单元之后,还包括:
通过所述多点控制单元的所述流媒体缓存组件接收所述选择性转发单元的各所述媒体流,并对所述媒体流对应的至少一个流媒体数据包进行缓存处理;和/或,
通过所述多点控制单元的所述流媒体缓存组件对所述媒体流进行抗弱网处理。
7.根据权利要求5所述的方法,其特征在于,所述组件层包括解封装组件、流媒体解码组件、流媒体合流组件、流媒体编码组件以及流媒体封装组件,
所述控制所述多点控制单元的所述组件层对各所述媒体流进行合流处理得到目标媒体流,包括:
控制所述多点控制单元的解封装组件对各所述媒体流进行解封装处理,得到各所述媒体流分别对应的编码帧数据流;
控制所述多点控制单元的流媒体解码组件对各所述编码帧数据流进行帧解码处理,分别得到各所述编码帧数据流分别对应的解码帧数据流;
控制所述多点控制单元的流媒体合流组件对各路所述解码帧数据流进行合流处理,得到第一媒体流;
控制所述多点控制单元的流媒体编码组件对第一媒体流进行帧编码处理,得到帧编码处理后的第二媒体流;
控制所述多点控制单元的流媒体封装组件对第二媒体流进行数据封装处理,得到数据封装处理后的目标媒体流。
8.根据权利要求7所述的方法,其特征在于,所述解码帧数据流为视频帧数据流,
所述对各路所述解码帧数据流进行合流处理,得到第一媒体流,包括:
获取各路所述视频帧数据流中的至少一帧视频解码帧,创建针对所述视频解码帧的基础画布;
将各所述视频解码帧渲染至所述基础画布上,以基于所述基础画布生成视频合流帧;
确定包含至少一帧所述视频合流帧的第一媒体流。
9.根据权利要求8所述的方法,其特征在于,所述获取各路所述视频帧数据流中的至少一帧视频解码帧之后,还包括:
确定针对各所述视频解码帧的画面调整方式,按照所述画面调整方式对各所述视频解码帧进行画面调整,得到画面调整后的目标视频解码帧;
所述将各所述视频解码帧渲染至所述基础画布上,包括:
将各所述目标视频解码帧渲染至所述基础画布上的目标位置。
10.根据权利要求9所述的方法,其特征在于,所述确定针对各所述视频解码帧的画面调整方式,包括:
获取针对各所述视频帧数据流的画面布局信息,从所述画面布局信息中确定所述视频帧数据流对应视频解码帧的画面调整方式。
11.根据权利要求7所述的方法,其特征在于,所述解码帧数据流为音频帧数据流,
所述对各路所述解码帧数据流进行合流处理,得到第一媒体流,包括:
将各路所述音频帧数据流的每帧音频解码帧保存至音频队列中,获取针对所述音频帧数据流的混流间隔时间;
若所述混流间隔时间大于合流间隔时间,则将各所述音频队列中处于队首的参考音频解码帧添加入合流队列,所述合流间隔时间为针对第一媒体流设置的帧间隔时间;
对所述合流队列的所有参考音频解码帧进行合流处理,得到音频合流帧,基于所述音频合流帧生成第一媒体流。
12.根据权利要求11所述的方法,其特征在于,所述若所述混流间隔时间大于合流间隔时间,则将各所述音频队列中处于队首的参考音频解码帧添加入合流队列,包括:
若所述混流间隔时间大于合流间隔时间,则检测各所述音频队列中是否存在不含帧数据的第一音频队列以及所述第一音频队列的帧入队间隔时间是否小于缓存等待时延;
若各所述音频队列中不存在所述第一音频队列,则将各所述音频队列中处于队首的参考音频解码帧添加入合流队列;
若各所述音频队列中存在所述第一音频队列且所述第一音频队列的帧入队间隔时间大于或等于缓存等待时延,则将第二音频队列中处于队首的参考音频解码帧添加入合流队列,所述第二音频队列为各所述音频队列中除所述第一音频队列的音频队列。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
若各所述音频队列中存在所述第一音频队列且所述帧入队间隔时间小于所述缓存等待时延,则停止合流处理。
14.根据权利要求12或11所述的方法,其特征在于,所述将各所述音频队列中处于队首的参考音频解码帧添加入合流队列,包括:
确定各所述音频队列中处于队首的参考音频解码帧,确定各所述参考音频解码帧对应的播放时间戳以及各所述播放时间戳中最小值指示的目标播放时间戳;
计算所述播放时间戳与所述目标播放时间戳的时间差值,将所述时间差值的绝对值作为针对所述参考音频解码帧的绝对差值时间,以及获取合流间隔时间对应的采样时间;
获取各所述参考音频解码帧中所述绝对差值时间小于所述采样时间的第一音频解码帧,则将所述第一音频解码帧添加入合流队列。
15.根据权利要求14所述的方法,其特征在于,所述方法还包括:
若各所述参考音频解码帧中所述时间差值小于所述采样时间的第二音频解码帧,则将所述第二音频解码帧进行丢弃处理。
16.根据权利要求5所述的方法,其特征在于,所述通过所述多点控制单元的所述传输层对所述目标媒体流进行流媒体业务处理,包括:
若流媒体业务为合流推流业务,则通过所述多点控制单元将所述目标媒体流发送至所述选择性转发单元,控制所述选择性转发单元对所述目标媒体流进行推流处理;
若流媒体业务为合流录制业务,则通过所述多点控制单元对所述目标媒体流进行流媒体录制处理。
17.一种数据处理装置,其特征在于,所述装置包括:
接收模块,用于控制选择性转发单元接收至少两路媒体流,以及通过所述选择性转发单元将各所述媒体流发送至多点控制单元;
处理模块,用于控制所述多点控制单元对各所述媒体流进行合流处理得到目标媒体流,并通过所述多点控制单元对所述目标媒体流进行流媒体业务处理;
其中,所述装置还用于:在所述多点控制单元接收到所述选择性转发单元发送的所述媒体流时,控制所述多点控制单元采用第二抗弱网机制对所述媒体流进行服务质量处理,得到处理后的所述媒体流;
其中,所述控制所述多点控制单元采用第二抗弱网机制对所述媒体流对应的至少一个流媒体数据包进行服务质量处理,得到处理后的所述媒体流,包括:
控制所述多点控制单元对所述媒体流对应的至少一个流媒体数据包进行包连续性检测,得到连续性检测结果,基于所述连续性检测结果控制所述多点控制单元对所述媒体流进行关键帧重传处理,得到处理后包含关键帧数据包的所述媒体流。
18.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~16任意一项的方法步骤。
19.一种电子设备,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~16任意一项的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210740516.4A CN115209163B (zh) | 2022-06-28 | 2022-06-28 | 数据处理方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210740516.4A CN115209163B (zh) | 2022-06-28 | 2022-06-28 | 数据处理方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115209163A CN115209163A (zh) | 2022-10-18 |
CN115209163B true CN115209163B (zh) | 2024-07-02 |
Family
ID=83578718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210740516.4A Active CN115209163B (zh) | 2022-06-28 | 2022-06-28 | 数据处理方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115209163B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115883501A (zh) * | 2022-12-08 | 2023-03-31 | 武汉斗鱼鱼乐网络科技有限公司 | 一种多人即时通信方法、***、介质及设备 |
CN117499688B (zh) * | 2023-12-29 | 2024-05-03 | 淘宝(中国)软件有限公司 | 直播连麦中音视频合流处理方法、设备及存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114640653A (zh) * | 2022-03-04 | 2022-06-17 | 杭州东信北邮信息技术有限公司 | 一种视频会议中的流媒体分发***及方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9948785B2 (en) * | 2016-03-22 | 2018-04-17 | Ale International | Methods and nodes for controlling a conference communication |
CN110995946B (zh) * | 2019-12-25 | 2021-08-20 | 苏州科达科技股份有限公司 | 混音方法、装置、设备、***及可读存储介质 |
-
2022
- 2022-06-28 CN CN202210740516.4A patent/CN115209163B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114640653A (zh) * | 2022-03-04 | 2022-06-17 | 杭州东信北邮信息技术有限公司 | 一种视频会议中的流媒体分发***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115209163A (zh) | 2022-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113423018B (zh) | 一种游戏数据处理方法、装置及存储介质 | |
CN115209163B (zh) | 数据处理方法、装置、存储介质及电子设备 | |
US10154320B2 (en) | Dynamic time synchronization | |
US7133362B2 (en) | Intelligent buffering process for network conference video | |
US8954178B2 (en) | Synchronization and mixing of audio and video streams in network-based video conferencing call systems | |
EP2129126A1 (en) | Transmission apparatus, transmission method, and reception apparatus | |
JP2020519094A (ja) | ビデオ再生方法、デバイス、およびシステム | |
US8010863B2 (en) | Method and apparatus for synchronizing multiple multimedia streams | |
WO2020086452A1 (en) | Low-latency video internet streaming for management and transmission of multiple data streams | |
EP1585334A1 (en) | Method and client for playing a video stream. | |
US10862940B1 (en) | Low latency live video on a communication session | |
CN107819809B (zh) | 对内容进行同步操作的方法及装置 | |
CN104737514A (zh) | 用于分布媒体内容服务的方法和设备 | |
CN101132521A (zh) | 一种实现iptv频道切换的方法和装置 | |
CN110324580B (zh) | 一种基于视联网的监控视频播放方法及装置 | |
CN114600468B (zh) | 将复合视频流中的视频流与元数据组合的组合器***、接收器设备、计算机实现的方法和计算机可读介质 | |
JP2007150916A (ja) | コミュニケーションシステム、端末装置及びコンピュータプログラム | |
WO2013098810A1 (en) | Adaptive forward error correction (fec) system and method | |
MX2011012652A (es) | Metodo, equipo y sistema para reducir el retardo de medios. | |
WO2007005194A1 (en) | Apparatuses and methods for delivering data stream content to consumer devices | |
CN112866725A (zh) | 一种直播控制方法及装置 | |
US20060161676A1 (en) | Apparatus for IP streaming capable of smoothing multimedia stream | |
CN111866526A (zh) | 一种直播业务处理方法和装置 | |
US20090135828A1 (en) | Internet protocol television (iptv) broadcasting system with reduced display delay due to channel changing, and method of generating and using acceleration stream | |
JP2009171294A (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 |