发明内容
本申请的一个实施例的目的在于提供一种用于会议的实时通信的方法和装置,通过本申请的实施例的技术方案可以减少资源的浪费。
第一方面,本申请实施例提供了一种用于会议的实时通信的方法,包括:
获取客户端发送的至少一个生产消费订阅关系,所述至少一个生产消费订阅关系中的每个生产消费订阅关系包括消费者标识和与所述消费者对应的至少一个生产者标识,其中,消费者为数据流的接收方,生产者为数据流的发送方;根据所述至少一个生产消费订阅关系确定数据流的生产者和消费者;根据所述生产者和消费者向对应客户端和/或转发服务器发送生产指示消息,所述生产指示消息用于指示客户端的生产消费情况。
本申请实施例根据订阅关系来确定生产者和消费者,避免了现有技术中无差别的将所有用户确定为生产者和消费者的情况,能够按需生产,按需消费,降低现有方法所产生的多余消费者,从而大大降低计算机资源的使用成本。
在一种实施方式中,所述方法还包括:在实时通信会议过程中,获取客户端发送的实时变更订阅消息,所述实时变更订阅消息用于指示客户端当前最新的生产消费订阅关系;根据所述实时变更订阅消息,向对应客户端和/或转发服务器发送实时变更生产指示消息,所述实时变更生产指示消息用于指示客户端的生产消费情况的变化情况。
在一种实施方式中,所述实时变更订阅消息包括订阅生产者的消息和/或取消订阅生产者的消息,所述订阅生产者的消息包括订阅的生产者的标识,所述取消订阅生产者的消息包括被取消订阅的生产者的标识;所述实时变更生产指示消息包括开始生产消息、继续生产消息、停止生产消息或关闭传输消息。
在一种实施方式中,在获取客户端发送的至少一个生产消费订阅关系之前,所述方法还包括:在客户端初始进入会议时, 按照默认的初始生产消费关系向客户端和/或转发服务器发送初始生产指示消息,所述初始生产指示消息用于指示客户端的初始生产消费状态;向客户端发送入会成员列表,所述入会成员列表包括已经入会的所有成员的名单;其中,所述获取客户端发送的至少一个生产消费订阅关系,包括:获取客户端在获取所述成员列表后发送的所述至少一个生产消费订阅关系。:
第二方面,本申请的一个实施例提供了一种用于会议的实时通信的方法,包括:
向控制端发送至少一个生产消费订阅关系,所述至少一个生产消费订阅关系中的每个生产消费订阅关系包括消费者标识和与所述消费者对应的至少一个生产者标识,其中,消费者为数据流的接收方,生产者为数据流的发送方;接收所述控制端发送的生产指示消息,所述生产指示消息用于指示客户端的生产消费情况;根据所述生产消费情况调整数据流的收发。
在一种实施方式中,所述方法还包括:在实时通信会议过程中,向控制端发送实时变更订阅消息,所述实时变更订阅消息用于指示客户端当前最新的生产消费订阅关系;获取所述控制端根据所述实时变更订阅消息发送的实时变更生产指示消息,所述实时变更生产指示消息用于指示客户端的生产消费情况的变化情况;根据所述实时变更生产指示消息调整数据流的生产消费状态。
在一种实施方式中,所述实时变更订阅消息包括订阅生产者的消息和/或取消订阅生产者的消息,所述订阅生产者的消息包括订阅的生产者的标识,所述取消订阅生产者的消息包括被取消订阅的生产者的标识;所述实时变更生产指示消息包括开始生产消息、继续生产消息、停止生产消息或关闭传输消息。
在一种实施方式中,在向控制端发送至少一个生产消费订阅关系之前,所述方法还包括:在客户端初始进入会议时, 按照控制端发送的初始生产指示消息确定初始生产消费状态;接收控制端发送的入会成员列表,所述入会成员列表包括已经入会的所有成员的名单;其中,所述向控制端发送至少一个生产消费订阅关系,包括:在获取用户对所述入会成员列表的操作后,发送所述至少一个生产消费订阅关系。
第三方面,本申请实施例提供了一种用于会议的实时通信的装置,所述装置包括:获取单元,用于获取客户端发送的至少一个生产消费订阅关系,所述至少一个生产消费订阅关系中的每个生产消费订阅关系包括消费者标识和与所述消费者对应的至少一个生产者标识,其中,消费者为数据流的接收方,生产者为数据流的发送方;确定单元,用于根据所述至少一个生产消费订阅关系确定数据流的生产者和消费者;发送单元,根据所述生产者和消费者向对应客户端和/或转发服务器发送生产指示消息,所述生产指示消息用于指示客户端的生产消费情况。
在一种实施方式中,所述获取单元还用于在实时通信会议过程中,获取客户端发送的实时变更订阅消息,所述实时变更订阅消息用于指示客户端当前最新的生产消费订阅关系;所述发送单元还用于根据所述实时变更订阅消息,向对应客户端和/或转发服务器发送实时变更生产指示消息,所述实时变更生产指示消息用于指示客户端的生产消费情况的变化情况。
在一种实施方式中,所述实时变更订阅消息包括订阅生产者的消息和/或取消订阅生产者的消息,所述订阅生产者的消息包括订阅的生产者的标识,所述取消订阅生产者的消息包括被取消订阅的生产者的标识;所述实时变更生产指示消息包括开始生产消息、继续生产消息、停止生产消息或关闭传输消息。
在一种实施方式中,所述发送单元还用于在获取单元获取客户端发送的至少一个生产消费订阅关系之前, 在客户端初始进入会议时, 按照默认的初始生产消费关系向客户端和/或转发服务器发送初始生产指示消息,所述初始生产指示消息用于指示客户端的初始生产消费状态;向客户端发送入会成员列表,所述入会成员列表包括已经入会的所有成员的名单;其中,获取单元获取客户端发送的至少一个生产消费订阅关系具体包括获取客户端在获取所述成员列表后发送的所述至少一个生产消费订阅关系。
第四方面,本申请实施例提供了一种用于会议的实时通信的装置,所述装置包括:发送单元,用于向控制端发送至少一个生产消费订阅关系,所述至少一个生产消费订阅关系中的每个生产消费订阅关系包括消费者标识和与所述消费者对应的至少一个生产者标识,其中,消费者为数据流的接收方,生产者为数据流的发送方;接收单元,用于接收所述控制端发送的生产指示消息,所述生产指示消息用于指示客户端的生产消费情况;确定单元,用于根据所述生产消费情况调整数据流的收发。
在一种实施方式中,所述发送单元还用于在实时通信会议过程中,向控制端发送实时变更订阅消息,所述实时变更订阅消息用于指示客户端当前最新的生产消费订阅关系;所述接收单元还用于获取所述控制端根据所述实时变更订阅消息发送的实时变更生产指示消息,所述实时变更生产指示消息用于指示客户端的生产消费情况的变化情况;所述确定单元还用于根据所述实时变更生产指示消息调整数据流的生产消费状态。
在一种实施方式中,所述实时变更订阅消息包括订阅生产者的消息和/或取消订阅生产者的消息,所述订阅生产者的消息包括订阅的生产者的标识,所述取消订阅生产者的消息包括被取消订阅的生产者的标识;所述实时变更生产指示消息包括开始生产消息、继续生产消息、停止生产消息或关闭传输消息。
在一种实施方式中,在发送单元向控制端发送至少一个生产消费订阅关系之前,所述确定单元还用于在客户端初始进入会议时, 按照控制端发送的初始生产指示消息确定初始生产消费状态;所述接收单元还用于接收控制端发送的入会成员列表,所述入会成员列表包括已经入会的所有成员的名单;其中,所述发送单元向控制端发送至少一个生产消费订阅关系,具体包括在获取用户对所述入会成员列表的操作后,发送所述至少一个生产消费订阅关系。
第五方面,本申请的一个实施例提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时可实现如第一方面及第一方面的任一实施方式所述的方法或第二方面即第二方面的任一实施方式所述的方法。
第六方面,本申请的一个实施例提供一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述程序时可实现如第一方面及第一方面的任一实施方式所述的方法或第二方面即第二方面的任一实施方式所述的方法。
第七方面,本申请的一个实施例提供一种计算机程序产品,所述的计算机程序产品包括计算机程序,其中,所述的计算机程序被处理器执行时可实现如第一方面及第一方面的任一实施方式所述的方法或第二方面即第二方面的任一实施方式所述的方法。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
现有SFU架构的WebRTC通信中,SFU会无差别的对待所有入会成员,对待每个入会成员,会无差别的将其他入会成员的音视频流发送给该入会成员。例如,以SFU为媒体汤(Mediasoup)为例,它的核心功能是在生产者和消费者之间转发实时传输协议 (Real-timeTransport Protocol,RTP)数据包,它公开了一组应用程序编程接口API来管理工作进程(Worker),路由(Router),传输通道(Transport),生产者(Producers)和消费者(Consumers)等等。
应理解,Worker表示在单个 CPU 内核中运行的Mediasoup C++子进程。它可以处理多个Router。Router包含生产者(Producers)和消费者(Consumer),并将生产者的音视频RTP数据传递给消费者。生产者和消费者通过Transport连接到Router,在某些常见用法中,Router可以理解为“多方会议室”。其中,一路音频是一个生产者,一路视频是另外一个生产者,即如果一个Peer(成员)同时开启了摄像头和麦克风,那么将产生两个生产者。现有的技术方案,会默认为所有生产者创建成员总数减一的消费者,生产者不会消费本身,例如,如果一个房间中有 4 个成员,他们都发送音频和视频,这意味着:每个成员会接收来自另外3个成员的音频和视频,因此 3x2 = 总共 6 个消费者,总共有 4 个对等方,因此 4x6 = 总共 24 个消费者。
而在实际会议产品应用中,会限制一个成员同时观看的数量,通常情况一个PC客户端可最多同时观看25个视频,假设当前会议房间中有50个成员,并且他们都开启了摄像头和麦克风,那么依据现有的技术方法,总计会产生4900个消费者,而每个客户端最多只看25人,即最多才需要2500个消费者,如果所有客户端都切换到了演讲者模式(即只看1人),那么最少仅需98个消费者,而大型会议的成员人数可达上千人,这也代表着随着会议人数的不断增加,浪费的计算机资源也会成几何倍增加。
可见现有的通信方式在某些情况下会增加网络资源负担,造成资源的浪费,因此,如何提供一种能够减少资源浪费的通信方式,成为亟需解决的技术问题。
鉴于以上问题,本申请提供一种用于会议的实时通信的方法,能够根据成员的订阅情况来确定生产者和消费者,解决了现有技术无差别的进行生产者和消费者的数据的流程收发造成资源浪费的问题。
以下,为了便于理解和说明,作为示例而非限定,以将本申请的实时通信的方法在实时通信系统中的执行过程和动作进行说明。
下面结合附图1示例性阐述本申请的一个实施例提供的用于会议的实时通信的系统的整体组成结构。
如图1所示,本申请的一个实施例提供了用于会议的实时通信系统包括:多个客户端,控制端和SFU服务器。
在本申请实施例中,控制端也可以称为管理端也可以称为信令服务器,控制端用于与客户端进行信令交互来传递客户端之间连接的建立所需要的必要信息,同时控制端用于获取客户端的订阅关系,并基于订阅关系向客户端和SFU服务器发送指令确定生产者和消费者。本申请实施例中控制端的作用是作为一个中间人帮助双方在尽可能少的暴露隐私的情况下建立连接。控制端与客户端和SFU服务器间的通信方式可以使用任何方式例如,网络套接字(WebSocket) 或者可扩展标记语言超文本传输协议请求(XMLHttpRequest )等来交换彼此的令牌信息本申请实施例并不限于此。
本申请实施例中,SFU服务器可以是媒体汤(Mediasoup)、简努斯(Janus)、吉特斯(Jitsi)、库伦拖(Kurento)或麦杜泽(Medooze)等,本申请实施例并不限于此,下文仅以SFU为Mediasoup为例进行说明。SFU服务器可以接受控制端的指令来对生产者和消费者对象进行管控,进而可以决定是否接收和/或发送客户端的实时通信的音频和/或视频流。应理解,SFU服务器也可以叫做SFU或者转发服务器或者媒体转发服务器,下文中如果没有特殊说明,SFU服务器的几种叫法可以互相替换,本申请实施例对此不做限定。应理解,本申请中,控制端和SFU可以是独立的两个设备,也可以是集成在一个设备上。
本申请实施例中,应理解,本申请实施例中的客户端也可以称为用户端或者用户设备或者终端设备,本申请实时例中,终端设备可以安装有浏览器,可以通过浏览器进行实时通信,或者安装有APP或者小程序,通过APP或者小程序进行实时通信。本申请中终端设备可以包括智能手机、平板电脑、(personal digital assistant,PDA个人数字助理)、计算机、游戏机、可穿戴设备、平板电脑(portable android device, PAD)等,本申请实施例并不限于此。
应理解,该电子设备上运行的操作系统可以是移动版的安卓(Android)、乌班图(Ubuntu)移动版、泰泽(Tizen)等基于Linux内核的操作系统以及Windows、Mac OS、Linux等桌面操作系统,但本发明并不限于此。
本申请实施例中,终端设备可以指接入终端、用户设备(User Equipment,UE)、用户单元、用户站、移 动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用 户装置。接入终端可以是蜂窝电话、无绳电话、会话启动协议(Session Initia tion Protocol,SIP)电话、无线本地环路 (Wireless Local Loop,WLL)站、个人数字处理 (Personal Digital Assistant,PDA)、具有无线通信功能的手持设备、计算设备或连接到 无线调制解调器的其它处理设备、车载设备、可穿戴设备、5G网络中的终端设备或者未来演进的公共陆地移动网络(Public Land Mobile Network,PLMN)中的终端设备等。
应理解,图1中所示的通信系统场景中,仅示意出了两个客户端的情况下,但本申请实施例并不限于此,在实际的实时通信场景中,客户端的数量可以包括任意多个,根据实际情况来定,例如可以是10个,50个,500个,5000个等。
下面结合附图2示例性阐述本申请的一个实施例提供的用于会议的实时通信的方法。
如图2所示的方法应用于如图1所示的实时通信系统中,图2所示的方法包括:
210,控制端获取客户端发送的至少一个生产消费订阅关系。
相对应的,客户端向控制端发送至少一个生产消费订阅关系。
其中,所述至少一个生产消费订阅关系中的每个生产消费订阅关系包括消费者标识和与所述消费者对应的至少一个生产者标识,消费者为数据流的接收方,生产者为数据流的发送方。
应理解,本申请实施例中,一个客户端对应一个入会成员,入会成员通过客户端进行入会,一个客户端与SFU有两个通道,包括一个上行通道和一个下行通道,上行通道用于客户端向SFU上传视频流和/或音频流,下行通道用于SFU向客户端传输其他入会成员的视频流和/或音频流。消费者标识可以是客户端的终端标识也可以是入会成员的标识,本申请实施例并不限于此,生产者标识可以是客户端的终端标识也可以是入会成员的标识,本申请实施例并不限于此。如果一个入会成员A订阅了另一个入会成员B的音频,该成员A为音频消费者,如果成员A订阅了成员B的视频,该成员A为视频消费者。由于成员不能成为自己的消费这,如果入会成员的数量为N,那么对于一个成员来说,其最多可以成为2N-2个消费者。
可选的,作为另一实施例,在步骤210之前,本申请实施例的方法还可以包括:
在客户端初始进入会议时,控制端按照默认的初始生产消费关系向客户端和/或转发服务器发送初始生产指示消息,所述初始生产指示消息用于指示客户端的初始生产消费状态;
控制端向客户端发送入会成员列表,所述入会成员列表包括已经入会的所有成员的名单;
在210中,在客户端获取到用户对所述入会成员列表的操作后,发送所述至少一个生产消费订阅关系。
具体而言,本申请实施例中入会成员初始加入会议的方案可以按照现有的方式进行,具体加入会议的过程此处不再赘述。在客户端初始加入会议时,控制端会按照默认的初始生产消费关系向客户端和/或转发服务器发送初始生产指示消息,例如,默认的初始生产消费关系为所有的入会成员均为音视频生产者,且为其他成员的音频消费者和视频消费者,即无差别的均为生产者和消费者;再例如,默认的初始生产消费关系为控制端按照客户端的本身的初始设置(例如,默认设置,或者用户在上一次会议时的设置)来确定生产者和消费者,进而控制端可以将生产者和消费者同步给客户端和转发服务器,即这种情况下,客户端本身的初始设置决定了用户入会时的首次显示画面。在客户端入会的同时,控制端会向客户端发送入会成员列表,所述入会成员列表包括已经入会的所有成员的名单;例如,该名单可以是入会成员的ID,或者入会成员所使用的终端的标识,例如,终端设备的标识或者终端设备的ip或五元组等,本申请实施例并不限于此。在客户端获取入会成员列表后,客户端可以将入会成员列表显示给用户,用户可以主动进行订阅指定成员的指定生产者,在用户主动订阅的时,该用户即为指定的生产者的消费者。具体的,用户可以通过对客户端显示的界面的操作,具体的用户操作形式可以根据用户终端的形式灵活操作,例如,终端是移动手机或者PC时具体的操作形式可以适应调整,本申请实施例并不限于此,例如,用户可以通过翻页操作来进行成员的主动订阅,例如,客户端的一页视图可以显示9位入会成员,则用户翻页后,上一页的9位入会成员被该用户取消订阅,当前页的9位成员被该用户主动订阅;再例如,可以是用户操作的调整显示视图模式或者数量的操作,例如,调整前是16个视图的形式,用户操作后调整为9视图模式,这样原来的16个生产者中会有7个生产者被取消订阅,9个生产者被订阅。这样,控制端可以汇总所有客户端的操作获取所有入会成员的订阅关系,进而可以基于所有入会成员的订阅关系来通知客户端和转发服务器具体的生产者和消费者关系。
上面的方案中是在入会成员初始入会时,按照客户端默认的设置显示首个入会时的画面,即由客户端来决定首个画面的显示形式,由客户端来决定该如何成员是哪个成员的音频消费者和视频消费者,即由客户端决定其终端的显示界面上显示哪些入会成员的画面和声音。之后,控制端才会获取到客户端的订阅关系,并根据客户的订阅关系来调整生成和消费情况,即调整客户端和转发服务器之间数据流的收发情况。
可选的,作为另一实施例,本申请实施例中也可以在入会成员初始入会时不将其作为消费者,即仅展示各个入会成员的列表,之后客户端将用户基于客户端显示的用户成员列表确定的订阅关系发送给控制端之后,控制端才通过信令告诉客户端和转发服务器具体的生产和消费情况,之后,客户端才显示其消费的视频和/或音频。即控制端默认不创建任何消费者,只有在成员主动订阅指定成员的指定生产者时,才会为其创建具体的消费者对象,同时保存这些订阅关系,有了这些订阅关系,控制端可以清楚的知道成员订阅了哪些生产者,哪些生产者有没有被订阅,据此控制端可以仅控制转发服务器接收被订阅的生产者的数据流,并将数据流转发给对应消费者。
220,控制端根据所述至少一个生产消费订阅关系确定数据流的生产者和消费者。
具体而言,控制端获取到每个客户端发送的生产消费订阅关系,根据获取到的生产消费订阅关系,控制端能够清楚的知道哪个成员订阅了那个生产者,哪些生产者没有被订阅。
230,控制端根据所述生产者和消费者向对应客户端和/或转发服务器发送生产指示消息。
相对应的,客户端和转发服务器所述控制端发送的生产指示消息。其中,所述生产指示消息用于指示客户端的生产消费情况。
具体而言,在控制端确定客户端的生产消费情况后,就可以向客户端和转发服务器发送信令指示客户的生产消费情况。应理解,此处生产消费情况指该客户端是生产者还是消费者。在该客户端是生产者时,控制端会告诉客户端生产并发送对应的数据流,同时告诉转发服务器接收该数据流。在客户端为消费者时,控制端会告诉转发服务器向客户端发送数据流,同时告诉客户端接收该数据流。在客户端和转发服务器均获取到生产指示消息后,客户端和转发服务器按照控制端的指示进行数据流的传输。
本申请实施例根据订阅关系来确定生产者和消费者,避免了现有技术中无差别的将所有用户确定为生产者和消费者的情况,能够按需生产,按需消费,降低现有方法所产生的多余消费者,从而大大降低计算机资源的使用成本。
应理解,步骤210中获取的生成消费订阅关系可以是用户初始进入会议时,首次由客户端发送给控制端的订阅关系。也可以是用户在会议过程中,变更了的生成消费订阅关系。也就是说在用户的会议过程中,其可以根据自身的需要,随意、随时调整订阅关系,控制端会实时获取客户端的订阅关系并基于实时获取的订阅关系来调整生成和消费情况。
相对应的,作为另一实施例,图2所示的方法还可以包括:
在实时通信会议过程中,客户端向控制端发送实时变更订阅消息,控制端获取客户端发送的实时变更订阅消息,所述实时变更订阅消息用于指示客户端当前最新的生产消费订阅关系;
控制端根据所述实时变更订阅消息,向对应客户端和/或转发服务器发送实时变更生产指示消息,所述实时变更生产指示消息用于指示客户端的生产消费情况的变化情况;客户端获取到实时变更生产指示消息后,根据所述实时变更生产指示消息调整数据流的生产消费状态。
可选的,所述实时变更订阅消息包括订阅生产者的消息和/或取消订阅生产者的消息,所述订阅生产者的消息包括订阅的生产者的标识,所述取消订阅生产者的消息包括被取消订阅的生产者的标识;所述实时变更生产指示消息包括开始生产消息、继续生产消息、停止生产消息或关闭传输消息。
具体而言,用户在会议的过程中可以随时调整订阅关系,调整订阅关系可以是订阅、取消某个生产者。具体的,客户端变更订阅消息的操作可以是用户在客户端上的操作,例如翻页、调整显示视图数量等操作,此处的变更消息的操作形式可以与上文210中客户端产生订阅关系的记载一致,此处不再赘述。
举例而言,如图3所示,图3为本申请的一个实施例提供的订阅关系示意图,入会成员之前的订阅关系为成员C订阅了成员A的视频和音频,成员B的视频,即成员C为成员A的视频消费者、音频消费者和成员B的视频消费者,在会议过程中用户变更订阅消息,例如变更订阅消息为取消订阅成员B的视频;或者变更订阅消息为订阅成员A的视频和音频,取消成员B的视频。
应理解,本申请实施例中变更订阅消息可以包括完整的订阅情况,即包括当前消费者订阅的所有消费者的名单。可选的,变更订阅消息也可以只包括与之前的订阅情况相比变化的订阅部分,即本申请实施例中的变更订阅消息包括新增家的订阅的生产者的标识,或者与之前相比去掉生产者的标识,申请实施例并不限于此。换句话说,对于继续订阅的关系可以携带在订阅变更消息中也可以不携带,本申请实施例并不对此做限定。
在例如,如图4所示,图4为本申请的一个实施例提供的数据传输示意图,在控制端确定某个成员的生产者均没有人订阅的情况下,控制端可以通过信令告诉终端和转发服务器来关闭传输,即关闭该成员的上传通道。例如,在成员B的生产者均没有消费者订阅的情况下,控制端可以针对成员B关闭传输,即控制端可以关闭成员B的客户端到转发服务器的传输通道。在成员A的视频生产者有人订阅的情况下,开始生产视频,即通过上行传输通道(Transport)上传视频流,在成员A的音频生产者无人订阅的情况下,停止生产音频,即停止音频流的上传。
本申请通过订阅模式来控制Mediasoup成员的Producers与Consumers,能够进行统一高效的管理,按需生产,按需消费,在实际会议应用场景表示极佳,不论会议成员有多少人,其中又有多少人开启了摄像头和麦克风,有人订阅的才生产,主动订阅的才产生消费,同时优化了成员与路由(Router)间传输通道的连接逻辑,无人订阅该成员时,关闭该成员的SendTransport(发送通道/上传通道),减少多余生产者与消费者对象的同时,又减少了无用的连接通道,应用该方法可极大减少计算机资源的部署成本,同时对于日后Router的扩展方法也奠定了坚实基础。
应理解,上文中,本申请实施例中一个入会成员包括两个生产者:音频生产者和视频生产者,可选的,本申请实施例中一个成员可以仅包括一个生产者,例如仅包括音频生产者或仅包括视频生产者或者包括音视频合流的音视频生产者;可选的,一个成员还可以包括其他生产者,例如,文件生产者、屏幕共享视频生产者或共享音频生产者等,本申请实施例并不限于此。
可选的,本申请实施例中,通常情况下,针对每个会议,控制端都会维护一组订阅关系,该会议结束后该组订阅关系即失效,即订阅关系与会议对应,在会议开始时控制端获取订阅关系,并基于实时获取的订阅关系进行生产者和消费者的管控,在该会议结束后,该订阅关系即失效。可选的,如果对于一些固定人员的会议,或者定期召开的会议,本申请实施例中的控制端也可以保留之前的订阅关系,在下次会议时,控制端会按照上次会议的订阅关系来进行生产者和消费者的管控,即用户首次进入时就按照历史的订阅关系来进行生产者和消费者的管控,与首次进入时由客户端来决定用户的显示页面相比,能够进一步节省资源,更符合用户的需求,提高用户体验。
请参考图5,图5示出了本申请的一个实施例提供的用于会议的实时通信的装置的组成框图。图5所示的装置500可以为控制端,应理解,该装置500与上述方法实施例中的控制端对应,能够执行上述方法实施例涉及的控制端执行的各个步骤,该装置500的具体功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。
图5所示的装置500包括至少一个能以软件或固件的形式存储于存储器中或固化在该装置中的软件功能模块,图5所示的装置500包括:获取单元510,用于获取客户端发送的至少一个生产消费订阅关系,所述至少一个生产消费订阅关系中的每个生产消费订阅关系包括消费者标识和与所述消费者对应的至少一个生产者标识,其中,消费者为数据流的接收方,生产者为数据流的发送方;确定单元520,用于根据所述至少一个生产消费订阅关系确定数据流的生产者和消费者;发送单元530,根据所述生产者和消费者向对应客户端和/或转发服务器发送生产指示消息,所述生产指示消息用于指示客户端的生产消费情况。
在一种实施方式中,所述获取单元还用于在实时通信会议过程中,获取客户端发送的实时变更订阅消息,所述实时变更订阅消息用于指示客户端当前最新的生产消费订阅关系;所述发送单元还用于根据所述实时变更订阅消息,向对应客户端和/或转发服务器发送实时变更生产指示消息,所述实时变更生产指示消息用于指示客户端的生产消费情况的变化情况。
在一种实施方式中,所述实时变更订阅消息包括订阅生产者的消息和/或取消订阅生产者的消息,所述订阅生产者的消息包括订阅的生产者的标识,所述取消订阅生产者的消息包括被取消订阅的生产者的标识;所述实时变更生产指示消息包括开始生产消息、继续生产消息、停止生产消息或关闭传输消息。
在一种实施方式中,所述发送单元还用于在获取单元获取客户端发送的至少一个生产消费订阅关系之前, 在客户端初始进入会议时, 按照默认的初始生产消费关系向客户端和/或转发服务器发送初始生产指示消息,所述初始生产指示消息用于指示客户端的初始生产消费状态;向客户端发送入会成员列表,所述入会成员列表包括已经入会的所有成员的名单;其中,获取单元获取客户端发送的至少一个生产消费订阅关系具体包括获取客户端在获取所述成员列表后发送的所述至少一个生产消费订阅关系。
请参考图6,图6示出了本申请的一个实施例提供的用于会议的实时通信的装置的组成框图。图6所示的装置600可以为客户端,应理解,该装置600与上述方法实施例中的客户端对应,能够执行上述方法实施例涉及的客户端执行的各个步骤,该装置600的具体功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。
图6所示的装置600包括至少一个能以软件或固件的形式存储于存储器中或固化在该装置中的软件功能模块,图6所示的装置600包括:发送单元610,用于向控制端发送至少一个生产消费订阅关系,所述至少一个生产消费订阅关系中的每个生产消费订阅关系包括消费者标识和与所述消费者对应的至少一个生产者标识,其中,消费者为数据流的接收方,生产者为数据流的发送方;接收单元620,用于接收所述控制端发送的生产指示消息,所述生产指示消息用于指示客户端的生产消费情况;确定单元630,用于根据所述生产消费情况调整数据流的收发。
在一种实施方式中,所述发送单元还用于在实时通信会议过程中,向控制端发送实时变更订阅消息,所述实时变更订阅消息用于指示客户端当前最新的生产消费订阅关系;所述接收单元还用于获取所述控制端根据所述实时变更订阅消息发送的实时变更生产指示消息,所述实时变更生产指示消息用于指示客户端的生产消费情况的变化情况;所述确定单元还用于根据所述实时变更生产指示消息调整数据流的生产消费状态。
在一种实施方式中,所述实时变更订阅消息包括订阅生产者的消息和/或取消订阅生产者的消息,所述订阅生产者的消息包括订阅的生产者的标识,所述取消订阅生产者的消息包括被取消订阅的生产者的标识;所述实时变更生产指示消息包括开始生产消息、继续生产消息、停止生产消息或关闭传输消息。
在一种实施方式中,在发送单元向控制端发送至少一个生产消费订阅关系之前,所述确定单元还用于在客户端初始进入会议时, 按照控制端发送的初始生产指示消息确定初始生产消费状态;所述接收单元还用于接收控制端发送的入会成员列表,所述入会成员列表包括已经入会的所有成员的名单;其中,所述发送单元向控制端发送至少一个生产消费订阅关系,具体包括在获取用户对所述入会成员列表的操作后,发送所述至少一个生产消费订阅关系。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
如图7所示,本申请的一个实施例提供一种电子设备700,该电子设备700包括:存储器710、处理器720以及存储在存储器710上并可在处理器720上运行的计算机程序,其中,处理器720通过总线730从存储器710读取程序并执行所述程序时可实现如上述任意实施例中由控制端执行的方法或者由客户端执行的方法。可选的,图7所示的设备还可以包括收发器,该收发器可以用于数据流的发送和/或接收。可选的,图7所示的设备还可以包括采集器,采集器可以用于采集音/视频数据。可选的电子设备700还可以包括其他输入设备或其他硬件设备等,本申请实施例并不限于此。
处理器720可以处理数字信号,可以包括各种计算结构。例如复杂指令集计算机结构、结构精简指令集计算机结构或者一种实行多种指令集组合的结构。在一些示例中,处理器720可以是微处理器。
存储器710可以用于存储由处理器720执行的指令或指令执行过程中相关的数据。这些指令和/或数据可以包括代码,用于实现本申请实施例描述的一个或多个模块的一些功能或者全部功能。本公开实施例的处理器720可以用于执行存储器710中的指令以实现上述所示的由控制端或客户端执行的方法。存储器710包括动态随机存取存储器、静态随机存取存储器、闪存、光存储器或其它本领域技术人员所熟知的存储器。
本申请的一个实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时可实现如上述实施例提供的上述方法中的任意实施例中由控制端或客户端执行的方法。
本申请的一个实施例还提供了一种计算机程序产品,所述的计算机程序产品包括计算机程序,其中,所述的计算机程序被处理器执行时可实现如上述实施例提供的上述方法中的任意实施例中由控制端或客户端执行的方法。
应注意,本发明实施例中的处理器(例如,图7中的处理器)可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated crcuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
可以理解,本发明实施例中的存储器(例如,图7中的存储器)可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electricallyEPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
本申请实施例涉及到的应用程序包括安装在请求端上的任何应用,包括但不限于浏览器、电子邮件、即时消息服务、文字处理、键盘虚拟、窗口小部件(Widget)、加密、数字版权管理、语音识别、语音复制、定位(例如由全球定位系统提供的功能)、音乐播放等等。
应理解,本发明实施例中的收发单元或收发器也可以称为通信单元。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本发明实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(digitalvideo disc,DVD))、或者半导体介质(例如,固态硬盘(solid state disk,SSD))等。
在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
应理解,在本发明实施例中,“与A相应的B”表示B与A相关联,根据A可以确定B。但还应理解,根据A确定B并不意味着仅仅根据A确定B,还可以根据A和/或其它信息确定B。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。