CN114079828A - 流媒体数据的处理方法以及装置 - Google Patents
流媒体数据的处理方法以及装置 Download PDFInfo
- Publication number
- CN114079828A CN114079828A CN202010851842.3A CN202010851842A CN114079828A CN 114079828 A CN114079828 A CN 114079828A CN 202010851842 A CN202010851842 A CN 202010851842A CN 114079828 A CN114079828 A CN 114079828A
- Authority
- CN
- China
- Prior art keywords
- terminal
- streaming media
- media data
- sending
- media server
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 57
- 238000012545 processing Methods 0.000 title claims description 52
- 238000003672 processing method Methods 0.000 claims abstract description 17
- 238000004590 computer program Methods 0.000 claims description 20
- 230000004044 response Effects 0.000 claims description 14
- 230000006854 communication Effects 0.000 abstract description 20
- 238000004891 communication Methods 0.000 abstract description 20
- 230000006870 function Effects 0.000 description 27
- 230000008569 process Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 8
- 230000000694 effects Effects 0.000 description 5
- 230000007175 bidirectional communication Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000011664 signaling Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/63—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing
- H04N21/632—Control signaling related to video distribution between client, server and network components; Network processes for video distribution between server and clients or between remote clients, e.g. transmitting basic layer and enhancement layers over different transmission paths, setting up a peer-to-peer communication via Internet between remote STB's; Communication protocols; Addressing using a connection between clients on a wide area network, e.g. setting up a peer-to-peer communication via Internet for retrieving video segments from the hard-disk of other client devices
-
- 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/2187—Live feed
-
- 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/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/254—Management at additional data server, e.g. shopping server, rights management server
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Databases & Information Systems (AREA)
- Information Transfer Between Computers (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
提供了一种流媒体数据的处理方法及装置,涉及通信技术领域,以解决多个终端双向通信时,终端负荷过大的问题。该流媒体数据的处理方法包括:将流媒体服务器与第一终端建立连接并在该流媒体服务器中创建用于实时通话的房间;将房间的房间标识发送给第一终端使第一终端加入房间;接收第二终端的连接请求,该连接请求包括房间标识;将流媒体服务器和第二终端建立连接,并根据房间标识将第二终端加入房间;接收第一终端发送的第一流媒体数据,并将第一流媒体数据发送至第二终端;接收第二终端发送的第二流媒体数据,并将第二流媒体数据发送至第一终端。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种流媒体数据的处理方法以及装置。
背景技术
随着网络技术的发展,利用网络进行直播已经成为近年来较为流行的交流方式,例如,在线讲座。
其中,在直播的过程中,主持人可以通过一个终端(例如发送终端)向观众发送音视频流(即音频和/或视频流),观众可以通过其他终端(例如接收终端)观看主持人发送的音视频流。
然而,上述的直播方式中,当有多个观众通过终端观看直播时,即当多个终端参与到直播时,这就要求每个终端在将自己的音视频流发送给其他终端的同时,还要接受其他终端发送的音视频流。例如,如图1所示,有4个终端,分别记为A、B、C、D,任一终端A可能需要与其他3个终端直接进行双向通信,这样,会导致终端的负荷过大,从而使得终端无法承受其负荷,当终端的数量越多时,终端的负荷会越大。
发明内容
本发明的实施例提供一种流媒体数据的处理方法及装置,用以解决多个终端双向通信时,终端负荷过大的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供了一种流媒体数据的处理方法,该方法包括:将流媒体服务器与第一终端建立连接并在流媒体服务器中创建用于实时通话的房间;将房间的房间标识发送给第一终端使第一终端加入房间;接收第二终端的连接请求,该连接请求包括房间标识;将流媒体服务器和第二终端建立连接,并根据房间标识将第二终端加入房间;接收第一终端发送的第一流媒体数据,并将第一流媒体数据发送至第二终端;接收第二终端发送的第二流媒体数据,并将第二流媒体数据发送至第一终端。
在一些实施例中,在接收第一终端发送的第一流媒体数据之后,在将第一流媒体数据发送至第二终端之前,所述处理方法还包括:向加入房间的除第一终端之外的其他终端发送第一发布消息,该第一发布消息被配置为表示第一终端发布了流媒体数据;接收第二终端发送的第一订阅消息,该第一订阅消息被配置为表示第二终端订阅第一终端的流媒体数据;和/或,在接收第二终端发送的第二流媒体数据之后,在将第二流媒体数据发送至第一终端之前,所述处理方法还包括:向加入房间的除第二终端之外的其他终端发送第二发布消息,该第二发布消息被配置为表示第二终端发布了流媒体数据;接收第一终端发送的第二订阅消息,该第二订阅消息被配置为表示第一终端订阅第二终端的流媒体数据。
在一些实施例中,在第一终端和第二终端均加入房间之后,流媒体数据的处理方法还包括:为第一终端创建第一PeerConnection对象,并基于第一PeerConnection对象,将流媒体服务器与第一终端建立第一P2P通道;为第二终端创建第二PeerConnection对象,并基于第二PeerConnection对象,将流媒体服务器与第二终端建立第二P2P通道;接收第一终端发送的第一流媒体数据包括:通过第一P2P通道,接收第一终端发送的第一流媒体数据;流媒体数据的处理方法还包括:将接收的第一流媒体数据添加到第一PeerConnection对象中;将第一流媒体数据复制到第二PeerConnection对象中;将第一流媒体数据发送至第二终端包括:通过第二P2P通道,将第二PeerConnection对象中的第一流媒体数据发送至所述第二终端。
在一些实施例中,在第一终端和第二终端均加入房间之后,流媒体数据的处理方法还包括:基于第一PeerConnection对象,将流媒体服务器与第一终端建立第三P2P通道;基于第二PeerConnection对象,将流媒体服务器与第二终端建立第四P2P通道;接收第二终端发送的第二流媒体数据包括:通过第四P2P通道,接收第二终端发送的第二流媒体数据;流媒体数据的处理方法还包括:将接收的第二流媒体数据添加到第二PeerConnection对象中;将第二流媒体数据复制到第一PeerConnection对象中;将第二流媒体数据发送至第一终端包括:通过第三P2P通道,将第一PeerConnection对象中的第二流媒体数据发送至第一终端。
在一些实施例中,基于第一PeerConnection对象,将流媒体服务器与第一终端建立第一P2P通道包括:保存从第一终端发送的SDP信息,并创建应答SDP信息;保存从第一终端发送的网络信息;基于第二PeerConnection对象,将流媒体服务器与第二终端建立第二P2P通道包括:将第一终端发送的SDP信息保存到第二PeerConnection对象;将第一终端发送的SDP信息发送至第二终端;保存从第二终端发送的网络信息。
第二方面,本发明实施例提供了一种流媒体数据的处理方法,该流媒体数据的处理方法包括:将第一终端与流媒体服务器建立连接,并创建发送PeerConnection对象和接收PeerConnection对象;基于发送PeerConnection对象,将第一终端与流媒体服务器建立第一P2P通道;通过第一P2P通道,第一终端向流媒体服务器发送第一流媒体数据;基于接收PeerConnection对象,将第一终端与流媒体服务器建立第三P2P通道;通过第三P2P通道,第一终端接收流媒体服务器发送的第二流媒体数据。
在一些实施例中,在通过第三P2P通道,第一终端接收流媒体服务器发送的第二流媒体数据之前,流媒体数据的处理方法还包括:第一终端接收流媒体服务器发送的第二发布消息,该第二发布消息被配置为表示第二终端发布了流媒体数据;第一终端向流媒体服务器发送第二订阅消息,该第二订阅消息被配置为表示第一终端订阅第二终端的流媒体数据。
在一些实施例中,基于发送PeerConnection对象,将第一终端与流媒体服务器建立第一P2P通道包括:设置发送PeerConnection对象的事件响应操作;从第一终端获取流媒体数据,并将流媒体数据传给发送PeerConnection对象;创建流媒体数据的SDP信息,并将SDP信息发送至发送PeerConnection对象;将SDP信息发送至流媒体服务器。
第三方面,本发明实施例提供了一种流媒体数据的处理装置,该流媒体数据的处理装置包括连接模块、创建模块、接收模块、发送模块和加入模块;连接模块,被配置为将流媒体服务器与第一终端建立连接,还被配置为将流媒体服务器与第二终端建立连接;创建模块,被配置为在流媒体服务器中创建用于实时通话的房间;发送模块,被配置为将房间的房间标识发送给第一终端使该第一终端加入房间;接收模块,被配置为接收第二终端的连接请求,该连接请求包括房间标识;接收模块还被配置为接收第一终端发送的第一流媒体数据,还被配置为接收第二终端发送的第二流媒体数据;加入模块,被配置为在连接模块将流媒体服务器和第二终端建立连接后,根据房间标识将第二终端加入房间;发送模块,还被配置为在接收模块接收第一流媒体数据后,将该第一流媒体数据发送至第二终端,还被配置为在接收模块接收第二流媒体数据后,将该第二流媒体数据发送至第一终端。
在一些实施例中,在接收第一终端发送的第一流媒体数据之后,在将第一流媒体数据发送至第二终端之前,发送模块,还被配置为向加入房间的除第一终端之外的其他终端发送第一发布消息,该第一发布消息被配置为表示第一终端发布了流媒体数据;接收模块,还被配置为接收第二终端发送的第一订阅消息,该第一订阅消息被配置为表示第二终端订阅第一终端的流媒体数据;和/或,在接收第二终端发送的第二流媒体数据之后,在将第二流媒体数据发送至第一终端之前,发送模块,还被配置为向加入房间的除第二终端之外的其他终端发送第二发布消息,该第二发布消息被配置为表示第二终端发布了流媒体数据;接收模块,还被配置为接收第一终端发送的第二订阅消息,该第二订阅消息被配置为表示第一终端订阅第二终端的流媒体数据。
第四方面,本发明实施例提供了一种流媒体数据的处理装置,该终端的处理装置包括连接模块、创建模块、发送模块和接收模块;连接模块,被配置为将第一终端与流媒体服务器建立连接;创建模块,被配置为创建发送PeerConnection对象和接收PeerConnection对象;创建模块,还被配置为基于发送PeerConnection对象,将第一终端与流媒体服务器建立第一P2P通道;发送模块,被配置为通过创建模块建立的第一P2P通道,向流媒体服务器发送第一流媒体数据;创建模块,还被配置为基于接收PeerConnection对象,将第一终端与流媒体服务器建立第三P2P通道;接收模块,被配置为通过创建模块建立的第三P2P通道,接收流媒体服务器发送的第二流媒体数据。
第五方面,本发明实施例提供了一种流媒体服务器,包括处理器、存储器及存储在该存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时,使流媒体服务器实现如第一方面和第二方面所述的流媒体数据的处理方法的步骤。
第六方面,本发明实施例提供一种第一终端,包括处理器、存储器及存储在该存储器上并可在处理器上运行的计算机程序,该计算机程序被处理器执行时,使第一终端实现如第一方面和第二方面所述的流媒体数据的处理方法的步骤。
第七方面,本发明实施例提供一种非瞬态计算机可读存储介质,该非瞬态计算机可读存储介质上存储计算机程序,计算机程序被处理器执行时实现如第一方面和第二方面所述的流媒体数据的处理方法的步骤。
本发明实施例提供的流媒体数据的处理方法以及装置,可以利用流媒体服务器双向传输流媒体数据的方式,以使得流媒体服务器既能接收由一个终端(例如第一终端)发送的流媒体数据,并将该流媒体数据转发至另一个终端(例如第二终端),也能接收由第二终端发送的流媒体数据,并将该流媒体数据转发至第一终端。相比于现有技术,由于增设了流媒体服务器作为中间通信节点,这样每个终端均只需要和流媒体服务器之间进行双向通信,而无需直接和其他终端进行通信;例如,如果有3个终端需要两两之间进行双向通信,现有技术中每个终端需要和其他两个终端进行直接通信,而本发明实施例提供的方案中每个终端和流媒体服务器直接通信即可,因此,可以减轻终端的负荷。当终端数量越多时,减轻负荷的效果会更加突出。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为相关技术提供的一种多方通信结构图;
图2为本发明一些实施例提供的一种通信***;
图3为本发明一些实施例提供的一种流媒体数据的处理方法的示意图;
图4为本发明一些实施例提供的另一种流媒体数据的处理方法的示意图;
图5为本发明一些实施例提供的一种***架构图;
图6为本发明一些实施例提供的一种流媒体服务器的结构图;
图7为本发明一些实施例提供的一种流媒体数据的处理装置的结构示意图;
图8为本发明一些实施例提供的另一种流媒体数据的处理装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非上下文另有要求,否则,在整个说明书和权利要求书中,术语“包括”及其其他形式例如第三人称单数形式“包括”和现在分词形式“包括”被解释为开放、包含的意思,即为“包含,但不限于”。在说明书的描述中,术语“一个实施例”、“一些实施例”、“示例性实施例”、“示例”、“特定示例”或“一些示例”等旨在表明与该实施例或示例相关的特定特征、结构、材料或特性包括在本公开的至少一个实施例或示例中。上述术语的示意性表示不一定是指同一实施例或示例。此外,所述的特定特征、结构、材料或特点可以以任何适当方式包括在任何一个或多个实施例或示例中。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本公开实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
在描述一些实施例时,可能使用了“耦接”和“连接”及其衍伸的表达。例如,描述一些实施例时可能使用了术语“连接”以表明两个或两个以上部件彼此间有直接物理接触或电接触。又如,描述一些实施例时可能使用了术语“耦接”以表明两个或两个以上部件有直接物理接触或电接触。然而,术语“耦接”或“通信耦合”也可能指两个或两个以上部件彼此间并无直接接触,但仍彼此协作或相互作用。这里所公开的实施例并不必然限制于本文内容。
“A、B和C中的至少一个”与“A、B或C中的至少一个”具有相同含义,均包括以下A、B和C的组合:仅A,仅B,仅C,A和B的组合,A和C的组合,B和C的组合,及A、B和C的组合。
“A和/或B”,包括以下三种组合:仅A,仅B,及A和B的组合。
“多个”是指至少两个。
本文中“适用于”或“被配置为”的使用意味着开放和包容性的语言,其不排除适用于或被配置为执行额外任务或步骤的设备。
另外,“基于”的使用意味着开放和包容性,因为“基于”一个或多个所述条件或值的过程、步骤、计算或其他动作在实践中可以基于额外条件或超出所述的值。
如本文所使用的那样,“约”或“近似”包括所阐述的值以及处于特定值的可接受偏差范围内的平均值,其中所述可接受偏差范围如由本领域普通技术人员考虑到正在讨论的测量以及与特定量的测量相关的误差(即,测量***的局限性)所确定。
如图2所示,本发明实施例提供了一种通信***100。该通信***100包括多个(至少两个)终端10和流媒体服务器20。该通信***100可以应用于直播、视频会议等应用场景。本实施例中,终端10可以为移动终端,也可以为非移动终端。示例性的,移动终端可以为手机、平板电脑、笔记本电脑、掌上电脑、车载终端、可穿戴设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digitalassistant,PDA)等,非移动终端可以为个人计算机(personal computer,PC)、电视机(television,TV)、柜员机或者自助机等,本发明实施例不作具体限定。
本领域技术人员应该理解,流媒体指以流方式在网络中传送音频、视频和多媒体文件的媒体形式。相对于下载后观看的网络播放形式而言,流媒体的特征是把连续的音频和视频信息压缩后放到流媒体服务器上,用户边下载边观看,而不必等待整个文件下载完毕。
流媒体服务器20是流媒体应用***的基础,其主要功能是对流媒体内容(流媒体数据)进行采集、缓存、调度和传输播放。
在通信***100中,相互通信的多个终端可以为2个、3个、5个或大于5个等。为了方便描述,本发明实施例中将多个终端10中其中两个称为第一终端和第二终端。示例的,第一终端可以是多个终端中的任意一个,第二终端可以是多个终端中的任意一个或多个。例如,通信***100中包含三个终端10,分别是终端10_A,10_B,10_C;其中,终端10_A可以是发起会话的一方,终端10_B和终端10_C加入该会话。此时,第一终端和第二终端可以是终端10_A,10_B和10_C中的任意两个。例如,第一终端为终端10_A,第二终端为终端10_B或终端10_C。
如图3所示,本发明实施例提供了一种流媒体数据的处理方法,应用于如图1所示的通信***中,该流媒体数据的处理方法包括下述S101~S116:
S101、将流媒体服务器20与第一终端建立连接,并在流媒体服务器20中创建用于实时通话的房间。
示例的,终端10_A发出WebSocket连接请求,具体可以为终端10_A中包括的浏览器发出WebSocket连接请求,流媒体服务器20接收该连接请求,并发出回应,这个过程通常称为“握手”(即建立了WebSocket连接)。在浏览器与流媒体服务器20完成握手动作后,即可认为浏览器和流媒体服务器20之间就形成了一条快速通道,通过该快速通道,终端10_A和流媒体服务器20之间就可以传输除音视频流之外的命令或数据了。例如,快速通道可以用来传输会话描述协议(Session Description Protocol,SDP)信息。在终端10_A和流媒体服务器20建立连接后,流媒体服务器20创建一房间,以用于实时音视频通话。
S102、流媒体服务器20将S101中创建房间的房间标识发送给第一终端,以使第一终端加入该房间。
本领域技术人员应该理解,房间是一个虚拟的概念,房间标识可以是房间ID(roomid),流媒体服务器20在创建房间时会生成唯一的roomid,并将该roomid发送给第一终端,以使该第一终端加入到房间中。终端10(例如,终端10_A,终端10_B或终端10_C)接收到了该房间的roomid,即可认为该终端10加入到了该房间中,在同一房间中的终端才能相互通信。
S103、流媒体服务器20接收第二终端的连接请求,其中,上述连接请求包括房间标识。
S104、将流媒体服务器20和第二终端建立连接,并根据房间标识将该第二终端加入到房间中。
示例的,终端10_B发出WebSocket连接请求,流媒体服务器20接收该连接请求以建立连接,并根据终端10_A与流媒体服务器20创建的房间的标识,将终端10_B加入到该房间中。
本实施例中,在一个终端与流媒体服务器建立连接并创建了用于实时通话的房间后,其他终端只需要加入该房间即可,无需再创建房间。例如,终端10_B中装载的浏览器向流媒体服务器20发出WebSocket连接请求,该WebSocket连接请求中携带有请求加入房间的房间标识,流媒体服务器20同样发出回应,从而二者建立WebSocket连接。其他终端与流媒体服务器20建立连接以及加入房间的过程,与前述的终端10_B执行的流程相同,因此此处不再赘述。
需要说明的是,本发明实施例中所述的第一终端和第二终端可以是加入到房间的任意两个终端。示例的,第一终端可以是申请创建房间的终端,例如终端10_A;第二终端可以是第二个及之后任一个加入到该房间的终端,例如终端10_B或终端10_C。再示例的,第二终端可以是申请创建房间的终端,第一终端可以是第二个及之后任一个加入到该房间的终端。又示例的,第一终端和第二终端可以均是指第二个及之后任一个加入到该房间的终端,例如分别是终端10_B和终端10_C。S105、第一终端在与流媒体服务器20建立连接后,创建发送PeerConnection(对等连接)对象和接收PeerConnection对象。
S106、在第一终端加入到房间后,流媒体服务器20为第一终端创建第一PeerConnection对象。
S107、第一终端和流媒体服务器20之间建立用于第一终端向流媒体服务器20发送流媒体数据的第一P2P通道。
例如,第一终端基于发送PeerConnection对象,将第一终端与流媒体服务器20建立第一P2P通道(P2P channel);相应的,流媒体服务器20基于第一PeerConnection对象,将流媒体服务器20与第一终端建立第一P2P通道。也就是说,第一终端的发送PeerConnection对象和流媒体服务器20的第一PeerConnection对象之间建立了第一P2P通道。
其中,上述的发送PeerConnection对象为用于向流媒体服务器20发送流媒体数据的PeerConnection对象,接收PeerConnection对象为用于接收流媒体服务器20发送的流媒体数据的PeerConnection对象。
本领域技术人员应该理解,上述S105和S106中所述的创建对象(例如发送PeerConnection对象)这一步骤可以参考WebRTC通信流程中的创建PeerConnection对象(也可以称为PeerConnection实例)的步骤,因此不再赘述。
在实施例中,第一终端建立了两个PeerConnection对象,分别用于流媒体数据的发送和接收。这样,可以使得在一个PeerConnection对象中,只处理数据的发送,在另一个PeerConnection对象中,只处理数据的接收,这样提高终端发送和接收数据的效率。
S108、第一终端向流媒体服务器20发送第一流媒体数据;相应的,流媒体服务器20接收第一终端发送的第一流媒体数据。
例如,第一终端通过第一P2P通道,向流媒体服务器20发送第一流媒体数据;相应的,流媒体服务器20通过该第一P2P通道,接收第一终端发送的第一流媒体数据。
本实施例中对流媒体数据的类型不作限制。示例的,流媒体数据可以是音频,也可以是视频,还可以是音频和视频。
需要说明的是,本发明实施例中提供的通信***中包括多个终端,例如第一终端和第二终端,为了区分不同的终端发送的流媒体数据,在其前添加“第一”、“第二”等,即得到上文的“第一流媒体数据”,下文的“第二流媒体数据”。示例的,由第一终端发送的流媒体数据,称为“第一流媒体数据”。
在一些实施例中,如图4所示,上述S105~S107中第一终端与流媒体服务器20建立第一P2P通道的过程可以通过下述S201~S214实现。
S201、第一终端创建发送PeerConnection对象。
S202、第一终端在创建发送PeerConnection对象后,在该发送PeerConnection对象中,设置发送PeerConnection对象的事件响应操作,即设置PeerConnection.addEventListner(icecandidate,onicecandidate)事件,以便在后续步骤中,当网络候选者变为可用时,执行这个函数。
本领域技术人员应该理解,addEventListner为监听事件的函数,在PeerConnection.addEventListner(icecandidate,onicecandidate)事件中,PeerConnection.addEventListner可以是第一终端中包括的发送PeerConnection对象执行该监听事件的函数;icecandidate可以表示为判断网络候选者是否为可用的参数;onicecandidate可以表示为一个函数,其当网络候选者为可用时,调用这个函数。
S203、第一终端通过getUserMedia函数,从第一终端中获取第一流媒体数据。示例的,获取第一终端中的图像采集装置(例如摄像头)采集的视频流,获取音频采集装置(例如话筒)采集的音频流。
S204、第一终端通过发送PeerConnection对象中包括的addStream函数,将从S203中获取的第一流媒体数据传给第一终端10中包含的发送PeerConnection对象。
S205、流媒体服务器20为第一终端创建第一PeerConnection对象。
S206、第一终端通过发送PeerConnection对象中包括的createOffer函数创建一个第一流媒体数据的SDP信息,该SDP信息中保存有第一终端10发送的第一流媒体数据的相关参数。示例的,当第一流媒体数据为视频流时,该SDP信息可以包括该视频流的分辨率等。
S207、第一终端通过发送PeerConnection对象中包括的setLocalDescription函数将上述S206生成的SDP信息保存到第一终端的发送peerConnection对象中。
S208、第一终端通过发送PeerConnection对象中包括的SendOfferSDP函数,将S207中保存的SDP信息从第一终端发送给流媒体服务器20。具体的,可以将SDP信息从第一终端发送至流媒体服务器20中包括的信令服务模块。其中,该信令服务模块中包含有第一PeerConnection对象。
S209、流媒体服务器20(例如流媒体服务器20中的第一PeerConnection对象)通过setRemoteDescription函数,将在S208中发送的SDP信息保存起来。
S210、流媒体服务器20(例如流媒体服务器20中的第一PeerConnection对象)通过CreateAnswer函数,创建一个应答的SDP信息。
S211、流媒体服务器20(例如流媒体服务器20中的第一PeerConnection对象)通过Relay Answer SDP函数,将S210中创建的应答SDP信息发送给第一终端,意思是告诉第一终端,流媒体服务器已经保存了第一终端发布的第一流媒体数据的SDP信息。
S212、第一终端通过发送PeerConnection对象中包括的Send Candidate函数,在网络候选者变为可用时,S202中引入的发送PeerConnection对象的事件响应操作会被执行,并把第一终端的网络信息发送给流媒体服务器20中的第一PeerConnection对象。
S213、流媒体服务器20(例如流媒体服务器20中的第一PeerConnection对象)通过AddIceCandidate函数,将S212中发送的第一终端的网络信息保存起来。
S214、流媒体服务器20(例如流媒体服务器20中的第一PeerConnection对象)通过AddRemoteCandidate函数,将保存了的其他终端(除第一终端以外)的网络信息发送给第一终端。本实施例中,在完成上述S201~S214之后,即可以认为第一终端中的发送PeerConnection对象与流媒体服务器20中的第一PeerConnection对象之间建立了第一P2P通道。
S215、在建立第一P2P通道后,流媒体服务器20中包括的第一PeerConnection对象通过OnAddStream函数,接收由发送PeerConnection对象发送的第一流媒体数据。
S109、第二终端在与流媒体服务器20建立连接后,创建发送PeerConnection对象和接收PeerConnection对象。
S110、在第二终端加入到房间后,流媒体服务器20为第二终端创建第二PeerConnection对象。
S111、第二终端和流媒体服务器20之间建立用于第二终端接收流媒体服务器20发送的流媒体数据的第二P2P通道。
例如,第二终端基于接收PeerConnection对象,将第二终端与流媒体服务器20建立第二P2P通道;相应的,流媒体服务器20基于第二PeerConnection对象,将流媒体服务器20与第二终端建立第二P2P通道。也就是说,第二终端的接收PeerConnection对象和流媒体服务器20的第二PeerConnection对象之间建立了第二P2P通道。
S112、流媒体服务器20向第二终端发送第一流媒体数据;相应的,第二终端接收流媒体服务器发送的第一流媒体数据。
例如,流媒体服务器通过第二P2P通道,向第二终端发送第一流媒体数据;相应的,第二终端通过该第二P2P通道,接收流媒体服务器发送的第一流媒体数据。
在一些实施例中,如图4所示,上述S109~S111中流媒体服务器与第二终端建立第二P2P通道的过程可以通过下述S301~S311实现。
S301、第二终端创建接收PeerConnection对象。
S302、第二终端在创建接收PeerConnection对象后,在该接收PeerConnection对象中,设置接收PeerConnection对象的事件响应操作,即设置PeerConnection.addEventListner(icecandidate,onicecandidate)事件,以便在后续步骤中,当网络候选者变为可用时,执行这个函数。
S303、在流媒体服务器20中为第二终端30创建第二PeerConnection对象。
S304、流媒体服务器20通过第二PeerConnection对象中包括的setLocalDescription函数将创建的第一流媒体数据的SDP信息保存到第二peerConnection对象中。
S305、流媒体服务器通过第二PeerConnection对象中包括的SendOfferSDP函数,将上述S304中保存的SDP信息发送至第二终端。
S306、第二终端通过接收PeerConnection对象中包括的setRemoteDescription函数,将从S305发送的SDP信息保存起来。
S307、第二终端通过接收PeerConnection对象中包括的CreateAnswer函数,创建一个应答的SDP信息。
S308、第二终端通过接收PeerConnection对象中包括的Relay Answer SDP函数,将S307中创建的应答SDP信息发送给流媒体服务器20,意思是告诉流媒体服务器20,第二终端已经保存的第一终端10发布的第一流媒体数据的SDP信息。
S309、第二终端通过接收PeerConnection对象中包括的Send Candidate函数,在网络候选者变为可用时,S302中引入的接收PeerConnection对象的事件响应操作会被执行,并把第二终端的网络信息发送给流媒体服务器20中的第二PeerConnection对象。
S310、流媒体服务器20通过第二PeerConnection对象中包括的AddICECandidate函数,将S309中发送的第二终端30的网络信息保存起来。
S311、流媒体服务器通过第二PeerConnection对象中包括的AddRemoteCandidate函数,将保存了的其他终端(除第二终端以外)的网络信息发送给第二终端。
本实施例中,在完成上述S301~S311之后,即可以认为第二终端中的接收PeerConnection对象与流媒体服务器20中的第二PeerConnection对象之间建立了第二P2P通道。
S312、在建立第二P2P通道后,第二终端(例如第二终端中的接收PeerConnection对象)可以通过OnAddStream函数,接收由第二PeerConnection对象发送的第一流媒体数据。
本发明实施例中,第二终端不仅可以接收由第一终端发送的第一流媒体数据,还可以通过流媒体服务器20,向第一终端发送第二流媒体数据,同样的,第一终端不仅可以向第二终端30发送第一流媒体数据,还可以通过流媒体服务器,接收由第二终端发送的第二流媒体数据。如图3所示,本发明实施例提供的流媒体数据的处理方法还可以包括下述的S113~S116。
S113、第一终端和流媒体服务器20之间建立用于第一终端接收流媒体服务器20发送的流媒体数据的第三P2P通道。
例如,第一终端基于接收PeerConnection对象,将第一终端与流媒体服务器20建立第三P2P通道;相应的,流媒体服务器20基于第一PeerConnection对象,将流媒体服务器与第一终端建立第三P2P通道。也就是说,第一终端的接收PeerConnection对象和流媒体服务器20的第一PeerConnection对象之间建立了第三P2P通道。
S114、流媒体服务器20向第一终端发送第二流媒体数据;相应的,第一终端接收流媒体服务器发送的第二流媒体数据。
例如,流媒体服务器通过第三P2P通道,向第一终端发送第二流媒体数据;相应的,第一终端通过该第三P2P通道,接收流媒体服务器发送的第二流媒体数据。需要说明的是,S112中建立第三P2P通道的过程与上述建立第二P2P通道的过程相比,其不包括S303。
S115、第二终端和流媒体服务器20之间建立用于第二终端向流媒体服务器20发送流媒体数据的第四P2P通道。
例如,第二终端基于发送PeerConnection对象,将第二终端与流媒体服务器20建立第四P2P通道(P2P channel);相应的,流媒体服务器20基于第二PeerConnection对象,将流媒体服务器20与第二终端建立第四P2P通道。也就是说,第二终端的发送PeerConnection对象和流媒体服务器20的第二PeerConnection对象之间建立了第四P2P通道。
S116、第二终端向流媒体服务器20发送第二流媒体数据;相应的,流媒体服务器接收第二终端发送的第二流媒体数据。需要说明的是,S115中建立第四P2P通道的过程与上述建立第一P2P通道的过程相比,其不包括S205。
在一些实施例中,在流媒体服务器接收第一终端发送的第一流媒体数据之后,在流媒体服务器将第一流媒体数据发送至第二终端之前,流媒体数据的处理方法还包括:
S401、流媒体服务器向加入房间的除第一终端之外的其他终端发送第一发布消息。
其中,上述第一发布消息被配置为表示第一终端发布了第一流媒体数据。
例如,流媒体服务器在接收到终端10_A的第一流媒体数据后,向终端10_B和终端10_C发送第一发布消息。
S402、第二终端接收第一发布消息,并向流媒体服务器发送第一订阅消息。
例如,终端10_B收到第一发布消息后,向流媒体服务器发送第一订阅消息。终端10_C收到第一发布消息后,不响应(不反馈任何消息)或者,向流媒体服务器发送表示不订阅第一流媒体数据的消息。
S403、流媒体服务器接收第二终端发送的第一订阅消息。
在流媒体服务器接收第二终端发送的第一订阅消息之后,向第二终端发送第一流媒体数据。
例如,流媒体服务器向终端10_B发送第一流媒体数据,但不向终端10_C发送第一流媒体数据。
其中,上述第一订阅消息被配置为表示第二终端订阅第一终端发布的第一流媒体数据。
在一些实施例中,第一终端通过第一P2P通道,向流媒体服务器发送第一流媒体数据,在流媒体服务器接收到该第一流媒体数据后,该流媒体服务器会向除第一终端之外的其他终端(例如第二终端)发送第一发布消息,以将第一终端发布了第一流媒体数据的这一消息告诉给其他终端(例如第二终端),第二终端在接收了该第一发布消息后,如果第二终端需要订阅该第一流媒体数据,那么第二终端则会向流媒体服务器发送第一订阅消息,流媒体服务器在接收到该第一订阅消息后,会通过第二P2P通道,将第一流媒体数据转发至第二终端。
在一些实施例中,在流媒体服务器通过第一P2P通道接收第一终端10发送的第一流媒体数据之后,本发明实施例提供的流媒体数据的处理方法还可以包括下述的S1051~S1053。
S1051、流媒体服务器20将第一流媒体数据添加到由S205创建的第一PeerConnection对象中。
具体的,如图5所示,流媒体服务器可以将第一流媒体数据添加到第一PeerConnection对象中的pubA中。
S1052、流媒体服务器将第一PeerConnection对象中的第一流媒体数据复制到由S303创建的第二PeerConnection对象中。
具体的,如图5所示,流媒体服务器可以将pubA中的第一流媒体数据复制到第二PeerConnection对象中的subBA中。
S1053、通过第二P2P通道,流媒体服务器将第二PeerConnection对象中的第一流媒体数据发送至第二终端。
具体的,如图5所示,流媒体服务器可以将subBA中的第一流媒体数据发送至第二终端中包含的接收PeerConnection对象中的sunBA中。
在一些实施例中,在流媒体服务器接收第二终端发送的第二流媒体数据之后,在流媒体服务器将第二流媒体数据发送至第一终端之前,流媒体数据的处理方法还包括:
S501、流媒体服务器20向加入房间的除第二终端之外的其他终端发送第二发布消息。
其中,上述第二发布消息被配置为表示第二终端发布了第二流媒体数据。
S502、第一终端接收第二发布消息,并向流媒体服务器20发送第二订阅消息。
其中,上述第二订阅消息被配置为表示第一终端订阅第二终端的流媒体数据。
S503、流媒体服务器20接收第一终端发送的第二订阅消息,并且在流媒体服务器接收第一终端发送的第二订阅消息后,向第一终端发送第二流媒体数据。
在一些实施例中,第二终端通过第四P2P通道,向流媒体服务器20发送第二流媒体数据,在流媒体服务器20接收到该第二流媒体数据后,该流媒体服务器20会向除第二终端之外的其他终端(例如第一终端)发送第二发布消息,以将第二终端发布了第二流媒体数据的这一消息告诉给其他终端,第一终端在接收了该第二发布消息后,如果第一终端需要订阅该第二流媒体数据,那么第一终端则会向流媒体服务器20发送第二订阅消息,流媒体服务器20在接收到该第二订阅消息后,会通过第三P2P通道,将第二流媒体数据转发至第一终端。
在一些实施例中,在流媒体服务器20通过第四P2P通过接收第二终端发送的第二流媒体数据后,本发明实施例提供的流媒体数据的处理方法还可以包括下述的S1081~S1083实现。
S1081、流媒体服务器将接收的第二流媒体数据添加到由S303创建的第二PeerConnection对象中。
具体的,如图5所示,流媒体服务器可以将第二流媒体数据添加到第二PeerConnection对象中的pubB中。
S1082、流媒体服务器20将第二PeerConnection对象中的第二流媒体数据复制到由S205创建的第一PeerConnection对象中。
具体的,如图5所示,流媒体服务器可以将pubB中的第二流媒体数据复制到第一PeerConnection对象中的subAB中。
S1083、通过第三P2P通道,流媒体服务器将第一PeerConnection对象中的第二流媒体数据发送至第一终端。
具体的,如图5所示,流媒体服务器可以将subAB中的第二流媒体数据发送至第一终端中包含的接收PeerConnection对象中的subAB中。
其中,pubA表示第一终端发送的第一流媒体数据,pubB表示第二终端发送的第二流媒体数据,pubC表示第三终端发送的流媒体数据,subAB表示第一终端订阅第二终端发送的流媒体数据,subAC表示第一终端订阅第三终端发送的流媒体数据,subBA表示第二终端订阅第一终端发送的流媒体数据,subBC表示第二终端订阅第三终端发送的流媒体数据,subCA表示第三终端订阅第一终端发送的流媒体数据,subCB表示第三终端订阅第二终端发送的流媒体数据。
本实施例中,在第一终端将第一流媒体数据发送至流媒体服务器,第二终端将第二流媒体数据发送至流媒体服务器后,在流媒体服务器中,可以实现流媒体数据的转发,即可以将第一流媒体数据转发至第二终端的第二PeerConnection对象中,将第二流媒体数据转发至第一终端的第一PeerConnection对象中,这样可以利用流媒体服务器的双向通信,而无需直接和其他终端进行通信。这样,可以减轻终端的负荷。当终端数量越多时,减轻负荷的效果会更加突出。
相应地,本发明实施例还提供一种流媒体服务器,用以实施上述实施例描述的流媒体数据的处理方法。图6是本申请实施例提供的流媒体服务器300的结构图。在一些实施例中,图6所示的流媒体服务器可以包括至少一个处理器301和存储器302。
其中,处理器301包括一个或多个中央处理器(central processing unit,CPU)。该CPU为单核CPU(single-CPU)或多核CPU(multi-CPU)。
存储器302包括但不限于是随机存取存储器(random access memory,RAM)、只读存储器(read only memory,ROM)、可擦除可编程只读存储器(erasable programmableread-only memory,EPROM)、快闪存储器、或光存储器等。存储器302中保存有操作***的代码。
示例的,处理器301通过读取存储器302中保存的指令,使得流媒体服务器实现上述实施例中的流媒体数据的处理方法,或者,处理器301通过内部存储的指令,使得流媒体服务器实现上述实施例中的流媒体数据的处理方法。在处理器301通过读取存储器302中保存的指令实现上述实施例中的方法的情况下,存储器302中保存实现本申请实施例提供的流媒体数据的处理方法的指令。
在一些实施例中,流媒体服务器还包括:接收器303和发送器304。处理器301,被配置将流媒体服务器为与第一终端建立连接,并在流媒体服务器中创建用于实时通话的房间,还被配置为将流媒体服务器与第二终端建立连接,并根据房间标识将第二终端加入到房间中;发送器304,被配置为将房间的房间标识发送给第一终端使该第一终端加入到房间中;接收器303,被配置为接收第二终端的连接请求,该连接请求包括房间标识,还被配置为接收第一终端发送的第一流媒体数据;还被配置为接收第二终端发送的第二流媒体数据;发送器304,还被配置为将第一流媒体数据发送至第二终端,还被配置为将第二流媒体数据发送至第一终端。
在一些实施例中,在流媒体服务器接收第一终端发送的第一流媒体数据之后,在将第一流媒体数据发送至第二终端之前,发送器304还被配置为向加入房间的除第一终端之外的其他终端发送第一发布消息,该第一发布消息被配置为表示第一终端发布了流媒体数据;接收器303还被配置为接收第二终端发送的第一订阅消息,该第一订阅消息被配置为表示第二终端订阅第一终端的流媒体数据;和/或,在流媒体服务器接收第二终端发送的第二流媒体数据之后,在将第二流媒体数据发送至第一终端之前,发送器304还被配置为向加入房间的除第二终端之外的其他终端发送第二发布消息,该第二发布消息被配置为表示第二终端发布了流媒体数据;接收器303还被配置为接收第一终端发送的第二订阅消息,该第二订阅消息被配置为表示第一终端订阅第二终端的流媒体数据。
在一些实施例中,在第一终端和第二终端均加入到房间之后,处理器301还被配置为为第一终端创建第一PeerConnection对象,并基于该第一PeerConnection对象,将流媒体服务器与第一终端建立第一P2P通道;还被配置为为第二终端创建第二PeerConnection对象,并基于该第二PeerConnection对象,将流媒体服务器与第二终端建立第二P2P通道;接收器303,具体被配置为通过第一P2P通道,流媒体服务器接收第一终端发送的第一流媒体数据;处理器301,还被配置为将接收的第一流媒体数据添加到第一PeerConnection对象中;将第一流媒体数据复制到第二PeerConnection对象中;发送器304,具体被配置为流媒体服务器通过第二P2P通道,将第二PeerConnection对象中的第一流媒体数据发送至所述第二终端。
在一些实施例中,在第一终端和第二终端均加入到房间之后,处理器301,还被配置为基于第一PeerConnection对象,将流媒体服务器与第一终端建立第三P2P通道;还被配置为基于第二PeerConnection对象,与第二终端建立第四P2P通道;接收器303,具体被配置为通过第四P2P通道,接收第二终端发送的第二流媒体数据;处理器301,还被配置为将接收的第二流媒体数据添加到第二PeerConnection对象中,并将第二流媒体数据复制到第一PeerConnection对象中;发送器304,具体被配置为通过第三P2P通道,将第一PeerConnection对象中的第二流媒体数据发送至第一终端。
在一些实施例中,处理器301,具体被配置为保存从所述第一终端发送的SDP信息,并创建应答SDP信息;保存从第一终端发送的网络信息;将第一终端发送的SDP信息保存到第二PeerConnection对象;将第一终端发送的SDP信息发送至第二终端;保存从第二终端发送的网络信息。
在一些实施例中,流媒体服务器包括处理器,存储器,以及存储在存储器上并可在所述处理器上运行的计算机程序,该计算机程序被处理器执行时,使流媒体服务器实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
本发明实施例还提供了一种第一终端,用以实施上述实施例描述的流媒体数据的处理方法。
在一些实施例中,第一终端包括处理器,存储器,以及存储在存储器上并可在所述处理器上运行的计算机程序,该计算机程序被处理器执行时,使第一终端实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
在一些实施例中,第一终端还包括处理器、发送器和接收器。处理器,被配置为将第一终端与流媒体服务器建立连接,并创建发送PeerConnection对象和接收PeerConnection对象;还被配置为基于发送PeerConnection对象,将第一终端与流媒体服务器建立第一P2P通道;还被配置为基于接收PeerConnection对象,将第一终端与流媒体服务器建立第三P2P通道;发送器,被配置为通过处理器建立的第一P2P通道,向流媒体服务器发送第一流媒体数据;接收器,被配置为通过处理器建立的第三P2P通道,接收流媒体服务器发送的第二流媒体数据。
在一些实施例中,在通过第三P2P通道,第一终端接收流媒体服务器发送的第二流媒体数据之前,接收器,还被配置为第一终端接收流媒体服务器发送的第二发布消息,该第二发布消息被配置为表示第二终端发布了流媒体数据;发送器,还被配置为第一终端向流媒体服务器发送第二订阅消息,该第二订阅消息被配置为表示第一终端订阅第二终端的流媒体数据。
在一些实施例中,处理器,具体被配置为设置发送PeerConnection对象的事件响应操作;创建流媒体数据的SDP信息;接收器,被配置为从第一终端获取流媒体数据;发送器,被配置为将流媒体数据传给所述发送PeerConnection对象;还被配置为将SDP信息发送至发送PeerConnection对象;还被配置为将SDP信息发送至流媒体服务器。
如图7所示,本发明实施例提供一种流媒体数据的处理装置500,包括连接模块501、创建模块502、接收模块503、发送模块504和加入模块505。连接模块501,被配置为将流媒体服务器与第一终端建立连接,还被配置为将流媒体服务器与第二终端建立连接;创建模块502,被配置为在流媒体服务器中创建用于实时通话的房间;发送模块504,被配置为将房间的房间标识发送给第一终端使该第一终端加入到房间中;接收模块503,被配置为接收第二终端的连接请求,该连接请求包括房间标识,还被配置为接收第一终端发送的第一流媒体数据,还被配置为接收第二终端发送的第二流媒体数据;加入模块505,被配置为在连接模块501将流媒体服务器和第二终端建立连接后,根据房间标识将第二终端加入到房间;发送模块504,还被配置为在接收模块503接收第一流媒体数据后,将该第一流媒体数据发送至第二终端,还被配置为在接收模块503接收第二流媒体数据后,将该第二流媒体数据发送至第一终端。
在一些实施例中,在接收第一终端发送的第一流媒体数据之后,在将第一流媒体数据发送至第二终端之前,发送模块504,还被配置为向加入房间的除第一终端之外的其他终端发送第一发布消息,该第一发布消息被配置为表示第一终端发布了流媒体数据;接收模块503,还被配置为接收第二终端发送的第一订阅消息,该第一订阅消息被配置为表示第二终端订阅第一终端的流媒体数据;和/或,在接收第二终端发送的第二流媒体数据之后,在将所述第二流媒体数据发送至所述第一终端之前,发送模块504,还被配置为,向加入房间的除第二终端之外的其他终端发送第二发布消息,该第二发布消息被配置为表示第二终端发布了流媒体数据;接收模块503,还被配置为接收第一终端发送的第二订阅消息,该第二订阅消息被配置为表示第一终端订阅第二终端的流媒体数据。
在一些实施例中,本发明实施例提供一种流媒体数据的处理装置500还包括复制模块506,在第一终端和第二终端均加入房间之后,创建模块502还被配置为为第一终端创建第一PeerConnection对象,并基于该第一PeerConnection对象,将流媒体服务器与第一终端建立第一P2P通道;创建模块502还被配置为为第二终端创建第二PeerConnection对象,并基于该第二PeerConnection对象,将流媒体服务器与第二终端建立第二P2P通道;接收模块503,具体被配置为通过第一P2P通道,接收第一终端发送的第一流媒体数据;加入模块505,还被配置为将接收模块503接收的第一流媒体数据添加到第一PeerConnection对象中;复制模块506,被配置为将第一流媒体数据复制到第二PeerConnection对象中;发送模块504,具体被配置为通过所述第二P2P通道,将所述第二PeerConnection对象中的第一流媒体数据发送至第二终端。
在一些实施例中,在第一终端和第二终端均加入房间之后,创建模块502,还被配置为基于第一PeerConnection对象,将流媒体服务器与第一终端建立第三P2P通道;还被配置为基于第二PeerConnection对象,将流媒体服务器与第二终端建立第四P2P通道;接收模块503,具体被配置为通过第四P2P通道,接收第二终端发送的第二流媒体数据;加入模块505,还被配置为将接收模块503接收的第二流媒体数据添加到第二PeerConnection对象中;复制模块506,还被配置为将第二流媒体数据复制到第一PeerConnection对象中;发送模块504,具体被配置为通过所述第三P2P通道,将第一PeerConnection对象中的所述第二流媒体数据发送至所述第一终端。
在一些实施例中,本发明实施例提供一种流媒体数据的处理装置500还包括保存模块,保存模块,被配置为保存从第一终端发送的SDP信息;创建模块502,还被配置为并创建应答SDP信息;保存模块,还被配置为保存从第一终端发送的网络信息;还被配置为将第一终端发送的SDP信息保存到所述第二PeerConnection对象;发送模块504,被配置为将第一终端发送的SDP信息发送至所述第二终端;保存模块还被配置为保存从所述第二终端发送的网络信息。
如图8所示,本发明实施例提供一种流媒体数据的处理装置600,包括连接模块601、创建模块602、发送模块603和接收模块604。连接模块601,被配置为将第一终端与流媒体服务器建立连接;创建模块602,被配置为创建发送PeerConnection对象和接收PeerConnection对象;创建模块602,还被配置为基于发送PeerConnection对象,将第一终端与流媒体服务器建立第一P2P通道;发送模块603,被配置为通过创建模块602建立的第一P2P通道,第一终端向流媒体服务器发送第一流媒体数据;创建模块602,还被配置为基于接收PeerConnection对象,将第一终端与流媒体服务器建立第三P2P通道;接收模块604,被配置为通过创建模块602建立的第三P2P通道,接收流媒体服务器发送的第二流媒体数据。
在一些实施例中,在通过第三P2P通道,第一终端接收流媒体服务器发送的第二流媒体数据之前,接收模块604,还被配置为第一终端接收流媒体服务器发送的第二发布消息,该第二发布消息被配置为表示所述第二终端发布了流媒体数据;发送模块603,还被配置为向流媒体服务器发送第二订阅消息,该第二订阅消息被配置为表示第一终端订阅第二终端的流媒体数据。
在一些实施例中,本发明实施例提供一种流媒体数据的处理装置600还包括获取模块605和设置模块,设置模块,被配置为设置发送PeerConnection对象的事件响应操作;获取模块605,被配置为从第一终端获取流媒体数据;发送模块603,被配置为将流媒体数据传给发送PeerConnection对象;创建模块602,被配置为创建流媒体数据的SDP信息;发送模块603,还被配置为将SDP信息发送至发送PeerConnection对象,并将SDP信息发送至流媒体服务器。
图7和图8所描述的装置实施例仅仅是示意性的,例如,上述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。图7和图8中上述各个模块既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。例如,采用软件实现时,上述连接模块501和创建模块502可以是由图6中至少一个处理器读取存储器中存储的程序代码后,生成的软件功能模块来实现。图7和图8中上述各个模块也可以由装置中的不同硬件分别实现,例如连接模块501由图6中的至少一个处理器301中的一部分处理资源(例如多核处理器中的一个核或两个核)实现,而创建模块502由图6中至少一个处理器301中的其余部分处理资源(例如多核处理器中的其他核),或者采用现场可编程门阵列(field-programmable gate array,FPGA)、或协处理器等可编程器件来完成。显然上述功能模块也可以采用软件硬件相结合的方式来实现,例如连接模块501由硬件可编程器件实现,而创建模块502是由CPU读取存储器中存储的程序代码后,生成的软件功能模块。
图7和图8中各个模块实现上述功能的更多细节请参考前面各个方法实施例中的描述,在这里不再重复。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本申请实施例中的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))方式或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包括一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、磁盘、磁带)、光介质(例如,数字视频光盘(digital video disc,DVD))、或者半导体介质(例如固态硬盘(solid state drives,SSD))等。
本发明实施例还提供一种计算机可读存储介质,例如,非瞬态计算机可读存储介质,该非瞬态计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述各个方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,该计算机可读存储介质可以包括只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (14)
1.一种流媒体数据的处理方法,其特征在于,包括:
将流媒体服务器与第一终端建立连接并在所述流媒体服务器中创建用于实时通话的房间;
将所述房间的房间标识发送给所述第一终端使所述第一终端加入所述房间;
接收第二终端的连接请求,所述连接请求包括所述房间标识;
将所述流媒体服务器和所述第二终端建立连接,并根据所述房间标识将所述第二终端加入所述房间;
接收所述第一终端发送的第一流媒体数据,并将所述第一流媒体数据发送至所述第二终端;
接收所述第二终端发送的第二流媒体数据,并将所述第二流媒体数据发送至所述第一终端。
2.根据权利要求1所述的流媒体数据的处理方法,其特征在于,在所述接收所述第一终端发送的第一流媒体数据之后,在将所述第一流媒体数据发送至所述第二终端之前,所述处理方法还包括:
向加入所述房间的除所述第一终端之外的其他终端发送第一发布消息,所述第一发布消息被配置为表示所述第一终端发布了流媒体数据;
接收所述第二终端发送的第一订阅消息,所述第一订阅消息被配置为表示所述第二终端订阅所述第一终端的流媒体数据;
和/或,
在所述接收所述第二终端发送的第二流媒体数据之后,在将所述第二流媒体数据发送至所述第一终端之前,所述处理方法还包括:
向加入所述房间的除所述第二终端之外的其他终端发送第二发布消息,所述第二发布消息被配置为表示所述第二终端发布了流媒体数据;
接收所述第一终端发送的第二订阅消息,所述第二订阅消息被配置为表示所述第一终端订阅所述第二终端的流媒体数据。
3.根据权利要求1或2所述的流媒体数据的处理方法,其特征在于,
在所述第一终端和所述第二终端均加入所述房间之后,所述流媒体数据的处理方法还包括:
为所述第一终端创建第一PeerConnection对象,并基于所述第一PeerConnection对象,将所述流媒体服务器与所述第一终端建立第一P2P通道;
为所述第二终端创建第二PeerConnection对象,并基于所述第二PeerConnection对象,将所述流媒体服务器与所述第二终端建立第二P2P通道;
所述接收所述第一终端发送的第一流媒体数据包括:通过所述第一P2P通道,接收所述第一终端发送的第一流媒体数据;
所述流媒体数据的处理方法还包括:
将接收的所述第一流媒体数据添加到所述第一PeerConnection对象中;
将所述第一流媒体数据复制到所述第二PeerConnection对象中;
所述将所述第一流媒体数据发送至第二终端包括:通过所述第二P2P通道,将所述第二PeerConnection对象中的所述第一流媒体数据发送至所述第二终端。
4.根据权利要求1或2所述的流媒体数据的处理方法,其特征在于,
在所述第一终端和所述第二终端均加入所述房间之后,所述流媒体数据的处理方法还包括:
基于第一PeerConnection对象,将所述流媒体服务器与所述第一终端建立第三P2P通道;
基于第二PeerConnection对象,将所述流媒体服务器与所述第二终端建立第四P2P通道;
所述接收所述第二终端发送的第二流媒体数据包括:通过所述第四P2P通道,接收所述第二终端发送的第二流媒体数据;
所述流媒体数据的处理方法还包括:
将接收的所述第二流媒体数据添加到所述第二PeerConnection对象中;
将所述第二流媒体数据复制到所述第一PeerConnection对象中;
所述将所述第二流媒体数据发送至第一终端包括:通过所述第三P2P通道,将所述第一PeerConnection对象中的所述第二流媒体数据发送至所述第一终端。
5.根据权利要求3所述的流媒体数据的处理方法,其特征在于,
基于所述第一PeerConnection对象,将所述流媒体服务器与所述第一终端建立第一P2P通道包括:
保存从所述第一终端发送的SDP信息,并创建应答SDP信息;
保存从所述第一终端发送的网络信息;
基于所述第二PeerConnection对象,将所述流媒体服务器与所述第二终端建立第二P2P通道包括:
将所述第一终端发送的SDP信息保存到所述第二PeerConnection对象;
将所述第一终端发送的SDP信息发送至所述第二终端;
保存从所述第二终端发送的网络信息。
6.一种流媒体数据的处理方法,其特征在于,包括:
将第一终端与流媒体服务器建立连接,并创建发送PeerConnection对象和接收PeerConnection对象;
基于所述发送PeerConnection对象,将所述第一终端与所述流媒体服务器建立第一P2P通道;通过所述第一P2P通道,所述第一终端向所述流媒体服务器发送第一流媒体数据;
基于所述接收PeerConnection对象,将所述第一终端与所述流媒体服务器建立第三P2P通道;通过所述第三P2P通道,所述第一终端接收所述流媒体服务器发送的第二流媒体数据。
7.根据权利要求6所述的流媒体数据的处理方法,其特征在于,
在所述通过第三P2P通道,所述第一终端接收所述流媒体服务器发送的第二流媒体数据之前,所述流媒体数据的处理方法还包括:
所述第一终端接收所述流媒体服务器发送的第二发布消息,所述第二发布消息被配置为表示第二终端发布了流媒体数据;
所述第一终端向所述流媒体服务器发送第二订阅消息,所述第二订阅消息被配置为表示所述第一终端订阅所述第二终端的流媒体数据。
8.根据权利要求6所述的流媒体数据的处理方法,其特征在于,
基于所述发送PeerConnection对象,将所述第一终端与所述流媒体服务器建立第一P2P通道包括:
设置所述发送PeerConnection对象的事件响应操作;
从所述第一终端获取流媒体数据,并将所述流媒体数据传给所述发送PeerConnection对象;
创建所述流媒体数据的SDP信息,并将所述SDP信息发送至所述发送PeerConnection对象;
将所述SDP信息发送至所述流媒体服务器。
9.一种流媒体数据的处理装置,其特征在于,包括连接模块、创建模块、接收模块、发送模块和加入模块;
所述连接模块,被配置为将流媒体服务器与第一终端建立连接,还被配置为将所述流媒体服务器和第二终端建立连接;
所述创建模块,被配置为在所述流媒体服务器中创建用于实时通话的房间;
所述发送模块,被配置为将所述房间的房间标识发送给所述第一终端使所述第一终端加入所述房间;
所述接收模块,被配置为接收第二终端的连接请求,所述连接请求包括所述房间标识,还被配置为接收所述第一终端发送的第一流媒体数据,还被配置为接收所述第二终端发送的第二流媒体数据;
所述加入模块,被配置为在所述连接模块将所述流媒体服务器和所述第二终端建立连接后,根据所述房间标识将所述第二终端加入所述房间;
所述发送模块,还被配置为在所述接收模块接收所述第一流媒体数据后,将所述第一流媒体数据发送至所述第二终端,还被配置为在所述接收模块接收所述第二流媒体数据后,将所述第二流媒体数据发送至所述第一终端。
10.根据权利要求9所述的流媒体数据的处理装置,其特征在于,
所述接收第一终端发送的第一流媒体数据之后,在将第一流媒体数据发送至第二终端之前,所述发送模块,还被配置为向加入所述房间的除所述第一终端之外的其他终端发送第一发布消息,所述第一发布消息被配置为表示所述第一终端发布了流媒体数据;
所述接收模块,还被配置为接收所述第二终端发送的第一订阅消息,所述第一订阅消息被配置为表示所述第二终端订阅所述第一终端的流媒体数据;
和/或,
在所述接收所述第二终端发送的第二流媒体数据之后,在将所述第二流媒体数据发送至所述第一终端之前,所述发送模块,还被配置为向加入所述房间的除所述第二终端之外的其他终端发送第二发布消息,所述第二发布消息被配置为表示所述第二终端发布了流媒体数据;
所述接收模块,还被配置为接收所述第一终端发送的第二订阅消息,所述第二订阅消息被配置为表示所述第一终端订阅所述第二终端的流媒体数据。
11.一种流媒体数据的处理装置,其特征在于,包括连接模块、创建模块、发送模块和接收模块;
所述连接模块,被配置为将第一终端与流媒体服务器建立连接;
所述创建模块,被配置为创建发送PeerConnection对象和接收PeerConnection对象,还被配置为基于所述发送PeerConnection对象,与所述流媒体服务器建立第一P2P通道;
所述发送模块,被配置为通过所述创建模块建立的第一P2P通道,向所述流媒体服务器发送第一流媒体数据;
所述创建模块,还被配置为基于所述接收PeerConnection对象,将所述第一终端与所述流媒体服务器建立第三P2P通道;
所述接收模块,被配置为通过所述创建模块建立的第三P2P通道,接收所述流媒体服务器发送的第二流媒体数据。
12.一种流媒体服务器,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时,使所述流媒体服务器实现如权利要求1~8中任一项所述的流媒体数据的处理方法的步骤。
13.一种第一终端,其特征在于,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时,使所述第一终端实现如权利要求1~8中任一项所述的流媒体数据的处理方法的步骤。
14.一种非瞬态计算机可读存储介质,其特征在于,所述非瞬态计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如权利要求1~8任一项所述的流媒体数据的处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010851842.3A CN114079828A (zh) | 2020-08-21 | 2020-08-21 | 流媒体数据的处理方法以及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010851842.3A CN114079828A (zh) | 2020-08-21 | 2020-08-21 | 流媒体数据的处理方法以及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114079828A true CN114079828A (zh) | 2022-02-22 |
Family
ID=80282539
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010851842.3A Pending CN114079828A (zh) | 2020-08-21 | 2020-08-21 | 流媒体数据的处理方法以及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114079828A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115865941A (zh) * | 2023-02-15 | 2023-03-28 | 花瓣云科技有限公司 | 丢包重传方法、分组确定方法、装置、设备以及存储介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102035839A (zh) * | 2010-12-14 | 2011-04-27 | 中兴通讯股份有限公司 | 一种提供流媒体服务的方法及***、设备 |
CN104253814A (zh) * | 2014-09-12 | 2014-12-31 | 清华大学 | 一种流媒体处理方法、服务器及浏览器 |
CN105141971A (zh) * | 2015-09-16 | 2015-12-09 | 深圳市前海智媒网络科技有限公司 | 一种基于会话初始化协议实现直播的方法及*** |
CN105376194A (zh) * | 2014-08-15 | 2016-03-02 | 中国电信股份有限公司 | 实时通信方法、***和平台设备 |
JP2016192743A (ja) * | 2015-03-31 | 2016-11-10 | 株式会社バンダイナムコライツマーケティング | ストリーミング動画配信システム |
CN106954100A (zh) * | 2017-03-13 | 2017-07-14 | 网宿科技股份有限公司 | 直播方法及***、连麦管理服务器 |
CN108289187A (zh) * | 2017-07-31 | 2018-07-17 | 深圳银澎云计算有限公司 | 网络直播接入视频会议方法及*** |
CN110120931A (zh) * | 2018-02-06 | 2019-08-13 | 腾讯科技(深圳)有限公司 | 一种信息交互方法、装置及存储介质 |
CN110267053A (zh) * | 2019-06-27 | 2019-09-20 | 广州酷狗计算机科技有限公司 | 直播方法、装置及*** |
CN111479121A (zh) * | 2020-04-08 | 2020-07-31 | 北京智能工场科技有限公司 | 一种基于流媒体服务器的直播方法及*** |
-
2020
- 2020-08-21 CN CN202010851842.3A patent/CN114079828A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102035839A (zh) * | 2010-12-14 | 2011-04-27 | 中兴通讯股份有限公司 | 一种提供流媒体服务的方法及***、设备 |
CN105376194A (zh) * | 2014-08-15 | 2016-03-02 | 中国电信股份有限公司 | 实时通信方法、***和平台设备 |
CN104253814A (zh) * | 2014-09-12 | 2014-12-31 | 清华大学 | 一种流媒体处理方法、服务器及浏览器 |
JP2016192743A (ja) * | 2015-03-31 | 2016-11-10 | 株式会社バンダイナムコライツマーケティング | ストリーミング動画配信システム |
CN105141971A (zh) * | 2015-09-16 | 2015-12-09 | 深圳市前海智媒网络科技有限公司 | 一种基于会话初始化协议实现直播的方法及*** |
CN106954100A (zh) * | 2017-03-13 | 2017-07-14 | 网宿科技股份有限公司 | 直播方法及***、连麦管理服务器 |
CN108289187A (zh) * | 2017-07-31 | 2018-07-17 | 深圳银澎云计算有限公司 | 网络直播接入视频会议方法及*** |
CN110120931A (zh) * | 2018-02-06 | 2019-08-13 | 腾讯科技(深圳)有限公司 | 一种信息交互方法、装置及存储介质 |
CN110267053A (zh) * | 2019-06-27 | 2019-09-20 | 广州酷狗计算机科技有限公司 | 直播方法、装置及*** |
CN111479121A (zh) * | 2020-04-08 | 2020-07-31 | 北京智能工场科技有限公司 | 一种基于流媒体服务器的直播方法及*** |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115865941A (zh) * | 2023-02-15 | 2023-03-28 | 花瓣云科技有限公司 | 丢包重传方法、分组确定方法、装置、设备以及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021237433A1 (zh) | 消息推送方法、装置、电子设备及计算机可读介质 | |
CN105472309B (zh) | 一种数据传输的方法、装置和*** | |
CN112929595B (zh) | 一种网络会议融合***及方法 | |
CN112929704A (zh) | 数据传输方法、装置、电子设备以及存储介质 | |
CN111541555A (zh) | 群聊优化方法及相关产品 | |
CN114079828A (zh) | 流媒体数据的处理方法以及装置 | |
CN105323537A (zh) | 使用移动平台的视频会议 | |
CN108521577B (zh) | 一种视频播放方法、装置、设备和存储介质 | |
US20230396679A1 (en) | Mixed peer-to-peer mesh and forwarding system | |
EP2879354B1 (en) | Webrtc communication method and corresponding user equipment | |
CN103533054B (zh) | 多终端间实现协同处理的方法及多终端协同处理装置 | |
CN112947880A (zh) | 投屏方法、装置和电子设备 | |
JP4478677B2 (ja) | 通信装置、通信方法およびプログラム | |
KR20150009715A (ko) | 참여자 발견 메시지 주기 결정 방법 및 장치 | |
CN113810775B (zh) | 语音视频连线***和方法 | |
CN109309802A (zh) | 视频互动的管理方法、服务器及计算机可读存储介质 | |
CN103826152A (zh) | 一种利用机顶盒实现多方会议通话的方法、设备和*** | |
CN107222706B (zh) | 一种视频预览方法及*** | |
KR20170071251A (ko) | 회의 서비스를 제공하는 다중 접속 제어 장치 | |
CN112291573A (zh) | 直播流推送方法、装置和电子设备 | |
CN115051963B (zh) | 消息处理方法及装置、消息队列***及电子设备 | |
CN105306870A (zh) | 文件的处理方法及装置 | |
CN116938897B (zh) | 一种用于会议的实时通信的方法和装置 | |
CN114866520A (zh) | 通信的处理方法、***、电子设备及存储介质 | |
KR101528268B1 (ko) | 콘텐츠를 원격 위치들에 스트리밍하기 위한 시스템과 방법 |
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 |