CN113132376B - 媒体数据处理方法及装置、系统、电子设备和存储介质 - Google Patents
媒体数据处理方法及装置、系统、电子设备和存储介质 Download PDFInfo
- Publication number
- CN113132376B CN113132376B CN202110401450.1A CN202110401450A CN113132376B CN 113132376 B CN113132376 B CN 113132376B CN 202110401450 A CN202110401450 A CN 202110401450A CN 113132376 B CN113132376 B CN 113132376B
- Authority
- CN
- China
- Prior art keywords
- media
- transmission channel
- stream
- protocol
- media 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 25
- 238000003860 storage Methods 0.000 title claims abstract description 13
- 230000005540 biological transmission Effects 0.000 claims abstract description 599
- 238000004891 communication Methods 0.000 claims abstract description 170
- 238000000034 method Methods 0.000 claims abstract description 99
- 230000011664 signaling Effects 0.000 claims description 150
- 238000012545 processing Methods 0.000 claims description 63
- 230000008569 process Effects 0.000 claims description 55
- 230000006870 function Effects 0.000 claims description 14
- 238000006243 chemical reaction Methods 0.000 claims description 13
- 238000004458 analytical method Methods 0.000 claims description 12
- 230000004044 response Effects 0.000 claims description 11
- 238000004590 computer program Methods 0.000 claims description 7
- 238000009826 distribution Methods 0.000 claims description 2
- 238000007405 data analysis Methods 0.000 claims 1
- 239000003795 chemical substances by application Substances 0.000 description 67
- 238000010586 diagram Methods 0.000 description 14
- 238000011144 upstream manufacturing Methods 0.000 description 10
- 238000012546 transfer Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 235000014347 soups Nutrition 0.000 description 2
- RLLPVAHGXHCWKJ-IEBWSBKVSA-N (3-phenoxyphenyl)methyl (1s,3s)-3-(2,2-dichloroethenyl)-2,2-dimethylcyclopropane-1-carboxylate Chemical compound CC1(C)[C@H](C=C(Cl)Cl)[C@@H]1C(=O)OCC1=CC=CC(OC=2C=CC=CC=2)=C1 RLLPVAHGXHCWKJ-IEBWSBKVSA-N 0.000 description 1
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 1
- 241001444201 Falco tinnunculus Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
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
- H04L65/75—Media network packet handling
- H04L65/765—Media network packet handling intermediate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开实施例提供了一种媒体数据处理方法及装置、系统、电子设备和存储介质。该方法由流媒体服务器执行,流媒体服务器包括媒体传输通道和代理传输通道,该方法包括:通过媒体传输通道从目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据;通过媒体传输通道将采用网页通信媒体协议封装的待发布媒体数据,发送至代理传输通道;利用代理传输通道将采用网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据;通过代理传输通道将采用客户端媒体协议封装的待发布媒体数据,发送至目标客户端。
Description
技术领域
本公开涉及计算机和通信技术领域,具体而言,涉及一种媒体数据处理方法及装置、系统、电子设备和计算机可读存储介质。
背景技术
相关技术中,由于网络(Web)浏览页面端和客户端使用的媒体协议不同,从而导致使用浏览页面的用户(可以称之为Web用户)与使用客户端的用户(可以称之为客户端用户)之间无法进行顺畅地媒体通信。
发明内容
本公开实施例提供一种媒体数据处理方法及装置、系统、电子设备和计算机可读存储介质,能够实现采用不同媒体协议的目标页面浏览端与目标客户端之间传输媒体数据。
本公开实施例提供一种媒体数据处理方法,方法由流媒体服务器执行,流媒体服务器包括媒体传输通道和代理传输通道。其中,方法包括:通过媒体传输通道从目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据;通过媒体传输通道将采用网页通信媒体协议封装的待发布媒体数据,发送至代理传输通道;利用代理传输通道将采用网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据;通过代理传输通道将采用客户端媒体协议封装的待发布媒体数据,发送至目标客户端。
本公开实施例提供一种媒体数据处理装置,媒体数据处理装置设置于流媒体服务器,流媒体服务器包括媒体传输通道和代理传输通道。装置包括:待发布媒体数据接收单元,用于通过媒体传输通道从目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据;待发布媒体数据转发单元,用于通过媒体传输通道将采用网页通信媒体协议封装的待发布媒体数据,发送至代理传输通道;待发布媒体数据转换单元,用于利用代理传输通道将采用网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据;待发布媒体数据发送单元,用于通过代理传输通道将采用客户端媒体协议封装的待发布媒体数据,发送至目标客户端。
本公开实施例提供一种媒体数据传输系统,系统包括流媒体服务器,流媒体服务器包括媒体传输通道和代理传输通道。其中,媒体传输通道用于从目标网页登录终端接收采用网页通信媒体协议封装的待发布媒体数据,并将采用网页通信媒体协议封装的待发布媒体数据,发送至代理传输通道;代理传输通道用于将采用网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据,并将采用客户端媒体协议封装的待发布媒体数据,发送至目标客户端登录终端。
本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,程序被处理器执行时实现如上述实施例中的媒体数据处理方法。
本公开实施例提供了一种电子设备,包括:至少一个处理器;存储装置,配置为存储至少一个程序,当至少一个程序被至少一个处理器执行时,使得至少一个处理器实现如上述实施例中的媒体数据处理方法。
根据本公开的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例的各种可选实现方式中提供的媒体数据处理方法。
在本公开的一些实施例所提供的技术方案中,通过在流媒体服务器中增加代理传输通道,并使该代理传输通道具有网页通信媒体协议和客户端媒体协议之间的转换功能,从而使得当该流媒体服务器中的媒体传输通道从目标页面浏览端接收到采用该网页通信媒体协议封装的待发布媒体数据时,可以将该采用该网页通信媒体协议封装的待发布媒体数据转发至该代理传输通道,该代理传输通道能够将采用该网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据,借助该代理传输通道再将该采用客户端媒体协议封装的待发布媒体数据传输至相应的目标客户端,实现了将目标页面浏览端发送的基于网页通信媒体协议封装的待发布媒体数据传输至基于客户端媒体协议的目标客户端,即实现了采用不同媒体协议的目标页面浏览端与目标客户端之间的互联互通。
附图说明
图1示出相关技术中的流媒体服务器的示意图。
图2示意性示出了根据本公开的一实施例的媒体数据处理方法的流程图。
图3示意性示出了根据本公开的一实施例的媒体数据处理方法的流程图。
图4示意性示出了根据本公开的一实施例的媒体数据处理方法的流程图。
图5示意性示出了根据本公开的一实施例的媒体数据处理方法的流程图。
图6示意性示出了根据本公开的一实施例的流媒体服务器的示意图。
图7示意性示出了根据本公开的一实施例的媒体数据传输系统的示意图。
图8示意性示出了根据本公开的一实施例的上行媒体数据流的传输时序图。
图9示意性示出了根据本公开的一实施例的下行媒体数据流的传输时序图。
图10示意性示出了根据本公开的一实施例的媒体数据处理装置的框图。
图11示出了适于用来实现本公开实施例的电子设备的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本公开将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
本公开所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本公开的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本公开的技术方案而省略特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本公开的各方面。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和步骤,也不是必须按所描述的顺序执行。例如,有的步骤还可以分解,而有的步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本说明书中,用语“一个”、“一”、“该”、“所述”和“至少一个”用以表示存在至少一个要素/组成部分/等;用语“包含”、“包括”和“具有”用以表示开放式的包括在内的意思并且是指除了列出的要素/组成部分/等之外还可存在另外的要素/组成部分/等;用语“第一”、“第二”和“第三”等仅作为标记使用,不是对其对象的数量限制。
WebRTC(Web Real-Time Communication,网页实时通信)是HTML5(Hyper TextMarkup Language 5,超文本标记语言5,简写为H5)支持的重要特性之一,WebRTC是一种可以支持网络浏览器进行实时多媒体通信的技术,与传统的基于本地客户端或浏览器插件的多媒体通信方式不同,WebRTC通过将多媒体通信所必须的处理(采集、编码和增强)、网络传输和会话控制等核心模块集成到浏览器内部,从而使第三方应用开发者仅需通过简单的JavaScript(是一种具有函数优先的轻量级、解释型或即时编译型的编程语言,简写为JS)API(Application Programming Interface,应用程序接口)调用即可获得实时的多媒体通信能力。
图1示出相关技术中的流媒体服务器的示意图。
如图1所示,以开源的Janus流媒体服务器为例,主要由三个部分组成,分别是核心(Core)101、插件(Plugin)102和传输通道(Transport)103。
其中,Core 101的作用是处理数据流的转发,以及各种协议的接入,包括ICE(Interactive Connectivity Establishment,交互式连接建立)、DTLS(DatagramTransport Layer Security,数据报传输层安全)、RTP(Real-time Transport Protocol,实时传输协议)、RTCP(Real-time Transport Control Protocol,实时传输控制协议)、SRTP(Secure Real-time Transport Protocol,安全实时传输协议)、SCTP(StreamControl Transmission Protocol,流控制传输协议,是一种在网络连接两端之间同时传输多个数据流的协议,SCTP提供的服务与UDP(User Datagram Protocol,用户数据报协议)和TCP(Transmission Control Protocol,传输控制协议)类似)、SDP(Session DescriptionProtocol,描述会话协议,是一种信息格式的描述标准,本身不属于传输协议,但是可以被其他传输协议用来交换必要的信息,用于两个会话实体之间的媒体协商),是WebRTC技术的具体实现。
Janus的业务管理是按照Plugin 102的方式管理的,因此开发者可以在Janus中根据自己的需要实现自己的业务插件。实际上,对于一般性的需求,Janus已经有相关的插件,例如视频房间(VideoRoom)、视频呼叫(VideoCall)、文本房间(TextRoom)、流(Streaming)、SIP(Session Initiation Protocol,会话初始协议)、音频房间(AudioRoom)。其中,可使用VideoRoom视频房间插件进行多人音视频互动。
Transport 103是Janus的信令传输层。Janus并没有限定信令接口使用的信令传输协议,当前支持的协议有HTTP(HyperText Transfer Protocol,超文本传输协议)、WebSocket(网络套接字)、MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)、NanoMsg(是一种消息队列)和RabbitMQ(是一种消息队列)。
但是,图1所示的流媒体服务器只能实现多个Web用户(例如,通过网络浏览器登录的用户)与基于WebRTC传输协议栈的用户之间的互联互通,却无法实现Web用户与客户端媒体协议例如私有音视频协议系统中的用户互联互通。而客户端媒体协议例如私有音视频协议有别于WebRTC等开源的传输协议栈,可以做到更加精细化的网络传输控制,目前比较难以替换。
基于上述相关描述,本公开实施例提出了一种媒体数据处理方法。本公开各实施例提供的媒体数据处理方法可以由上述所提及的任一电子设备执行,该电子设备可以是服务器(包括流媒体服务器、信令服务器和媒体服务器等),也可以是终端(包括目标网页登录终端和目标客户端登录终端等),也可以是服务器和终端之间交互实现。
本公开实施例中的服务器可以是独立的服务器,也可以是多个服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
下面结合附图对本公开示例实施方式进行详细说明。
图2示意性示出了根据本公开的一实施例的媒体数据处理方法的流程图。图2实施例提供的方法以流媒体服务器执行为例进行举例说明,但本公开并不限定于此。本公开实施例提供的方法可以应用于视频点播、视频会议、视频聊天、语音聊天、远程教育、远程医疗和在线直播等涉及媒体数据传输的应用场景中。
本公开实施例中,流媒体指以流方式在网络中传送音频、视频和多媒体文件等媒体数据的媒体形式。相对于下载后观看的网络播放形式而言,流媒体可以把连续的音频和视频信息等压缩后放到网络服务器上,用户边下载边观看,而不必等待整个文件下载完毕。
本公开实施例中,流媒体服务器(Media Server)的主要功能是对流媒体内容进行采集、缓存、调度和传输播放,例如可以处理Web用户的音视频数据流,并且转发给其它对应的用户。流媒体服务器可以是任意一台或者多台被选择用于处理当前待处理的媒体数据的流媒体服务器。在下面的举例说明中,以流媒体服务器为MediaSoup为例进行举例说明,但本公开并不限定于此。
其中,MediaSoup是一个开源的SFU(Selective Forwarding Unit,选择性转发单元)模式的流媒体服务器。
如图2所示,本公开实施例提供的方法可以包括以下步骤。
在步骤S210中,通过媒体传输通道从目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据。
本公开实施例中,网页通信媒体协议是指能够实现页面浏览端媒体通信的协议。在下面的举例说明中,均以网页通信媒体协议为WebRTC传输协议栈(简称为网页实时通信协议)为例进行举例说明,但本公开并不限定于此。与此对应的,基于网页通信媒体协议的媒体传输通道可以标记为WebRTCTransport,即基于WebRTC传输协议栈或者网页实时通信协议的传输通道。
本公开实施例中,流媒体服务器中的传输通道(Transport)可以包括上述基于网页通信媒体协议的媒体传输通道,还可以包括下文的代理传输通道,传输通道可以基于UDP或者SCTP等。
在示例性实施例中,媒体传输通道可以包括用于发布流(Publish)的媒体传输通道,可以用于实现目标页面浏览端到目标客户端的上行媒体数据(即待发布媒体数据)的传输。
本公开实施例中,目标页面浏览端是指用户(均以用户A为例)浏览Web网页的一端,例如通过其上安装的某一浏览器浏览目标网页,该目标页面浏览端对应的终端可以称之为目标网页登录终端(均以终端A为例)。在下面的举例说明中,均以该用户A通过目标网页登录终端上的浏览器中的WebRTC模块发起实时的媒体数据的传输,例如实时语音、实时视频等为例进行举例说明,此时也可以称该用户A为Web用户或者浏览器用户。
本公开实施例中,待发布媒体数据是指Web用户或者浏览器用户当前准备发送给目标客户端的上行媒体数据,例如上行语音流、上行视频流等。
在步骤S220中,通过媒体传输通道将采用网页通信媒体协议封装的待发布媒体数据,发送至代理传输通道。
本公开实施例中,代理传输通道具有网页通信媒体协议和下文的客户端媒体协议的相互转换功能,且具有媒体数据的转发功能。
在示例性实施例中,代理传输通道可以包括用于订阅流(Subscribe)的代理传输通道。
在示例性实施例中,在通过媒体传输通道从目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据之前,该方法还可以包括:通过用于发布流的媒体传输通道接收目标页面浏览端发起的第一生产者角色创建请求消息;用于发布流的媒体传输通道响应第一生产者角色创建请求消息,在用于发布流的媒体传输通道上生成第一生产者角色,并保存第一生产者角色的第一生产者角色标识;通过用于发布流的媒体传输通道向用于订阅流的代理传输通道发送第一消费者角色创建请求消息;通过用于订阅流的代理传输通道接收并响应第一消费者角色创建请求消息,在用于订阅流的代理传输通道上生成第一消费者角色;用于订阅流的代理传输通道使得第一消费者角色订阅第一生产者角色标识,形成第一消费者角色和第一生产者角色之间的发布订阅关系。进一步地,还可以保存第一消费者角色的第一消费者角色标识。
在示例性实施例中,在通过用于发布流的媒体传输通道接收目标页面浏览端发起的第一生产者角色创建请求消息之前,该方法还可以包括:通过流媒体服务器中的媒体流处理进程接收目标页面浏览端发起的第一传输通道创建请求消息;媒体流处理进程响应第一传输通道创建请求消息,在媒体流处理进程中创建用于发布流的媒体传输通道和用于订阅流的代理传输通道;媒体流处理进程生成用于发布流的媒体传输通道的标识(identity,ID)和用于订阅流的代理传输通道的标识,并将用于发布流的媒体传输通道的标识和用于订阅流的代理传输通道的标识返回至目标页面浏览端。
在步骤S230中,利用代理传输通道将采用网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据。
本公开实施例中,客户端媒体协议是指用于实现客户端媒体数据通信的协议,例如客户端采用的私有音视频协议。其中,私有音视频协议是指协议内容未公开的音视频协议,可以根据实际需求自定义。在下面的举例说明中,若客户端媒体协议为私有音视频协议中的私有音频协议,则该代理传输通道可标记为AudioTransport。
可以理解的是,当媒体数据(包括上述待发布媒体数据以及下文的待订阅媒体数据)为音视频数据时,本公开实施例中的私有音视频协议可以仅包括私有音频协议(例如语音会话场景),也可以仅包括私有视频协议,或者同时包括私有音频协议和私有视频协议,本公开对此不作限定。
本公开实施例中,代理传输通道知悉网页通信媒体协议例如WebRTC和客户端媒体协议的编解码规则,因此,代理传输通道接收到采用网页通信媒体协议封装的待发布媒体数据时,可以利用网页通信媒体协议的解码规则从中解析出待发布媒体数据,然后利用客户端媒体协议的编码规则,重新打包该待发布媒体数据,生成采用客户端媒体协议封装的待发布媒体数据。
在步骤S240中,通过代理传输通道将采用客户端媒体协议封装的待发布媒体数据,发送至目标客户端。
本公开实施例中,目标客户端是指其它用户(即非上述浏览器用户以外的用户)在终端上安装的本地客户端,对应的终端称之为目标客户端登录终端,例如若该终端为移动终端,则其上安装的客户端称之为移动APP(Application,应用程序)端,对应的用户称之为移动APP端用户;若该终端为非移动终端,例如PC端,则其上安装的客户端称之为PC客户端,对应的用户称之为PC客户端用户。
本公开实施例中,目标客户端采用客户端媒体协议与对应的媒体服务器进行媒体数据通信,该媒体服务器可以对采用客户端媒体协议的待发布媒体数据进行处理,例如确定要发送给哪些目标客户端,则可以将该采用客户端媒体协议的待发布媒体数据传输至这一个或多个目标客户端(即可以是一对一通信,也可以是一对多通信)。由于上述步骤S230中,流媒体服务器中的代理传输通道已经将浏览器用户发送的待发布媒体数据从网页通信媒体协议转换为与该目标客户端对应的客户端媒体协议,因此,可以通过该代理传输通道将该待发布媒体数据传输至该目标客户端。
本公开实施例中的客户端可以是游戏客户端、社交客户端等中的任意一种。其中,社交客户端是指通过网络实现用户和用户之间的信息交互的软件。该社交客户端可包括以下至少一种:即时通讯客户端,信息交流类客户端,等等。即时通讯是指一种允许两人或多人使用网络即时地传递文字、档案、语音等信息以及音视频交流的终端服务。
在示例性实施例中,通过媒体传输通道从目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据,可以包括:通过用于发布流的媒体传输通道,从目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据。
其中,通过媒体传输通道将采用网页通信媒体协议封装的待发布媒体数据,发送至代理传输通道,可以包括:基于第一消费者角色和第一生产者角色之间的发布订阅关系,通过用于发布流的媒体传输通道将采用网页通信媒体协议封装的待发布媒体数据,发送至用于订阅流的代理传输通道。
其中,利用代理传输通道将采用网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据,可以包括:利用用于订阅流的代理传输通道解析采用网页通信媒体协议封装的待发布媒体数据;用于订阅流的代理传输通道将解析获得的所述待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据。
其中,通过代理传输通道将采用客户端媒体协议封装的待发布媒体数据,发送至目标客户端,包括:通过用于订阅流的代理传输通道将采用客户端媒体协议封装的待发布媒体数据,发送至目标客户端。
本公开实施方式提供的媒体数据处理方法,通过在流媒体服务器中增加代理传输通道,并使该代理传输通道具有网页通信媒体协议和客户端媒体协议之间的转换功能,从而使得当该流媒体服务器中的媒体传输通道从目标页面浏览端接收到采用该网页通信媒体协议封装的待发布媒体数据时,可以将该采用该网页通信媒体协议封装的待发布媒体数据转发至该代理传输通道,该代理传输通道能够将采用该网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据,借助该代理传输通道再将该采用客户端媒体协议封装的待发布媒体数据传输至相应的目标客户端,实现了将目标页面浏览端发送的基于网页通信媒体协议封装的待发布媒体数据传输至基于客户端媒体协议的目标客户端,即实现了采用不同媒体协议的目标页面浏览端与目标客户端之间的互联互通。
图3示意性示出了根据本公开的一实施例的媒体数据处理方法的流程图。图3实施例中,描述了用于发布流的媒体传输通道和用于订阅流的代理传输通道协同,实现目标页面浏览端到目标客户端的上行媒体数据(即待发布媒体数据)的传输过程。且图3实施例中以网页通信媒体协议为网页实时通信协议,客户端媒体协议为私有音视频协议为例。
如图3所示,本公开实施例提供的方法可以包括以下步骤。
在步骤S301中,通过流媒体服务器中的媒体流处理进程接收目标页面浏览端发起的第一传输通道创建请求消息。
本公开实施例中,流媒体服务器中的媒体流处理进程(Worker),是指流媒体服务器中负责处理媒体流的进程或子进程,例如MediaSoup中负责处理媒体流的进程。
在步骤S302中,媒体流处理进程响应第一传输通道创建请求消息,在媒体流处理进程中创建用于发布流的媒体传输通道和用于订阅流的代理传输通道。
在步骤S303中,媒体流处理进程生成用于发布流的媒体传输通道的标识和用于订阅流的代理传输通道的标识,并将其返回至目标页面浏览端。
在步骤S304中,通过用于发布流的媒体传输通道接收目标页面浏览端发起的第一生产者角色创建请求消息。
在示例性实施例中,流媒体服务器还可以包括脚本语言运行环境,脚本语言运行环境可以用于从分布式消息队列接收第一生产者角色创建请求消息,并将第一生产者角色创建请求消息发送至用于发布流的媒体传输通道。
本公开实施例中,脚本语言运行环境表示为NodeJS,是一个基于Chrome V8引擎的JavaScript运行环境。以流媒体服务器为MediaSoup例,则该脚本语言运行环境表示为MediaSoup NodeJS。MediaSoup可以包括MediaSoup NodeJS和MediaSoup Worker,MediaSoup NodeJS和MediaSoup Worker之间可以通过进程间通信。
本公开实施例中,可以采用任意合适的分布式消息队列,只要其能够满足性能上的要求即可,例如低延迟、吞吐量以及可靠性等。在下面的举例说明中,均以NATS为例进行举例说明,但本公开并不限定于此,在其他实施例中,例如还可以采用ActiveMQ、KafKa、RabbitMQ、Redis、Kestrel、NSQ等中的任意一种。
其中,NATS是一个开源的轻量高性能的分布式消息队列,NATS支持各种消息传递模型,包括:发布订阅(Publish Subscribe),发布者在Subject上发送消息,并且监听该Subject的订阅者都会收到该消息。
其中,分布式消息队列可以用于从信令服务器中的用户代理接收第一生产者角色创建请求消息。
本公开实施例中,信令服务器(SigServer)可以用于直接与Web用户对应的目标页面浏览端通过WebSocket进行交互,接收Web用户的指令/信令,例如控制媒体流开始、暂停、结束等行为。
其中用户代理本质上是一个类对象,它可以包含目标页面浏览端上目标网页的用户信息、用于发布流的媒体传输通道的标识和用于订阅流的代理传输通道的标识等,还可以包括下文中提及的用于订阅流的媒体传输通道的标识和用于发布流的代理传输通道的标识等,这些媒体传输通道和代理传输通道的标识可以统一标记为Transport ID,例如可包括发布流和订阅流的WebRTCTransport ID,发布流和订阅流的代理传输通道的ID等。
例如,用户信息可以包含通过目标页面浏览端登录目标网页的浏览器用户的一些基本信息,如用户ID、用户登录票据、roomID、WebSDK连接的WebSocket等。其中roomID是指用户待发起语音或视频等通信的房间的标识。
用户代理可以理解为浏览器用户通过目标页面浏览端上的浏览器,在信令服务器上创建了一个标识自己的对象,后续浏览器用户通过目标页面浏览端上的浏览器的操作,都表现为操作该对象向流媒体服务器例如MediaSoup发出相应的命令。在信令服务器中增加用户代理,可以用于标识浏览器用户、对浏览器用户进行合法性校验,以及响应浏览器用户的发布流与订阅流的操作,获得相应的返回值给目标页面浏览端上的浏览器。
在示例性实施例中,用户代理可以用于响应目标页面浏览端发送的发布流信令生成第一生产者角色创建请求消息,并将第一生产者角色创建请求消息发送至分布式消息队列。
在示例性实施例中,信令服务器可以用于响应目标页面浏览端发送的加入信令,在信令服务器中创建用户代理,并控制用户代理向分布式消息队列发送第一传输通道创建请求消息。分布式消息队列还可以用于将第一传输通道创建请求消息发送至脚本语言运行环境。脚本语言运行环境还可以用于将第一传输通道创建请求消息发送至媒体流处理进程。
在步骤S305中,用于发布流的媒体传输通道响应第一生产者角色创建请求消息,在用于发布流的媒体传输通道上生成第一生产者角色,并保存第一生产者角色的第一生产者角色标识。
Producer是指生产者角色,对应于本公开实施例中产生媒体数据(包括上述待发布媒体数据和下文的待订阅媒体数据)例如音频或者视频的抽象实体。本公开实施例中的生产者角色包括这里的第一生产者角色和下文的第二生产者角色,第一生产者角色对应目标页面浏览端产生的待发布媒体数据,第二生产者角色对应下文目标客户端产生的待订阅媒体数据。发布流(Publish)对应于Producer的产生媒体数据例如视频或音频的行为。
在步骤S306中,通过用于发布流的媒体传输通道向用于订阅流的代理传输通道发送第一消费者角色创建请求消息。
在步骤S307中,通过用于订阅流的代理传输通道接收并响应第一消费者角色创建请求消息,在用于订阅流的代理传输通道上生成第一消费者角色。进一步地,还可以保存第一消费者角色的第一消费者角色标识。
Consumer是指消费者角色,对应于本公开实施例中消费媒体数据例如音频或者视频的抽象实体。本公开实施例中的消费者角色包括这里的第一消费者角色和下文的第二消费者角色,第一消费者角色对应消费待发布媒体数据,第二消费者角色对应消费待订阅媒体数据。订阅流(Subscribe)对应于Consumer的接收媒体数据例如音频或视频的行为。
在步骤S308中,用于订阅流的代理传输通道使得第一消费者角色订阅第一生产者角色标识,形成第一消费者角色和第一生产者角色之间的发布订阅关系。
在步骤S309中,通过用于发布流的媒体传输通道,从目标页面浏览端接收采用网页实时通信协议封装的待发布媒体数据。
在步骤S310中,基于第一消费者角色和第一生产者角色之间的发布订阅关系,通过用于发布流的媒体传输通道将采用网页实时通信协议封装的待发布媒体数据,发送至用于订阅流的代理传输通道。
在步骤S311中,利用用于订阅流的代理传输通道解析采用网页实时通信协议封装的待发布媒体数据,将其转换为采用私有音视频协议封装的待发布媒体数据。
在示例性实施例中,用于订阅流的代理传输通道内可以包括媒体服务对象,媒体服务对象与媒体服务器之间维持用户数据报协议数据通道。
其中,利用用于订阅流的代理传输通道解析采用网页通信媒体协议封装的待发布媒体数据,将其转换为采用客户端媒体协议封装的待发布媒体数据,可以包括:利用媒体服务对象解析采用网页通信媒体协议封装的待发布媒体数据,将其转换为采用客户端媒体协议封装的待发布媒体数据。
在步骤S312中,通过用于订阅流的代理传输通道将采用私有音视频协议封装的待发布媒体数据,发送至采用私有音视频协议的媒体服务器。
其中,通过代理传输通道将采用客户端媒体协议封装的待发布媒体数据,发送至采用客户端媒体协议的媒体服务器,可以包括:利用用户数据报协议数据通道(UDP数据通道),将采用客户端媒体协议封装的待发布媒体数据,发送至媒体服务器。
在步骤S313中,媒体服务器将采用私有音视频协议封装的待发布媒体数据发送至目标客户端。
本公开实施方式提供的媒体数据处理方法,通过流媒体服务器中的用于发布流的媒体传输通道和用于订阅流的代理传输通道,可以实现目标页面浏览端到目标客户端的上行媒体数据的传输,即实现了将目标页面浏览端发送的基于网页通信媒体协议封装的待发布媒体数据传输至基于客户端媒体协议的目标客户端,即使得用户Web浏览器产生的待发布媒体数据例如音视频数据可以通过此代理传输通道注入到基于客户端媒体协议例如私有音视频协议的后台服务器或媒体服务器,解决了网页通信媒体协议与客户端媒体协议之间的上行媒体数据交换问题。即实现了将目标页面浏览端发送的基于网页实时通信协议封装的待发布媒体数据传输至基于客户端媒体协议的目标客户端,例如使得浏览器用户通过Web浏览器产生的音视频数据可以通过此代理传输通道注入到基于私有音视频协议的媒体服务器,解决了开源的网页实时通信协议与私有音视频协议之间的数据交换问题,使得应用私有音视频协议的媒体通信系统可以实现与Web端的互联互通,实现了Web端与移动端以及PC(Personal Computer,个人计算机)端上安装的本地客户端之间的互联互通。
图4示意性示出了根据本公开的一实施例的媒体数据处理方法的流程图。如图4所示,与上述图2实施例相比,本公开实施例提供的方法的不同之处在于,进一步还可以包括以下步骤。
在步骤S410中,通过代理传输通道从目标客户端接收采用客户端媒体协议封装的待订阅媒体数据。
其中采用客户端媒体协议封装的待订阅媒体数据可以是目标客户端先发送至媒体服务器,然后,该媒体服务器再将采用客户端媒体协议封装的待订阅媒体数据发送至流媒体服务器中的代理传输通道。
本公开实施例中,待订阅媒体数据是指目标客户端对应的其它端的用户(例如其它端的音视频用户)当前准备发送给目标页面浏览端对应的Web用户或者浏览器用户的下行媒体数据,例如下行语音流、下行视频流等。
在示例性实施例中,媒体传输通道可以包括用于订阅流的媒体传输通道,代理传输通道可以包括用于发布流的代理传输通道。
其中,在通过代理传输通道从目标客户端接收采用客户端媒体协议封装的待订阅媒体数据之前,该方法还可以包括:通过用于发布流的代理传输通道接收目标页面浏览端发起的通知新用户发布流消息;用于发布流的代理传输通道响应通知新用户发布流消息,在用于发布流的代理传输通道上生成第二生产者角色,并保存第二生产者角色的第二生产者角色标识;通过用于发布流的代理传输通道向用于订阅流的媒体传输通道发送第二消费者角色创建请求消息;通过用于订阅流的媒体传输通道接收并响应第二消费者角色创建请求消息,在用于订阅流的媒体传输通道上生成第二消费者角色;通过用于订阅流的媒体传输通道使得第二消费者角色订阅第二生产者角色标识,形成第二消费者角色和第二生产者角色之间的发布订阅关系。进一步地,还可以保存第二消费者角色的第二消费者角色标识。
在示例性实施例中,在通过用于发布流的代理传输通道接收目标页面浏览端发起的通知新用户发布流消息之前,该方法还可以包括:通过流媒体服务器中的媒体流处理进程接收目标页面浏览端发起的第二传输通道创建请求消息;媒体流处理进程响应第二传输通道创建请求消息,在媒体流处理进程中创建用于订阅流的媒体传输通道和用于发布流的代理传输通道;媒体流处理进程生成用于订阅流的媒体传输通道的标识和用于发布流的代理传输通道的标识,并将用于订阅流的媒体传输通道的标识和用于发布流的代理传输通道的标识返回至目标页面浏览端。
在示例性实施例中,通过代理传输通道从目标客户端接收采用客户端媒体协议封装的待订阅媒体数据,可以包括:通过用于发布流的代理传输通道,从媒体服务器接收采用客户端媒体协议封装的待订阅媒体数据。其中采用客户端媒体协议封装的待订阅媒体数据是媒体服务器从目标客户端接收的。
在步骤S420中,通过代理传输通道将采用客户端媒体协议封装的待订阅媒体数据,转换为采用网页通信媒体协议封装的待订阅媒体数据。
其中,通过代理传输通道将采用客户端媒体协议封装的待订阅媒体数据,转换为采用网页通信媒体协议封装的待订阅媒体数据,可以包括:利用用于发布流的代理传输通道解析采用客户端媒体协议封装的待订阅媒体数据;用于发布流的代理传输通道将解析获得的待订阅媒体数据,转换为采用网页通信媒体协议封装的待订阅媒体数据。
在步骤S430中,通过代理传输通道将采用网页通信媒体协议封装的待订阅媒体数据,发送至媒体传输通道。
其中,通过代理传输通道将采用网页通信媒体协议封装的待订阅媒体数据,发送至媒体传输通道,可以包括:基于第二消费者角色和第二生产者角色之间的发布订阅关系,通过用于发布流的代理传输通道将采用网页通信媒体协议封装的待订阅媒体数据,发送至用于订阅流的媒体传输通道。
在步骤S440中,通过媒体传输通道将采用网页通信媒体协议封装的待订阅媒体数据发送至目标页面浏览端。
其中,通过媒体传输通道将采用网页通信媒体协议封装的待订阅媒体数据发送至目标页面浏览端,可以包括:通过用于订阅流的媒体传输通道将采用网页通信媒体协议封装的待订阅媒体数据发送至目标页面浏览端。
本公开实施方式提供的媒体数据处理方法,通过在流媒体服务器中增加基于客户端媒体协议的代理传输通道,在该流媒体服务器中的基于客户端媒体协议的代理传输通道从媒体服务器接收到采用该客户端媒体协议封装的待订阅媒体数据时,该代理传输通道能够解析采用该客户端媒体协议封装的待订阅媒体数据,并将其转换为采用网页通信媒体协议封装的待订阅媒体数据,借助该代理传输通道再将该采用网页通信媒体协议封装的待订阅媒体数据传输至采用该网页通信媒体协议的媒体传输通道,从而使得采用该网页通信媒体协议的媒体传输通道能够将协议转换后的待订阅媒体数据发送至目标页面浏览端,实现了将目标客户端发送的基于客户端媒体协议封装的待订阅媒体数据传输至基于网页通信媒体协议的目标页面浏览端,即使得目标客户端产生的待订阅媒体数据例如音视频数据可以通过此代理传输通道注入到基于网页通信媒体协议,解决了网页通信媒体协议与客户端媒体协议之间的数据交换问题。
图5示意性示出了根据本公开的一实施例的媒体数据处理方法的流程图。图5实施例中,描述了用于订阅流的媒体传输通道和用于发布流的代理传输通道协同,实现目标客户端到目标页面浏览端的下行媒体数据(即待订阅媒体数据)的传输过程。且图5实施例中以网页通信媒体协议为网页实时通信协议,客户端媒体协议为私有音视频协议为例。
可以理解的是,本公开实施例中,假设媒体传输通道和代理传输通道均为单工通信,因此需要针对上行媒体数据(待发布媒体数据)的传输采用用于发布流的媒体传输通道和用于订阅流的代理传输通道,针对下行媒体数据(待订阅媒体数据)的传输采用用于订阅流的媒体传输通道和用于发布流的代理传输通道,但本公开并不限定于此。
还是以媒体数据为音视频数据为例,每个目标页面浏览端创建两个Peerconnection分别用于发送待发布媒体数据和接收待订阅媒体数据,发送端用于发送承载本地videoTrack(视频轨)和audioTrack(音频轨)的localStream(本地流),接收端接收来自其它目标客户端的remoteStream(远程流)。
如图5所示,与上述图3实施例相比,本公开实施例提供的方法还可以进一步包括以下步骤。
在步骤S501中,通过流媒体服务器中的媒体流处理进程接收目标页面浏览端发起的第二传输通道创建请求消息。
其中,信令服务器还可以用于响应目标页面浏览端发送的加入信令,在信令服务器中创建用户代理,并控制用户代理向分布式消息队列发送第二传输通道创建请求消息。分布式消息队列还可以用于将第二传输通道创建请求消息发送至脚本语言运行环境。脚本语言运行环境还可以用于将第二传输通道创建请求消息发送至媒体流处理进程。
在步骤S502中,媒体流处理进程响应第二传输通道创建请求消息,在媒体流处理进程中创建用于订阅流的媒体传输通道和用于发布流的代理传输通道。
在步骤S503中,媒体流处理进程生成用于订阅流的媒体传输通道的标识和用于发布流的代理传输通道的标识,并将其返回至目标页面浏览端。
在步骤S504中,通过用于发布流的代理传输通道接收目标页面浏览端发起的通知新用户发布流消息。
在示例性实施例中,流媒体服务器中的脚本语言运行环境还可以用于从分布式消息队列接收通知新用户发布流消息,并通过进程间通信将通知新用户发布流消息发送至用于订阅流的代理传输通道。
其中,分布式消息队列还可以用于从信令服务器中的用户代理接收通知新用户发布流消息。用户代理还可以用于响应目标页面浏览端发送的通知新用户发布流信令生成通知新用户发布流消息,并将通知新用户发布流消息发送至分布式消息队列。
本公开实施例中,通知新用户发布流(AddNewUserTrack)消息和通知新用户发布流信令中的新用户是指与浏览器用户进行媒体数据传输的其它用户,例如浏览器用户与之发起语音或者视频通话的移动APP端用户和/或PC客户端用户,AddNewUserTrack消息/信令用于告知代理传输通道创建该新用户对应的发布流,以用于传输该新用户发布的媒体数据即待订阅媒体数据或者下行媒体数据。
在步骤S505中,用于发布流的代理传输通道响应通知新用户发布流消息,在用于发布流的代理传输通道上生成第二生产者角色,并保存第二生产者角色的第二生产者角色标识。
在步骤S506中,通过用于发布流的代理传输通道向用于订阅流的媒体传输通道发送第二消费者角色创建请求消息。
在步骤S507中,通过用于订阅流的媒体传输通道接收并响应第二消费者角色创建请求消息,在用于订阅流的媒体传输通道上生成第二消费者角色。
进一步地,还可以保存第二消费者角色的第二消费者角色标识。
在步骤S508中,通过用于订阅流的媒体传输通道使得第二消费者角色订阅第二生产者角色标识,形成第二消费者角色和第二生产者角色之间的发布订阅关系。
在步骤S509中,通过用于发布流的代理传输通道,从媒体服务器接收采用私有音视频协议封装的待订阅媒体数据。
在步骤S510中,利用用于发布流的代理传输通道解析采用私有音视频协议封装的待订阅媒体数据,将其转换为采用网页实时通信协议封装的待订阅媒体数据。
在步骤S511中,基于第二消费者角色和第二生产者角色之间的发布订阅关系,通过用于发布流的代理传输通道将采用网页实时通信协议封装的待订阅媒体数据,发送至用于订阅流的媒体传输通道。
在步骤S512中,通过用于订阅流的媒体传输通道将采用网页实时通信协议封装的待订阅媒体数据发送至目标页面浏览端。
本公开实施例中,通过在流媒体服务器中增加代理传输通道,从而可以联通WebRTC的浏览器用户和采用客户端媒体协议的其它端的用户,实现采用不同类型媒体协议的用户之间交换媒体数据例如音视频数据的功能,因此,也可以将该增加了代理传输通道的流媒体服务器作为WebRTC网关。可以理解的是,虽然上述举例说明中,该WebRTC网关用于不同类型媒体协议的用户之间交换媒体数据,但实际应用中,该WebRTC网关也可以用于在不同的WebRTC的浏览器用户之间交换媒体数据例如音视频数据,只是可以少了上述解析和转换过程。
本公开实施方式提供的媒体数据处理方法,通过流媒体服务器中的用于订阅流的媒体传输通道和用于发布流的代理传输通道,可以实现目标客户端到目标页面浏览端的下行媒体数据的传输,即实现了将目标客户端发送的基于客户端媒体协议封装的待订阅媒体数据传输至基于客户端媒体协议的目标页面浏览端,解决了网页通信媒体协议与客户端媒体协议之间的下行媒体数据交换问题。
图6示意性示出了根据本公开的一实施例的流媒体服务器的示意图。
图6实施例中,以网页通信媒体协议为WebRTC为例,浏览器用户通过目标页面浏览端上的浏览器登录目标网页(例如社交或者游戏网页),该浏览器可以包括WebRTC模块621。
流媒体服务器610可以包括媒体流处理进程(Worker)611,Worker 611中可以包括用于发布流的媒体传输通道6111和用于订阅流的代理传输通道6112,以及用于订阅流的媒体传输通道6113和用于发布流的代理传输通道6114。
其中,浏览器用户通过浏览器上的操作,可以通过WebRTC模块621向用于发布流的媒体传输通道6111发送基于WebRTC传输协议栈的待发布媒体数据,用于发布流的媒体传输通道6111通过上述确定的用于发布流的媒体传输通道6111中的第一生产者角色和用于订阅流的代理传输通道6112中的第一消费者角色之间的发布订阅关系,可以将该基于WebRTC传输协议栈的待发布媒体数据发送至用于订阅流的代理传输通道6112。该用于订阅流的代理传输通道6112接收到该基于WebRTC传输协议栈的待发布媒体数据后,对其进行解析,然后重新打包成基于客户端媒体协议(这里以私有音视频协议为例)的待发布媒体数据,再将其发送至用于提供音视频服务的媒体服务器630,该媒体服务器630和其它端的音视频用户例如移动APP端用户641和PC客户端用户642之间通过私有音视频协议进行通信,从而能够将该待发布媒体数据在其它端的音视频用户对应的目标客户端上播放。
其它端的音视频用户可以通过目标客户端向提供音视频服务的媒体服务器630发送基于私有音视频协议的待订阅媒体数据(例如待订阅音视频数据),该媒体服务器630可以将该基于私有音视频协议的待订阅音视频数据发送至用于发布流的代理传输通道6114,用于发布流的代理传输通道6114可以对其进行解析,转换为基于WebRTC传输协议栈的待订阅音视频数据,用于发布流的代理传输通道6114通过上述确定的用于发布流的代理传输通道6114中的第二生产者角色和用于订阅流的媒体传输通道6113中的第二消费者角色之间的发布订阅关系,可以将基于WebRTC传输协议栈的待订阅音视频数据发送至用于订阅流的媒体传输通道6113,然后,用于订阅流的媒体传输通道6113可以将基于WebRTC传输协议栈的待订阅音视频数据传输至浏览器用户对应的目标页面浏览端。
相关技术中的MediaSoup的方案解决的是使用WebRTC传输协议栈的用户之间的音视频通信。它的Router(路由)对象可以抽象成一个Room,用户在Room的管理下互相交换音视频数据,Room下可以有很多用户。并且它们的信令层会在MediaSoup NodesJS层做扩展,未做到信令与媒体服务的分离,不便于整个系统的动态扩容或缩容,一旦流媒体服务器出现故障,会导致整个系统不可用。图7实施例中,引入信令服务器SigServer和分布式消息队列NATS,可以解决上述动态扩容问题。
图7示意性示出了根据本公开的一实施例的媒体数据传输系统的示意图。图7实施例以将本公开实施例提供的方法应用到游戏客户端的Web语音房间为例进行举例说明,浏览器用户在目标页面浏览端例如PC或手机的H5页面访问游戏客户端的语音房间时,将提供Web语音房间的语音通信能力。
其中,实时的语音房间其可使得与用户之间具备虚拟场景社交关系的其它用户均加入进去,进而在虚拟场景社交关系所对应的用户范围内实现实时语音。但本公开实施例提供的方法可以应用任意媒体数据传输的场景,例如网络电视直播、视频分享、在线电台、视频点播、视频会议、在线音乐点播等等,并不限定于此。
如图7所示,本公开实施例提供的媒体数据传输系统可以包括浏览器用户对应的目标页面浏览端、流媒体服务和提供语音服务的游戏语音系统。图7、图8和图9中以媒体服务器为游戏语音系统中的语音后台服务器为例进行举例说明。
目标页面浏览端的浏览器可以包括WebSDK模块622和WebRTC模块621。其中,WebSDK模块622主要通过WebSocket和信令服务器(SigServer)650之间交互信令,WebRTC模块621主要用于负责媒体流的生成、接收和传输。
参阅图7,流媒体服务部分可以包括信令服务器(SigServer)650、分布式消息队列(这里以NATS为例)660和流媒体服务器。其中流媒体服务器(以MediaSoup为例)又分为MediaSoup NodeJS 612和MediaSoup Worker 611部分,这两者通过进程间通信来交换信息。
图7实施例中,SigServer 650的作用包括维持与浏览器用户之间的信令联系。
SigServer 650可用于维持各个MediaSoup的可发现状态,这类消息可包括各个MediaSoup的心跳消息、各个MediaSoup的负载信息(例如各个MediaSoup上的用户数量,CPU(Central Processing Unit,中央处理器)利用率,内存瞬时数据等),在浏览器用户发送加入信令时,SigServer 650可以根据各个MediaSoup的心跳消息确定能够正常通信的MediaSoup,然后根据各个MediaSoup的负载信息从能够正常通信的MediaSoup中,选择最匹配的MediaSoup来作为处理当前待处理的媒体数据的流媒体服务器,例如选择当前负载最轻的MediaSoup来为浏览器用户服务,起到负责均衡的作用。
图7实施例中的代理传输通道可以包括图6实施例中的用于订阅流的代理传输通道6112和用于发布流的代理传输通道6114,流媒体服务器中还可以包括图6实施例中的用于发布流的媒体传输通道6111和用于订阅流的媒体传输通道6113,SigServer 650并不会处理流(例如媒体数据的传输),SigServer 650用于传递流相关的消息,例如可以包括:通知流媒体服务器创建用于发布流的媒体传输通道和用于订阅流的代理传输通道的第一传输通道创建请求消息、通知流媒体服务器创建用于订阅流的媒体传输通道和用于发布流的代理传输通道的第二传输通道创建请求消息、通知用于发布流的媒体传输通道创建第一生产者角色的第一生产者角色创建请求消息、通知用于发布流的代理传输通道创建第二生产者角色的通知新用户发布流消息、接收浏览器用户发送的发布流信令、接收浏览器用户发送的订阅流信令、以及通知流媒体服务器设置DTLS参数的消息等。
NATS 660作为一种低延迟的消息队列,在图7实施例中的作用是传递SigServer650和MediaSoup之间的消息,保持SigServer 650和MediaSoup的一种松耦合结构。
同时,图7实施例中,信令传输与媒体数据传输分离的方式使得MediaSoup与信令服务650之间是一种松耦合的关系,从而可以根据整个系统的负载状态,动态地增加MediaSoup或SigServer 650来支持服务的正常运行,而不需要把整个系统停下来。而NATS660的作用是维系信令服务器650和MediaSoup之间通信的桥梁。
MediaSoup NodeJS 612层可以方便MediaSoup的扩展,可以方便的利用到NodeJS相关的庞大工具库。在本公开实施例中MediaSoup NodeJS 612层主要用于在NATS 660和流媒体服务器的媒体流处理进程Worker 611之间透传参数,同时也可以对一些参数做简单的处理。
提供语音服务的游戏语音系统主要包含语音后台服务器631和各个客户端(例如移动APP端和PC客户端)的SDK(Software Development Kit,软件开发工具包)等部分。通过将用于实现语音通信的通信SDK植入到应用程序客户端中,并将对应的SDK植入到应用程序的后台服务器中,应用程序客户端中的通信SDK和后台服务器中的SDK之间通过私有语音协议完成音频通信。
图7实施例中,WebRTC的信令传输可以慢些但需要可靠,而流媒体则优先考虑实时性,可以存在丢包、错包,因此,采用基于TCP的可靠传输协议用于信令等传输,采用基于UDP的RTP协议(这里以该协议为例进行举例说明,但本公开并不限定于此,也可以采用其他协议)用于实时的媒体数据的传输。
WebRTC为了保证媒体数据传输的安全性,可以通过DTLS传输媒体数据,DTLS是TLS在UDP数据传输上的扩展,可以理解为加密的UDP数据传输通道。RTP相当于DTLS上传输的数据包的一种格式。
图7实施例中,在信令服务器650中创建一个用户代理(client),该用户代理负责保存浏览器用户的用户信息,并且控制MediaSoup Worker 611创建代理传输通道,该代理传输通道具有理解私有语音协议和RTP数据格式的能力,代理传输通道将浏览器用户WebRTC 621传输过来的RTP数据(待发布媒体数据)中的媒体流信息解包出来,重新用私有语音协议打包,并且转发给提供语音服务的游戏语音系统。同时在该代理传输通道收到提供语音服务的游戏语音系统的私有语音协议的待订阅媒体数据的时候,将其语音载荷解包出来,重新包装成RTP数据包转发给浏览器用户对应的浏览器端播放。
图7实施例中,为了能够在MediaSoup中实现基于私有语音协议的媒体数据和基于WebRTC的媒体数据互通,简化了Router的概念,去掉了Router之内用户广播媒体数据和消息的能力,每一个Web用户与同Router中的其它用户不再直接产生媒体数据交换,它们都将媒体数据经过私有语音后台,然后再从私有语音后台接收媒体数据。每一个用户代理的媒体数据通道仅向自己的代理数据通道发布与订阅数据流,同样的自己的代理数据通道也仅向媒体数据通道发布和订阅数据流。媒体数据的广播在私有语音后台(可以扩展到音视频)实现而非在Router中实现数据的广播扩散。
下面结合图8和图9对利用图7实施例提供的系统实现媒体数据传输的过程进行举例说明。
图8示意性示出了根据本公开的一实施例的上行媒体数据流的传输时序图。图8实施例中以上行媒体数据流为上行语音流为例进行举例说明。
如图8所示,在步骤S11中,浏览器用户通过目标页面浏览端向信令服务器发送浏览器用户的加入信令。
图8实施例中的加入信令可以携带该浏览器用户的用户信息,例如用户ID(可以是用户名、身份证号、手机号等能够唯一标识该浏览器用户的任意信息)、用户登录票据以及roomId等。
信令服务器接收到该加入信令之后,触发对该浏览器用户的合法性验证,若验证通过,则在信令服务器中生成一个用户代理用于保存该浏览器用户的相关信息,例如这里首先保存上述浏览器用户的用户信息。若验证不通过,则信令服务器可以向浏览器用户对应的目标页面浏览端返回一个拒绝加入通知消息。
用户代理本质上是一个类对象,是浏览器用户通过浏览器在信令服务器创建了一个标识自己的对象,后续浏览器用户通过浏览器的操作都表现为操作该对象向流媒体服务器例如选择的MediaSoup发出相应的命令。
在步骤S12中,信令服务器向流媒体服务器发送创建媒体传输通道和代理传输通道的信令(这里为第一传输通道创建消息)。
步骤S12中,当用户代理成功创建后,信令服务器通过该用户代理向NATS传递第一传输通道创建消息,NATS将该第一传输通道创建消息再传递至MediaSoup NodeJS,MediaSoup NodeJS向MediaSoup Worker发送该第一传输通道创建消息。
在步骤S13中,流媒体服务器向游戏语音后台服务器发送语音后台进房信令。
MediaSoup Worker接收到该第一传输通道创建消息之后,MediaSoup向游戏语音后台服务器发送语音后台进房请求信令(joinroom信令)。
在步骤S14中,游戏语音后台服务器向流媒体服务器返回进房成功通知消息。
游戏语音后台服务器接收到该joinroom信令之后,对其进行鉴权,若鉴权通过,则向MediaSoup返回进房成功通知消息,若鉴权未通过,则向MediaSoup返回拒绝进房通知消息。该进房成功通知消息中可携带SDP信息。
当MediaSoup接收到进房成功通知消息之后,响应上述第一传输通道创建消息,在MediaSoup Worker中创建用于发布流的媒体传输通道和用于订阅流的代理传输通道,并生成用于发布流的媒体传输通道的ID和用于订阅流的代理传输通道的ID。
在步骤S15中,流媒体服务器向信令服务器返回创建成功通知消息。
当MediaSoup Worker中成功创建用于发布流的媒体传输通道和用于订阅流的代理传输通道之后,MediaSoup Worker通过MediaSoup NodeJS和NATS向信令服务器返回创建成功通知消息,该创建成功通知消息中可携带用于发布流的媒体传输通道的ID和用于订阅流的代理传输通道的ID、以及上述SDP信息。
在步骤S16中,信令服务器向浏览器用户返回SDP信息与传输通道的ID。
信令服务器接收到该创建成功通知消息后,可以向浏览器用户对应的目标页面浏览端返回用于发布流的媒体传输通道的ID和用于订阅流的代理传输通道的ID、以及上述SDP信息。目标页面浏览端可以将用于发布流的媒体传输通道的ID和用于订阅流的代理传输通道的ID通过WebSDK传递至信令服务器中的用户代理,使得该用户代理同时也包含了用于发布流的媒体传输通道的ID和用于订阅流的代理传输通道的ID。
在步骤S17中,流媒体服务器向游戏语音后台服务器发送语音握手消息。
例如,MediaSoup向游戏语音后台服务器发送语音Hello消息。
在步骤S18中,游戏语音后台服务器向流媒体服务器返回握手成功消息。
例如,若游戏语音后台服务器向MediaSoup返回Hello成功消息,则表示MediaSoup和游戏语音后台服务器握手成功。
在步骤S19中,浏览器用户向信令服务器发送发布流信令。
例如,浏览器用户通过目标页面浏览端向信令服务器发送Publish信令。Publish信令是为了通知MediaSoup创建一个Producer,即第一生产者角色。
在步骤S110中,信令服务器向流媒体服务器发送创建生产者角色的信令(这里为第一生产者角色创建请求消息)。
信令服务器接收到Publish信令后,通过用户代理向NATS发送第一生产者角色创建请求消息,NATS再将该第一生产者角色创建请求消息发送至MediaSoup NodeJS,MediaSoup NodeJS再将该第一生产者角色创建请求消息透传至MediaSoup Worker中的用于发布流的媒体传输通道,用于发布流的媒体传输通道接收到该第一生产者角色创建请求消息之后,创建第一生产者角色,并保存第一生产者角色标识。
在步骤S111中,流媒体服务器向信令服务器返回创建成功消息。
当MediaSoup中成功创建第一生产者角色后,MediaSoup Worker通过MediaSoupNodeJS和NATS向信令服务器返回创建成功消息。
用于发布流的媒体传输通道(WebRTCTransportPub)向用于订阅流的代理传输通道(AudioTransportSub)发送第一消费者角色创建请求消息,用于订阅流的代理传输通道接收并响应第一消费者角色创建请求消息,在用于订阅流的代理传输通道上生成第一消费者角色,并保存第一消费者角色标识,使得第一消费者角色订阅第一生产者角色标识(ProducerID),形成第一消费者角色和第一生产者角色之间的发布订阅关系。这样Web浏览器端的待发布媒体数据就可以传导到AudioTransportSub。
在步骤S112中,信令服务器向浏览器用户返回发布成功消息。
当信令服务器接收到步骤S111中的创建成功消息之后,向浏览器用户对应的目标页面浏览端返回发布成功消息。
在步骤S113中,浏览器用户向信令服务器发送DTLS信令。
DTLS信令用于将Web浏览器端的用于数据加密的加密算法和密钥告知对方。SDP有部分字段是需要填充数据的加密算法和密钥。
在步骤S114中,信令服务器向流媒体服务器发送设置DTLS参数的消息。
信令服务器接收到DTLS信令之后,控制用户代理并依次通过NATS和MediaSoupNodeJS向MediaSoup Worker发送设置DTLS参数的消息。
在步骤S115中,流媒体服务器向信令服务器返回设置成功消息。
MediaSoup Worker接收到设置DTLS参数的消息之后,设置DTLS参数,在设置成功之后,通过MediaSoup NodeJS和NATS向信令服务器返回设置成功消息。
在步骤S116中,信令服务器向浏览器用户返回设置成功消息。
信令服务器接收到步骤S115返回的设置成功消息之后,向浏览器用户对应的目标页面浏览端返回设置成功消息。
在步骤S117中,浏览器用户向流媒体服务器发送ICE创建会话的信令。
目标页面浏览端接收到步骤S116返回的设置成功消息之后,向MediaSoup发送ICE创建会话的信令。
在步骤S118中,流媒体服务器向浏览器用户返回媒体传输通道建立的消息。
MediaSoup接收到ICE创建会话的信令之后,建立浏览器和MediaSoup之间媒体数据的传输通道作为媒体传输通道,建立成功后,向目标页面浏览端返回媒体传输通道建立的消息。
在步骤S119中,浏览器用户向流媒体服务器发送上行媒体数据流。
目标页面浏览端接收到媒体传输通道建立的消息之后,就可以向MediaSoup发送上行媒体数据流(即待发布媒体数据)。
在步骤S120中,流媒体服务器通过代理传输通道向游戏语音后台服务器传输该上行媒体数据流。
MediaSoup中的用于发布流的媒体传输通道接收到该上行媒体数据流(这里以上行语音流为例进行举例说明),基于上述第一生产者角色和第一消费者角色的发布订阅关系,将其转发至用于订阅流的代理传输通道,用于订阅流的代理传输通道对其解析,重新打包成基于私有语音协议的上行语音流之后再转发至游戏语音后台服务器。
本公开实施例中,AudioTransportSub内部有一个成员叫Audioserver的对象(媒体服务对象),它负责将基于WebRTC的待发布媒体数据从RTP包中解包出媒体载荷,并且按照私有语音协议重新打包成基于私有语言协议的待发布媒体数据。
这里AudioServer对象与游戏语音后台服务器之间维持着一个UDP数据通道,并且有心跳协议保活,这个通道是双工的,利用它可以向游戏语音后台服务器发送Web浏览器端的语音数据,也可以接收来自游戏语音后台服务器的语音数据,将它解包出语音载荷,然后再封装成RTP数据包。
上行语音的传输如上图8所示,当浏览器用户需要发布流的时候,首先需要通过加入信令加入到流媒体服务中,这个过程中信令服务器的用户代理以及MediaSoup中的用于发布流的媒体传输通道和用于订阅流的代理传输通道创建好了。之后通过Publish和DTLS信令,交换了WebRTC用于创建会话的SDP信息,代理数据通道负责解析WebRTC传输的RTP数据流并且将其转换成私有语音协议的上行语音流,转发给游戏语音后台服务器,游戏语音后台服务器可以将其发送至其它端的语音用户。
图9示意性示出了根据本公开的一实施例的下行媒体数据流的传输时序图。图9实施例中以下行媒体数据流为下行语音流为例进行举例说明。
如图9所示,在步骤S21中,浏览器用户向信令服务器发送用户加入信令。
步骤S21可以参考上述步骤S11。
在步骤S22中,信令服务器向流媒体服务器发送创建媒体传输通道和代理传输通道的信令(这里为第二传输通道创建消息)。
步骤S22中,当用户代理成功创建后,信令服务器通过该用户代理向NATS传递第二传输通道创建消息,NATS将该第二传输通道创建消息再传递至MediaSoup NodeJS,MediaSoup NodeJS向MediaSoup Worker发送该第二传输通道创建消息。
在步骤S23中,流媒体服务器向游戏语音后台服务发送语音后台进房请求信令。
MediaSoup Worker接收到该第二传输通道创建消息之后,MediaSoup向游戏语音后台服务器发送语音后台进房请求信令(joinroom信令)。
在步骤S24中,游戏语音后台服务向流媒体服务器返回进房成功通知消息。
游戏语音后台服务器接收到该joinroom信令之后,对其进行鉴权,若鉴权通过,则向MediaSoup返回进房成功通知消息,若鉴权未通过,则向MediaSoup返回拒绝进房通知消息。该进房成功通知消息中可携带SDP信息。
当MediaSoup接收到进房成功通知消息之后,响应上述第二传输通道创建消息,在MediaSoup Worker中创建用于发布流的代理传输通道和用于订阅流的媒体传输通道,并生成用于发布流的代理传输通道的ID和用于订阅流的媒体传输通道的ID。
在步骤S25中,流媒体服务器向信令服务器返回创建成功通知消息。
当MediaSoup Worker中成功创建用于发布流的代理传输通道和用于订阅流的媒体传输通道之后,MediaSoup Worker通过MediaSoup NodeJS和NATS向信令服务器返回创建成功通知消息,该创建成功通知消息中可携带用于发布流的代理传输通道的ID和用于订阅流的媒体传输通道的ID、以及上述SDP信息。
在步骤S26中,信令服务器向浏览器用户返回SDP信息与传输通道的ID。
信令服务器接收到该创建成功通知消息后,可以向浏览器用户对应的目标页面浏览端返回用于发布流的代理传输通道的ID和用于订阅流的媒体传输通道的ID、以及上述SDP信息。目标页面浏览端可以将用于发布流的代理传输通道的ID和用于订阅流的媒体传输通道的ID通过WebSDK传递至信令服务器中的用户代理,使得该用户代理同时也包含了用于发布流的代理传输通道的ID和用于订阅流的媒体传输通道的ID。
在步骤S27中,流媒体服务器向游戏语音后台服务器发送语音握手消息。
在步骤S28中,游戏语音后台服务器向流媒体服务器返回握手成功消息。
步骤S27-S28可以参考上述步骤S17-S18。
在步骤S29中,浏览器用户向信令服务器发送通知新用户发布流消息(AddNewUserTrack信令)。
通知新用户发布流消息中的新用户可以是指其它端的语音用户,有新用户上麦,可能发出语音数据,这里需要提前把传输通道建立好。
在步骤S210中,信令服务器向流媒体服务器发送代理创建发布流的消息。
信令服务器接收到通知新用户发布流消息之后,信令服务器中的用户代理通过NATS、MediaSoup NodeJS向MediaSoup Worker发送代理创建发布流的消息,通知MediaSoupWorker中的用于发布流的代理传输通道创建发布流。用于发布流的代理传输通道响应该代理创建发布流的消息,在该用于发布流的代理传输通道上生成第二生产者角色,并保存第二生产者角色标识,并获得发送者ID,这里的发送者ID即新用户标识,用于标识发布待订阅媒体数据的新用户。
在步骤S211中,流媒体服务器向信令服务器返回创建成功通知消息。
成功创建第二生产者角色之后,MediaSoup通过NATS向信令服务器返回创建成功通知消息,该创建成功通知消息携带发送者ID和第二生产者角色标识。
在步骤S212中,信令服务器向浏览器用户对应的目标页面浏览端返回发送者ID。
在步骤S213中,浏览器用户向信令服务器发送订阅流信令。
该Subscribe信令用于通知MediaSoup创建一个消费者角色即第二消费者角色。
在步骤S214中,信令服务器向流媒体服务器发送创建消费者角色的消息,这里即第二消费者角色创建请求消息。
信令服务器接收到Subscribe信令之后,通过NATS向MediaSoup发送第二消费者角色创建请求消息,用于订阅流的媒体传输通道响应第二消费者角色创建请求消息,在用于订阅流的媒体传输通道上生成第二消费者角色,并保存第二消费者角色的第二消费者角色标识,使得第二消费者角色订阅上述第二生产者角色标识,形成第二消费者角色和第二生产者角色之间的发布订阅关系。
在MediaSoup内部建立Producer和Consumer的对应关系,接收到的上行语音流和下行语音流才可以通过Producer转发到对应的Consumer。而创建发布流的过程就是创建一个Producer。Producer对应的是生产流的一个对象,它的流是基于Transport传输的。Consumer对应的是消费流的一个对象,它的流也是基于Transport传输的。
当Web端上的浏览器用户需要听到别的用户的声音时,首先会发送一个AddNewUserTrack信令,通知用户代理操作AudioTransportPub(用于发布流的代理传输通道)生成一个Producer(第二生产者角色),然后操作WebRTCTransportSub(用于订阅流的媒体传输通道)生成一个Consumer(第二消费者角色),然后Consumer订阅该Producer,形成一个发布订阅关系。其中,一个RTCPeerConnection可以承载多个track(媒体流),因此当麦上有了新用户的时候就重新发布一个AddNewUserTrack信令。
在步骤S215中,流媒体服务器向信令服务器返回创建成功消息。
在步骤S216中,信令服务器向浏览器用户返回成功消息。
在步骤S217中,浏览器用户向信令服务器发送DTLS信令。
在步骤S218中,信令服务器向流媒体服务器发送设置DTLS参数的消息。
在步骤S219中,流媒体服务器向信令服务器返回设置成功消息。
在步骤S220中,信令服务器向浏览器用户返回设置成功消息。
在步骤S221中,浏览器用户向流媒体服务器发送ICE创建会话的信令。
在步骤S222中,流媒体服务器向浏览器用户返回媒体传输通道建立的消息。
步骤S215-S222可以参考上述步骤S111-S118。
图8和图9实施例中,上行和下行对应于两个Transport,具体到Web浏览器端就是两个RTCPeerConnection,是两个独立的连接。因为这里的传输通道是单工的,所以需要重复传输通道建立的过程。
在步骤S223中,流媒体服务器通过代理传输通道从游戏语音后台服务器接收下行语音流(待订阅媒体数据)。
MediaSoup利用上述用于发布流的代理传输通道从游戏语音后台服务器接收下行语音流,并对其进行解析重新打包成基于WebRTC传输协议栈的下行语音流,然后发送至用于订阅流的媒体传输通道。
在步骤S224中,流媒体服务器向浏览器用户发送下行媒体数据流。
下行语音的传输过程如上图9所示,与图8相比,增加一个通知代理创建发布流的信令,在发布流之后,浏览器用户再主动订阅该发布流,建立完整的发布-订阅数据通路。之后代理传输通道接收到基于私有语音协议的下行语音流之后,将其解包并且重新包装成RTP数据流,然后转发给浏览器用户。
本公开实施例中,AudioTransport的AudioServer成员实现了RTP包和私有语音包解包和封包的逻辑。AudioServer中UDP数据通道是双工的,它收到媒体数据后,需要到Router中找到AudioTransportPub这个用于发布流的代理传输通道,然后把媒体数据传递给AudioTransportPub,假装AudioTransportPub收到了网络数据,而实际上AudioTransportPub的数据并非直接来自网络,而是来AudioServer的UDP数据通道。利用AudioTransportPub与WebRTCTransportSub之间的发布订阅关系,数据最终传导到浏览器用户的浏览器端。
本公开实施方式提供的媒体数据处理方法,继承了开源的流媒体服务器MediaSoup稳定且易扩展的优势,并在其上进行了二次开发,在其上通过用户代理创建代理传输通道,使得Web浏览器产生的音视频数据可以通过此代理传输通道注入到采用私有音视频协议的客户端对应的后台服务器,同时Web端也可以通过此代理传输通道接收采用私有音视频协议的客户端的媒体数据,解决了WebRTC通信与私有音视频协议之间的数据交换问题,使得私有音视频通信系统可以实现与Web端的互联互通。
图10示意性示出了根据本公开的一实施例的媒体数据处理装置的框图。如图10所示,本公开实施例提供的媒体数据处理装置1000可以设置于流媒体服务器,流媒体服务器可以包括媒体传输通道和代理传输通道。媒体数据处理装置1000可以包括待发布媒体数据接收单元1010、待发布媒体数据转发单元1020、待发布媒体数据转换单元1030以及待发布媒体数据发送单元1040。
本公开实施例中,待发布媒体数据接收单元1010可以用于通过媒体传输通道从目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据。待发布媒体数据转发单元1020可以用于通过媒体传输通道将采用网页通信媒体协议封装的待发布媒体数据,发送至代理传输通道。待发布媒体数据转换单元1030可以用于利用代理传输通道将采用网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据。待发布媒体数据发送单元1040可以用于通过代理传输通道将采用客户端媒体协议封装的待发布媒体数据,发送至目标客户端。
在示例性实施例中,媒体传输通道可以包括用于发布流的媒体传输通道,代理传输通道可以包括用于订阅流的代理传输通道。其中,媒体数据处理装置1000还可以包括:第一生产者角色创建请求消息接收单元,可以用于在通过媒体传输通道从目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据之前,通过用于发布流的媒体传输通道接收目标页面浏览端发起的第一生产者角色创建请求消息;第一生产者角色生成单元,可以用于发布流的媒体传输通道响应第一生产者角色创建请求消息,在用于发布流的媒体传输通道上生成第一生产者角色,并保存第一生产者角色的第一生产者角色标识;第一消费者角色创建请求消息发送单元,可以用于通过用于发布流的媒体传输通道向用于订阅流的代理传输通道发送第一消费者角色创建请求消息;第一消费者角色生成单元,可以用于通过用于订阅流的代理传输通道接收并响应第一消费者角色创建请求消息,在用于订阅流的代理传输通道上生成第一消费者角色;第一发布订阅关系形成单元,可以用于订阅流的代理传输通道使得第一消费者角色订阅第一生产者角色标识,形成第一消费者角色和第一生产者角色之间的发布订阅关系。
在示例性实施例中,媒体数据处理装置1000还可以包括:第一传输通道创建请求消息接收单元,可以用于在通过用于发布流的媒体传输通道接收目标页面浏览端发起的第一生产者角色创建请求消息之前,通过流媒体服务器中的媒体流处理进程接收目标页面浏览端发起的第一传输通道创建请求消息;第一传输通道创建单元,可以用于媒体流处理进程响应第一传输通道创建请求消息,在媒体流处理进程中创建用于发布流的媒体传输通道和用于订阅流的代理传输通道;第一传输通道标识返回单元,可以用于媒体流处理进程生成用于发布流的媒体传输通道的标识和用于订阅流的代理传输通道的标识,并将用于发布流的媒体传输通道的标识和用于订阅流的代理传输通道的标识返回至目标页面浏览端。
在示例性实施例中,流媒体服务器还可以包括脚本语言运行环境,脚本语言运行环境可以用于从分布式消息队列接收第一生产者角色创建请求消息,并通过进程间通信将第一生产者角色创建请求消息发送至用于发布流的媒体传输通道。
其中,分布式消息队列可以用于从信令服务器中的用户代理接收第一生产者角色创建请求消息,其中用户代理包含目标页面浏览端上目标网页的用户信息、用于发布流的媒体传输通道的标识和用于订阅流的代理传输通道的标识。
用户代理可以用于响应目标页面浏览端发送的发布流信令生成第一生产者角色创建请求消息,并将第一生产者角色创建请求消息发送至分布式消息队列。
在示例性实施例中,信令服务器可以用于响应目标页面浏览端发送的加入信令,在信令服务器中创建用户代理,并控制用户代理向分布式消息队列发送第一传输通道创建请求消息。
分布式消息队列还可以用于将第一传输通道创建请求消息发送至脚本语言运行环境。
脚本语言运行环境还可以用于将第一传输通道创建请求消息发送至媒体流处理进程。
在示例性实施例中,待发布媒体数据接收单元1010可以包括:发布流媒体传输通道接收单元,可以用于通过用于发布流的媒体传输通道,从目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据。
其中,待发布媒体数据转发单元1020可以包括:发布流媒体传输通道转发单元,可以用于基于第一消费者角色和第一生产者角色之间的发布订阅关系,通过用于发布流的媒体传输通道将采用网页通信媒体协议封装的待发布媒体数据,发送至用于订阅流的代理传输通道。
其中,待发布媒体数据转换单元1030可以包括:订阅流代理传输通道解析单元,可以用于利用用于订阅流的代理传输通道解析采用网页通信媒体协议封装的待发布媒体数据;待发布媒体数据协议转换单元,可以用于订阅流的代理传输通道将解析获得的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据。
其中,待发布媒体数据发送单元1040可以包括待发布媒体数据代理发送单元,可以用于通过用于订阅流的代理传输通道将采用客户端媒体协议封装的待发布媒体数据,发送至目标客户端。
在示例性实施例中,用于订阅流的代理传输通道内可以包括媒体服务对象,媒体服务对象与媒体服务器之间维持用户数据报协议数据通道。其中,待发布媒体数据转换单元1030可以包括:媒体服务对象解析单元,可以用于利用媒体服务对象解析采用网页通信媒体协议封装的待发布媒体数据,将采用网页通信媒体协议封装的待发布媒体数据转换为采用客户端媒体协议封装的待发布媒体数据。
其中,待发布媒体数据发送单元1040可以包括:用户数据报协议数据通道传输单元,可以用于利用用户数据报协议数据通道,将采用客户端媒体协议封装的待发布媒体数据,发送至媒体服务器,以便媒体服务器将采用客户端媒体协议封装的待发布媒体数据传输至目标客户端。
在示例性实施例中,媒体数据处理装置1000还可以包括:待订阅媒体数据接收单元,可以用于通过代理传输通道从目标客户端接收采用客户端媒体协议封装的待订阅媒体数据;待订阅媒体数据解析单元,可以用于通过代理传输通道将采用客户端媒体协议封装的待订阅媒体数据转换为采用网页通信媒体协议封装的待订阅媒体数据;待订阅媒体数据发送单元,可以用于通过代理传输通道将采用网页通信媒体协议封装的待订阅媒体数据,发送至媒体传输通道;待订阅媒体数据转发单元,可以用于通过媒体传输通道将采用网页通信媒体协议封装的待订阅媒体数据发送至目标页面浏览端。
在示例性实施例中,媒体传输通道可以包括用于订阅流的媒体传输通道,代理传输通道可以包括用于发布流的代理传输通道。其中,媒体数据处理装置1000还可以包括:通知新用户发布流消息接收单元,可以用于在通过代理传输通道从目标客户端接收采用客户端媒体协议封装的待订阅媒体数据之前,通过用于发布流的代理传输通道接收目标页面浏览端发起的通知新用户发布流消息;第二生产者角色生成单元,可以用于发布流的代理传输通道响应通知新用户发布流消息,在用于发布流的代理传输通道上生成第二生产者角色,并保存第二生产者角色的第二生产者角色标识;第二消费者角色创建请求消息发送单元,可以用于通过用于发布流的代理传输通道向用于订阅流的媒体传输通道发送第二消费者角色创建请求消息;第二消费者角色生成单元,可以用于通过用于订阅流的媒体传输通道接收并响应第二消费者角色创建请求消息,在用于订阅流的媒体传输通道上生成第二消费者角色,并保存第二消费者角色的第二消费者角色标识;第二发布订阅关系形成单元,可以用于通过用于订阅流的媒体传输通道使得第二消费者角色订阅第二生产者角色标识,形成第二消费者角色和第二生产者角色之间的发布订阅关系。
在示例性实施例中,待订阅媒体数据接收单元可以包括:发布流代理传输通道接收单元,可以用于通过用于发布流的代理传输通道,从媒体服务器接收采用客户端媒体协议封装的待订阅媒体数据,其中采用客户端媒体协议封装的待订阅媒体数据是媒体服务器从目标客户端接收的。
其中,待订阅媒体数据解析单元可以包括:发布流代理传输通道解析单元,可以用于利用用于发布流的代理传输通道解析采用客户端媒体协议封装的待订阅媒体数据;发布流代理传输通道转换单元,可以用于发布流的代理传输通道将解析获得的待订阅媒体数据,转换为采用网页通信媒体协议封装的待订阅媒体数据。
其中,待订阅媒体数据发送单元可以包括:发布流代理传输通道发送单元,可以用于基于第二消费者角色和第二生产者角色之间的发布订阅关系,通过用于发布流的代理传输通道将采用网页通信媒体协议封装的待订阅媒体数据,发送至用于订阅流的媒体传输通道。
其中,待订阅媒体数据转发单元可以包括:订阅流媒体传输通道发送单元,可以用于通过用于订阅流的媒体传输通道将采用网页通信媒体协议封装的待订阅媒体数据发送至目标页面浏览端。
本公开实施例的媒体数据处理装置的其它内容可以参照上述实施例。
进一步地,本公开实施例还提供了一种媒体数据传输系统,系统可以包括流媒体服务器,流媒体服务器可以包括媒体传输通道和代理传输通道。
其中,媒体传输通道可以用于从目标网页登录终端接收采用网页通信媒体协议封装的待发布媒体数据,并将采用网页通信媒体协议封装的待发布媒体数据,发送至代理传输通道。代理传输通道可以用于将采用网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据,并将采用客户端媒体协议封装的待发布媒体数据,发送至目标客户端登录终端。
在示例性实施例中,系统还可以包括信令服务器,信令服务器中可以包括用户代理,其中用户代理包含目标网页登录终端上登录目标网页的用户信息、媒体传输通道的标识和代理传输通道的标识。
其中,用户代理可以用于从目标网页登录终端接收加入信令,响应加入信令生成并向分布式消息队列发送传输通道创建请求消息,以便通过分布式消息队列将传输通道创建请求消息发送至流媒体服务器中的媒体流处理进程,媒体流处理进程响应传输通道创建请求消息,在媒体流处理进程中创建媒体传输通道和代理传输通道。
本公开实施例中,传输通道创建请求消息可以包括第一传输通道创建请求消息和第二传输通道创建请求消息。
本公开实施例的媒体数据传输系统的其它内容可以参照上述实施例。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
下面参考图11,其示出了适于用来实现本申请实施例的电子设备的结构示意图。图11示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
参照图11,本公开实施例提供的电子设备可以包括:处理器1101、通信接口1102、存储器1103和通信总线1104。
其中处理器1101、通信接口1102和存储器1103通过通信总线1104完成相互间的通信。
可选的,通信接口1102可以为通信模块的接口,如GSM(Global System forMobile communications,全球移动通信系统)模块的接口。处理器1101用于执行程序。存储器1103用于存放程序。程序可以包括计算机程序,该计算机程序包括计算机操作指令。其中,程序中可以包括:游戏客户端的程序。
处理器1101可以是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本公开实施例的一个或多个集成电路。
存储器1103可以包含高速RAM(random access memory,随机存取存储器)存储器,也可以还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
其中,程序可具体用于:通过流媒体服务器中的媒体传输通道从目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据;通过媒体传输通道将采用网页通信媒体协议封装的待发布媒体数据,发送至代理传输通道;利用流媒体服务器中的代理传输通道将采用网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据;通过代理传输通道将采用客户端媒体协议封装的待发布媒体数据,发送至目标客户端。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例的各种可选实现方式中提供的方法。
需要理解的是,在本公开附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (13)
1.一种媒体数据处理方法,其特征在于,所述方法由流媒体服务器执行,所述流媒体服务器为MediaSoup,所述流媒体服务器包括媒体传输通道、代理传输通道、脚本语言运行环境和媒体流处理进程,所述脚本语言运行环境表示为MediaSoup NodeJS,所述媒体流处理进程为MediaSoup Worker,MediaSoup NodeJS和MediaSoup Worker之间通过进程间通信;
所述媒体传输通道包括用于发布流的媒体传输通道,所述代理传输通道包括用于订阅流的代理传输通道,所述用于订阅流的代理传输通道内包括媒体服务对象,所述媒体服务对象与媒体服务器之间维持用户数据报协议数据通道;
信令服务器用于与目标页面浏览端通过WebSocket进行交互,响应所述目标页面浏览端发送的加入信令,在所述信令服务器中创建用户代理,并控制所述用户代理向分布式消息队列发送第一传输通道创建请求消息;所述加入信令携带目标网页的用户信息;所述用户代理包含所述目标页面浏览端上目标网页的用户信息、所述用于发布流的媒体传输通道的标识和所述用于订阅流的代理传输通道的标识;
所述用户代理用于响应所述目标页面浏览端发送的发布流信令生成第一生产者角色创建请求消息,并将所述第一生产者角色创建请求消息发送至所述分布式消息队列;
其中,所述方法包括:
通过所述脚本语言运行环境从所述分布式消息队列接收所述第一传输通道创建请求消息,并将所述第一传输通道创建请求消息发送至所述媒体流处理进程;
所述媒体流处理进程响应所述第一传输通道创建请求消息,在所述媒体流处理进程中创建所述用于发布流的媒体传输通道和所述用于订阅流的代理传输通道,生成所述用于发布流的媒体传输通道的标识和所述用于订阅流的代理传输通道的标识,并将所述用于发布流的媒体传输通道的标识和所述用于订阅流的代理传输通道的标识返回至所述目标页面浏览端;
通过所述脚本语言运行环境从所述分布式消息队列接收所述第一生产者角色创建请求消息,并将所述第一生产者角色创建请求消息发送至所述用于发布流的媒体传输通道;
所述用于发布流的媒体传输通道响应所述第一生产者角色创建请求消息,在所述用于发布流的媒体传输通道上生成第一生产者角色,并保存所述第一生产者角色的第一生产者角色标识,向所述用于订阅流的代理传输通道发送第一消费者角色创建请求消息;
通过所述用于订阅流的代理传输通道接收并响应所述第一消费者角色创建请求消息,在所述用于订阅流的代理传输通道上生成第一消费者角色,使得所述第一消费者角色订阅所述第一生产者角色标识,形成所述第一消费者角色和所述第一生产者角色之间的发布订阅关系;
通过所述用于发布流的媒体传输通道从所述目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据;
基于所述第一消费者角色和所述第一生产者角色之间的发布订阅关系,通过所述用于发布流的媒体传输通道将采用所述网页通信媒体协议封装的待发布媒体数据,发送至所述用于订阅流的代理传输通道;
利用所述用于订阅流的代理传输通道内的所述媒体服务对象解析采用所述网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据,所述代理传输通道具有所述网页通信媒体协议和所述客户端媒体协议的相互转换功能,所述客户端媒体协议是指用于实现客户端媒体数据通信的协议,所述客户端媒体协议包括客户端采用的私有音视频协议;
通过所述用于订阅流的代理传输通道,并利用所述用户数据报协议数据通道,将采用所述客户端媒体协议封装的待发布媒体数据,发送至采用所述客户端媒体协议的媒体服务器,所述媒体服务器将采用所述客户端媒体协议封装的待发布媒体数据发送至目标客户端。
2.根据权利要求1所述的方法,其特征在于,利用所述用于订阅流的代理传输通道将采用所述网页通信媒体协议封装的待发布媒体数据,转换为采用所述客户端媒体协议封装的待发布媒体数据,包括:
利用所述用于订阅流的代理传输通道解析采用所述网页通信媒体协议封装的待发布媒体数据;
所述用于订阅流的代理传输通道将解析获得的所述待发布媒体数据,转换为采用所述客户端媒体协议封装的待发布媒体数据。
3.根据权利要求1所述的方法,其特征在于,还包括:
通过所述代理传输通道从所述目标客户端接收采用所述客户端媒体协议封装的待订阅媒体数据;
通过所述代理传输通道将采用所述客户端媒体协议封装的待订阅媒体数据转换为采用所述网页通信媒体协议封装的待订阅媒体数据;
通过所述代理传输通道将采用所述网页通信媒体协议封装的待订阅媒体数据,发送至所述媒体传输通道;
通过所述媒体传输通道将采用所述网页通信媒体协议封装的待订阅媒体数据发送至所述目标页面浏览端。
4.根据权利要求3所述的方法,其特征在于,所述媒体传输通道包括用于订阅流的媒体传输通道,所述代理传输通道包括用于发布流的代理传输通道;其中,在通过所述代理传输通道从所述目标客户端接收采用所述客户端媒体协议封装的待订阅媒体数据之前,所述方法还包括:
通过所述用于发布流的代理传输通道接收所述目标页面浏览端发起的通知新用户发布流消息;
所述用于发布流的代理传输通道响应所述通知新用户发布流消息,在所述用于发布流的代理传输通道上生成第二生产者角色,并保存所述第二生产者角色的第二生产者角色标识;
通过所述用于发布流的代理传输通道向所述用于订阅流的媒体传输通道发送第二消费者角色创建请求消息;
通过所述用于订阅流的媒体传输通道接收并响应所述第二消费者角色创建请求消息,在所述用于订阅流的媒体传输通道上生成第二消费者角色,并保存所述第二消费者角色的第二消费者角色标识;
通过所述用于订阅流的媒体传输通道使得所述第二消费者角色订阅所述第二生产者角色标识,形成所述第二消费者角色和所述第二生产者角色之间的发布订阅关系。
5.根据权利要求4所述的方法,其特征在于,通过所述代理传输通道从所述目标客户端接收采用所述客户端媒体协议封装的待订阅媒体数据,包括:
通过所述用于发布流的代理传输通道,从媒体服务器接收采用所述客户端媒体协议封装的待订阅媒体数据,其中采用所述客户端媒体协议封装的待订阅媒体数据是所述媒体服务器从所述目标客户端接收的;
其中,通过所述代理传输通道将采用所述客户端媒体协议封装的待订阅媒体数据转换为采用所述网页通信媒体协议封装的待订阅媒体数据,包括:
利用所述用于发布流的代理传输通道解析采用所述客户端媒体协议封装的待订阅媒体数据;
所述用于发布流的代理传输通道将解析获得的所述待订阅媒体数据,转换为采用所述网页通信媒体协议封装的待订阅媒体数据;
其中,通过所述代理传输通道将采用所述网页通信媒体协议封装的待订阅媒体数据,发送至所述媒体传输通道,包括:
基于所述第二消费者角色和所述第二生产者角色之间的发布订阅关系,通过所述用于发布流的代理传输通道将采用所述网页通信媒体协议封装的待订阅媒体数据,发送至所述用于订阅流的媒体传输通道;
其中,通过所述媒体传输通道将采用所述网页通信媒体协议封装的待订阅媒体数据发送至所述目标页面浏览端,包括:
通过所述用于订阅流的媒体传输通道将采用所述网页通信媒体协议封装的待订阅媒体数据发送至所述目标页面浏览端。
6.一种媒体数据处理装置,其特征在于,所述媒体数据处理装置设置于流媒体服务器,所述流媒体服务器为MediaSoup,所述流媒体服务器包括媒体传输通道、代理传输通道、脚本语言运行环境和媒体流处理进程,所述脚本语言运行环境表示为MediaSoup NodeJS,所述媒体流处理进程为MediaSoup Worker,MediaSoup NodeJS和MediaSoup Worker之间通过进程间通信;
所述媒体传输通道包括用于发布流的媒体传输通道,所述代理传输通道包括用于订阅流的代理传输通道,所述用于订阅流的代理传输通道内包括媒体服务对象,所述媒体服务对象与媒体服务器之间维持用户数据报协议数据通道;
信令服务器用于与目标页面浏览端通过WebSocket进行交互,响应所述目标页面浏览端发送的加入信令,在所述信令服务器中创建用户代理,并控制所述用户代理向分布式消息队列发送第一传输通道创建请求消息;所述加入信令携带目标网页的用户信息;所述用户代理包含所述目标页面浏览端上目标网页的用户信息、所述用于发布流的媒体传输通道的标识和所述用于订阅流的代理传输通道的标识;
所述用户代理用于响应所述目标页面浏览端发送的发布流信令生成第一生产者角色创建请求消息,并将所述第一生产者角色创建请求消息发送至所述分布式消息队列;
其中,所述装置包括:
第一传输通道创建请求消息接收单元,用于通过所述脚本语言运行环境从所述分布式消息队列接收所述第一传输通道创建请求消息,并将所述第一传输通道创建请求消息发送至所述媒体流处理进程;
第一传输通道创建单元,用于通过所述媒体流处理进程响应所述第一传输通道创建请求消息,在所述媒体流处理进程中创建所述用于发布流的媒体传输通道和所述用于订阅流的代理传输通道;
第一传输通道标识返回单元,用于通过所述媒体流处理进程生成所述用于发布流的媒体传输通道的标识和所述用于订阅流的代理传输通道的标识,并将所述用于发布流的媒体传输通道的标识和所述用于订阅流的代理传输通道的标识返回至所述目标页面浏览端;
第一生产者角色创建请求消息接收单元,用于通过所述脚本语言运行环境从所述分布式消息队列接收所述第一生产者角色创建请求消息,并将所述第一生产者角色创建请求消息发送至所述用于发布流的媒体传输通道;
第一生产者角色生成单元,用于通过所述用于发布流的媒体传输通道响应所述第一生产者角色创建请求消息,在所述用于发布流的媒体传输通道上生成第一生产者角色,并保存所述第一生产者角色的第一生产者角色标识;
第一消费者角色创建请求消息发送单元,用于通过所述用于发布流的媒体传输通道向所述用于订阅流的代理传输通道发送第一消费者角色创建请求消息;
第一消费者角色生成单元,用于通过所述用于订阅流的代理传输通道接收并响应所述第一消费者角色创建请求消息,在所述用于订阅流的代理传输通道上生成第一消费者角色;
第一发布订阅关系形成单元,用于通过所述用于订阅流的代理传输通道使得所述第一消费者角色订阅所述第一生产者角色标识,形成所述第一消费者角色和所述第一生产者角色之间的发布订阅关系;
待发布媒体数据接收单元,用于通过所述媒体传输通道从所述目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据;所述待发布媒体数据接收单元包括:发布流媒体传输通道接收单元,用于通过所述用于发布流的媒体传输通道,从所述目标页面浏览端接收采用所述网页通信媒体协议封装的待发布媒体数据;
待发布媒体数据转发单元,用于通过所述媒体传输通道将采用所述网页通信媒体协议封装的待发布媒体数据,发送至所述代理传输通道;所述待发布媒体数据转发单元包括:发布流媒体传输通道转发单元,用于基于所述第一消费者角色和所述第一生产者角色之间的发布订阅关系,通过所述用于发布流的媒体传输通道将采用所述网页通信媒体协议封装的待发布媒体数据,发送至所述用于订阅流的代理传输通道;
待发布媒体数据转换单元,用于利用所述用于订阅流的代理传输通道将采用所述网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据,所述代理传输通道具有所述网页通信媒体协议和所述客户端媒体协议的相互转换功能,所述客户端媒体协议是指用于实现客户端媒体数据通信的协议,所述客户端媒体协议包括客户端采用的私有音视频协议;所述待发布媒体数据转换单元包括:媒体服务对象解析单元,用于利用所述媒体服务对象解析采用所述网页通信媒体协议封装的待发布媒体数据,将采用所述网页通信媒体协议封装的待发布媒体数据转换为采用所述客户端媒体协议封装的待发布媒体数据;
待发布媒体数据发送单元,用于通过所述代理传输通道将采用所述客户端媒体协议封装的待发布媒体数据,发送至目标客户端;所述待发布媒体数据发送单元包括:用户数据报协议数据通道传输单元,用于利用所述用户数据报协议数据通道,将采用所述客户端媒体协议封装的待发布媒体数据,发送至采用所述客户端媒体协议的媒体服务器,以便所述媒体服务器将采用所述客户端媒体协议封装的待发布媒体数据传输至所述目标客户端。
7.根据权利要求6所述的装置,其特征在于,所述待发布媒体数据转换单元包括:
订阅流代理传输通道解析单元,用于利用所述用于订阅流的代理传输通道解析采用所述网页通信媒体协议封装的待发布媒体数据;
待发布媒体数据协议转换单元,用于通过所述用于订阅流的代理传输通道将解析获得的所述待发布媒体数据,转换为采用所述客户端媒体协议封装的待发布媒体数据。
8.根据权利要求6所述的装置,其特征在于,还包括:
待订阅媒体数据接收单元,用于通过所述代理传输通道从所述目标客户端接收采用所述客户端媒体协议封装的待订阅媒体数据;
待订阅媒体数据解析单元,用于通过所述代理传输通道将采用所述客户端媒体协议封装的待订阅媒体数据转换为采用所述网页通信媒体协议封装的待订阅媒体数据;
待订阅媒体数据发送单元,用于通过所述代理传输通道将采用所述网页通信媒体协议封装的待订阅媒体数据,发送至所述媒体传输通道;
待订阅媒体数据转发单元,用于通过所述媒体传输通道将采用所述网页通信媒体协议封装的待订阅媒体数据发送至所述目标页面浏览端。
9.根据权利要求8所述的装置,其特征在于,所述媒体传输通道包括用于订阅流的媒体传输通道,所述代理传输通道包括用于发布流的代理传输通道;其中,所述装置还包括:
通知新用户发布流消息接收单元,用于在通过所述代理传输通道从所述目标客户端接收采用所述客户端媒体协议封装的待订阅媒体数据之前,通过所述用于发布流的代理传输通道接收所述目标页面浏览端发起的通知新用户发布流消息;
第二生产者角色生成单元,用于通过所述用于发布流的代理传输通道响应所述通知新用户发布流消息,在所述用于发布流的代理传输通道上生成第二生产者角色,并保存所述第二生产者角色的第二生产者角色标识;
第二消费者角色创建请求消息发送单元,用于通过所述用于发布流的代理传输通道向所述用于订阅流的媒体传输通道发送第二消费者角色创建请求消息;
第二消费者角色生成单元,用于通过所述用于订阅流的媒体传输通道接收并响应所述第二消费者角色创建请求消息,在所述用于订阅流的媒体传输通道上生成第二消费者角色,并保存所述第二消费者角色的第二消费者角色标识;
第二发布订阅关系形成单元,用于通过所述用于订阅流的媒体传输通道使得所述第二消费者角色订阅所述第二生产者角色标识,形成所述第二消费者角色和所述第二生产者角色之间的发布订阅关系。
10.根据权利要求9所述的装置,其特征在于,所述待订阅媒体数据接收单元包括:
发布流代理传输通道接收单元,用于通过所述用于发布流的代理传输通道,从媒体服务器接收采用所述客户端媒体协议封装的待订阅媒体数据,其中采用所述客户端媒体协议封装的待订阅媒体数据是所述媒体服务器从所述目标客户端接收的;
其中,所述待订阅媒体数据解析单元包括:
发布流代理传输通道解析单元,用于利用所述用于发布流的代理传输通道解析采用所述客户端媒体协议封装的待订阅媒体数据;
发布流代理传输通道转换单元,用于通过所述用于发布流的代理传输通道将解析获得的所述待订阅媒体数据,转换为采用所述网页通信媒体协议封装的待订阅媒体数据;
其中,所述待订阅媒体数据发送单元包括:
发布流代理传输通道发送单元,用于基于所述第二消费者角色和所述第二生产者角色之间的发布订阅关系,通过所述用于发布流的代理传输通道将采用所述网页通信媒体协议封装的待订阅媒体数据,发送至所述用于订阅流的媒体传输通道;
其中,所述待订阅媒体数据转发单元包括:
订阅流媒体传输通道发送单元,用于通过所述用于订阅流的媒体传输通道将采用所述网页通信媒体协议封装的待订阅媒体数据发送至所述目标页面浏览端。
11.一种媒体数据传输系统,其特征在于,所述系统包括流媒体服务器、信令服务器和分布式消息队列;
所述流媒体服务器为MediaSoup,所述流媒体服务器包括媒体传输通道、代理传输通道、脚本语言运行环境和媒体流处理进程,所述脚本语言运行环境表示为MediaSoupNodeJS,所述媒体流处理进程为MediaSoup Worker,MediaSoup NodeJS和MediaSoupWorker之间通过进程间通信;
所述媒体传输通道包括用于发布流的媒体传输通道,所述代理传输通道包括用于订阅流的代理传输通道,所述用于订阅流的代理传输通道内包括媒体服务对象,所述媒体服务对象与媒体服务器之间维持用户数据报协议数据通道;
所述信令服务器用于与目标页面浏览端通过WebSocket进行交互,响应所述目标页面浏览端发送的加入信令,在所述信令服务器中创建用户代理,并控制所述用户代理向分布式消息队列发送第一传输通道创建请求消息;所述加入信令携带目标网页的用户信息;所述用户代理包含所述目标页面浏览端上目标网页的用户信息、所述用于发布流的媒体传输通道的标识和所述用于订阅流的代理传输通道的标识;
所述用户代理用于响应所述目标页面浏览端发送的发布流信令生成第一生产者角色创建请求消息,并将所述第一生产者角色创建请求消息发送至所述分布式消息队列;
所述脚本语言运行环境用于从所述分布式消息队列接收所述第一传输通道创建请求消息,并将所述第一传输通道创建请求消息发送至所述媒体流处理进程;
所述媒体流处理进程用于响应所述第一传输通道创建请求消息,在所述媒体流处理进程中创建所述用于发布流的媒体传输通道和所述用于订阅流的代理传输通道,生成所述用于发布流的媒体传输通道的标识和所述用于订阅流的代理传输通道的标识,并将所述用于发布流的媒体传输通道的标识和所述用于订阅流的代理传输通道的标识返回至所述目标页面浏览端;
所述脚本语言运行环境还用于从所述分布式消息队列接收所述第一生产者角色创建请求消息,并将所述第一生产者角色创建请求消息发送至所述用于发布流的媒体传输通道;
所述用于发布流的媒体传输通道用于响应所述第一生产者角色创建请求消息,在所述用于发布流的媒体传输通道上生成第一生产者角色,并保存所述第一生产者角色的第一生产者角色标识;向所述用于订阅流的代理传输通道发送第一消费者角色创建请求消息;
所述用于订阅流的代理传输通道用于接收并响应所述第一消费者角色创建请求消息,在所述用于订阅流的代理传输通道上生成第一消费者角色;使得所述第一消费者角色订阅所述第一生产者角色标识,形成所述第一消费者角色和所述第一生产者角色之间的发布订阅关系;
所述用于发布流的媒体传输通道还用于从所述目标页面浏览端接收采用网页通信媒体协议封装的待发布媒体数据,并基于所述第一消费者角色和所述第一生产者角色之间的发布订阅关系,将采用所述网页通信媒体协议封装的待发布媒体数据,发送至所述用于订阅流的代理传输通道;
所述用于订阅流的代理传输通道还用于利用其内的所述媒体服务对象解析采用所述网页通信媒体协议封装的待发布媒体数据,转换为采用客户端媒体协议封装的待发布媒体数据,并利用所述用户数据报协议数据通道,将采用所述客户端媒体协议封装的待发布媒体数据,发送至采用所述客户端媒体协议的媒体服务器,所述媒体服务器将采用所述客户端媒体协议封装的待发布媒体数据发送至目标客户端登录终端,所述代理传输通道具有所述网页通信媒体协议和所述客户端媒体协议的相互转换功能,所述客户端媒体协议是指用于实现客户端媒体数据通信的协议,所述客户端媒体协议包括客户端采用的私有音视频协议。
12.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如权利要求1至5任一项所述的方法。
13.一种电子设备,包括:至少一个处理器;存储装置,配置为存储至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,使得所述至少一个处理器实现如权利要求1至5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110401450.1A CN113132376B (zh) | 2021-04-14 | 2021-04-14 | 媒体数据处理方法及装置、系统、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110401450.1A CN113132376B (zh) | 2021-04-14 | 2021-04-14 | 媒体数据处理方法及装置、系统、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113132376A CN113132376A (zh) | 2021-07-16 |
CN113132376B true CN113132376B (zh) | 2022-11-22 |
Family
ID=76777140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110401450.1A Active CN113132376B (zh) | 2021-04-14 | 2021-04-14 | 媒体数据处理方法及装置、系统、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113132376B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113643685A (zh) * | 2021-08-18 | 2021-11-12 | 百度在线网络技术(北京)有限公司 | 数据处理方法、装置、电子设备及计算机存储介质 |
CN113726895B (zh) * | 2021-08-31 | 2023-08-25 | 广州艾美网络科技有限公司 | 文件传输方法、装置及网络ktv系统 |
CN114374662B (zh) * | 2021-12-08 | 2023-12-01 | 聚好看科技股份有限公司 | 一种数据处理方法及电子设备 |
CN114338625B (zh) * | 2022-01-11 | 2023-09-15 | 平安科技(深圳)有限公司 | 实时通信方法、装置、设备及存储介质 |
CN114697376B (zh) * | 2022-03-16 | 2024-09-24 | 浪潮云信息技术股份公司 | 一种超大消息传输方法及装置 |
CN114726831B (zh) * | 2022-04-06 | 2022-10-18 | 盐城师范学院 | 基于WebRTC协议实现集群对讲的方法及系统 |
CN114866520B (zh) * | 2022-04-18 | 2024-01-30 | 北京奇艺世纪科技有限公司 | 通信的处理方法、系统、电子设备及存储介质 |
CN114760509B (zh) * | 2022-06-14 | 2022-09-20 | 飞狐信息技术(天津)有限公司 | 视频发布方法、系统、存储介质及电子设备 |
CN115242760B (zh) * | 2022-07-20 | 2023-12-26 | 深圳市灵镜技术有限公司 | 一种基于WebRTC的SFU系统及方法 |
CN115473876A (zh) * | 2022-09-15 | 2022-12-13 | 北京百度网讯科技有限公司 | 实时流媒体数据的传输方法、装置、系统和存储介质 |
CN116708381B (zh) * | 2023-08-04 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 跨网络的数据传输方法、装置和存储介质及电子设备 |
CN116938897B (zh) * | 2023-09-19 | 2023-12-15 | 好信云(北京)网络通信有限公司 | 一种用于会议的实时通信的方法和装置 |
CN118972376B (zh) * | 2024-10-09 | 2025-02-11 | 中孚安全技术有限公司 | 监控视频数据的处理方法、系统、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104704795A (zh) * | 2012-10-19 | 2015-06-10 | 统一有限责任两合公司 | 通过使用具有webRTC功能的网络浏览器创建虚拟SIP用户代理的方法和系统 |
CN111901621A (zh) * | 2020-07-30 | 2020-11-06 | 厦门千时科技有限公司 | 一种基于直播内容识别的互动直播教学节流装置和方法 |
CN112600832A (zh) * | 2015-05-05 | 2021-04-02 | 伊帕莱夫股份公司 | 在实时通信中建立媒体路径 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6721779B1 (en) * | 2000-07-07 | 2004-04-13 | Softwired Ag | Messaging proxy system |
WO2007016270A2 (en) * | 2005-07-28 | 2007-02-08 | Dilithium Networks Pty Ltd. | Method and apparatus for providing interactive media during communication in channel-based media telecommunication protocols |
FI20065452A0 (fi) * | 2006-06-29 | 2006-06-29 | Valtion Teknillinen | Menetelmä sisällön välittämiseen |
EP3349394B1 (en) * | 2017-01-16 | 2021-11-10 | Vertigo Media, Inc. | System, method, and application for exchanging content in a social network environment |
CN107995187A (zh) * | 2017-11-30 | 2018-05-04 | 上海哔哩哔哩科技有限公司 | 基于html5浏览器的视频主播、直播方法、终端和系统 |
CN108848121A (zh) * | 2018-05-03 | 2018-11-20 | 广州视源电子科技股份有限公司 | 屏幕画面传输方法、装置、服务器、系统及存储介质 |
CN110740161B (zh) * | 2019-08-30 | 2022-05-13 | 武汉烽火众智数字技术有限责任公司 | 一种适配融合通信的系统及方法 |
CN112511783A (zh) * | 2019-09-16 | 2021-03-16 | 武汉斗鱼网络科技有限公司 | 音视频流的混合显示方法、装置、服务器和存储介质 |
CN111131743A (zh) * | 2019-12-25 | 2020-05-08 | 视联动力信息技术股份有限公司 | 基于浏览器的视频通话方法、装置、电子设备及存储介质 |
CN112073423A (zh) * | 2020-09-15 | 2020-12-11 | 杭州二更网络科技有限公司 | 基于WebRTC进行浏览器推流的方法及系统 |
CN112565234B (zh) * | 2020-11-30 | 2022-10-14 | 武汉烽火众智数字技术有限责任公司 | 基于WebRTC的跨网传输系统及方法 |
CN112532945B (zh) * | 2020-12-01 | 2023-05-30 | 兴唐通信科技有限公司 | 一种多类型媒体业务融合系统 |
-
2021
- 2021-04-14 CN CN202110401450.1A patent/CN113132376B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104704795A (zh) * | 2012-10-19 | 2015-06-10 | 统一有限责任两合公司 | 通过使用具有webRTC功能的网络浏览器创建虚拟SIP用户代理的方法和系统 |
CN112600832A (zh) * | 2015-05-05 | 2021-04-02 | 伊帕莱夫股份公司 | 在实时通信中建立媒体路径 |
CN111901621A (zh) * | 2020-07-30 | 2020-11-06 | 厦门千时科技有限公司 | 一种基于直播内容识别的互动直播教学节流装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113132376A (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113132376B (zh) | 媒体数据处理方法及装置、系统、电子设备和存储介质 | |
US9578081B2 (en) | System and method for providing an actively invalidated client-side network resource cache | |
US9560111B2 (en) | System and method to transport HTTP over XMPP | |
CN102546794B (zh) | 浏览器客户端与后端服务器直通的方法、网关和通信系统 | |
US8799400B2 (en) | System and method for managing multiple queues of non-persistent messages in a networked environment | |
CN107682657A (zh) | 一种基于WebRTC的多人语音视频通话方法及系统 | |
CN111479121A (zh) | 一种基于流媒体服务器的直播方法及系统 | |
CN105141660B (zh) | 一种流媒体管理方法及系统 | |
CN107332857B (zh) | 一种网络数据传输方法、装置、系统和存储介质 | |
CN112673605B (zh) | 用于动态多端点生成的方法、装置和计算机程序 | |
US9871840B2 (en) | Electronic apparatus and method for transferring contents on cloud system to device connected to DLNA | |
Krawiec et al. | Survey on technologies for enabling real-time communication in the web of things | |
Cui et al. | Research and Implementation of WEBRTC Signaling via websocket-based for real-time multimedia communications | |
Emmanuel et al. | A peer-to-peer architecture for real-time communication using Webrtc | |
US20240022614A1 (en) | Information interaction method and apparatus | |
Saveliev et al. | Architecture of data exchange with minimal client-server interaction at multipoint video conferencing | |
CN112532534B (zh) | 一种数据传输方法、装置以及计算机可读存储介质 | |
CN106534052B (zh) | 一种通信处理方法及电子设备 | |
Petrova-Antonova et al. | Unified connectivity of IoT devices through abstraction of application protocols | |
Ivan | A web based Publish-Subscribe framework for mobile computing | |
Tiwari et al. | Voice Chat Web App Using Webrtc | |
CN114124508B (zh) | 一种应用登录方法及系统 | |
US20240430319A1 (en) | Data channel management in an interactive live streaming network | |
Parsons et al. | Velox: Enhancing P2P Real-Time Communication in Browsers | |
Rodríguez Baquero | Analysis of WebRTC signaling |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40048730 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |