视频会议实现方法、多点控制单元、设备及可读存储介质转让专利

申请号 : CN202210436097.5

文献号 : CN114554136B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吕少卿王克彦俞鸣园孙俊伟

申请人 : 浙江华创视讯科技有限公司

摘要 :

本申请公开了一种视频会议实现方法、多点控制单元、设备及可读存储介质,该方法包括:获取视频会议中各个会议终端的网络质量参数和对FEC的处理能力信息;根据网络质量参数和对FEC的处理能力信息确定各个会议终端对应的编码冗余度等级;根据各个会议终端对应的编码冗余度等级确定目标编码冗余度等级,向源会议终端发送目标编码冗余度等级,以使源会议终端根据目标编码冗余度等级对视频流进行FEC编码;获取源会议终端进行FEC编码后的视频流;根据各个会议终端对应的编码冗余度等级,将FEC编码后的视频流发送给各个会议终端。通过实施本申请,可以大大释放多点控制单元的FEC编码资源和带宽,可以使得多点控制单元能够满足大量的会议终端的FEC需求。

权利要求 :

1.一种视频会议实现方法,其特征在于,包括:

获取视频会议中各个会议终端的网络质量参数和对前向纠错FEC的处理能力信息;

根据所述网络质量参数和对FEC的处理能力信息确定各个所述会议终端对应的编码冗余度等级;

根据各个所述会议终端对应的编码冗余度等级确定目标编码冗余度等级,向源会议终端发送所述目标编码冗余度等级,以使所述源会议终端根据所述目标编码冗余度等级对视频流进行FEC编码;所述源会议终端为视频会议中作为主发言人的会议终端;根据各个所述会议终端对应的编码冗余度等级确定目标编码冗余度等级,包括:根据各个所述会议终端对应的编码冗余度等级确定各个编码冗余度等级对应的所述会议终端的数量;根据各个编码冗余度等级对应的所述会议终端的数量计算各个编码冗余度等级所占的比例;确定满足预设比例的编码冗余度等级,作为目标编码冗余度等级;或,如果确定各个所述会议终端对应的编码冗余度等级满足预设条件,则从各个所述会议终端对应的编码冗余度等级中选择最大的编码冗余度等级,作为目标编码冗余度等级,预设条件可以为各个会议终端对应的编码冗余度等级中,第一预设比例以上的编码冗余度等级均小于或等于第一阈值,或在第二阈值之间;

获取所述源会议终端进行FEC编码后的视频流;

根据各个所述会议终端对应的编码冗余度等级,将所述FEC编码后的视频流发送给各个会议终端。

2.根据权利要求1所述的视频会议实现方法,其特征在于,根据所述网络质量参数和对FEC的处理能力信息确定各个所述会议终端对应的编码冗余度等级,包括:将各个所述会议终端的所述网络质量参数和对FEC的处理能力信息,与每个编码冗余度等级对应的网络质量参数阈值及对FEC的处理能力预设条件进行匹配,确定各个会议终端对应的编码冗余度等级。

3.根据权利要求1所述的视频会议实现方法,其特征在于,根据各个所述会议终端对应的编码冗余度等级,将所述FEC编码后的视频流发送给各个会议终端,包括:针对每个所述会议终端:

如果确认所述会议终端对应的编码冗余度等级与所述目标编码冗余度等级相同,将所述FEC编码后的视频流直接发送给所述会议终端;

如果确认所述会议终端对应的编码冗余度等级小于或大于所述目标编码冗余度等级,根据所述会议终端对应的编码冗余度对所述FEC编码后的视频流再次进行FEC编码,将再次进行FEC编码后的视频流发送给所述会议终端。

4.根据权利要求1所述的视频会议实现方法,其特征在于,所述网络质量参数包括丢包率、网络抖动、网络时延。

5.一种多点控制单元MCU,其特征在于,包括:

至少一个会议服务模块,用于获取视频会议中各个会议终端的网络质量参数和对前向纠错FEC的处理能力信息;

根据所述网络质量参数和对FEC的处理能力信息确定各个所述会议终端对应的编码冗余度等级;

根据各个所述会议终端对应的编码冗余度等级确定目标编码冗余度等级,向源会议终端发送所述目标编码冗余度等级,以使所述源会议终端根据所述目标编码冗余度等级对视频流进行FEC编码;所述源会议终端为视频会议中作为主发言人的会议终端;根据各个所述会议终端对应的编码冗余度等级确定目标编码冗余度等级,包括:根据各个所述会议终端对应的编码冗余度等级确定各个编码冗余度等级对应的所述会议终端的数量;根据各个编码冗余度等级对应的所述会议终端的数量计算各个编码冗余度等级所占的比例;确定满足预设比例的编码冗余度等级,作为目标编码冗余度等级;或,如果确定各个所述会议终端对应的编码冗余度等级满足预设条件,则从各个所述会议终端对应的编码冗余度等级中选择最大的编码冗余度等级,作为目标编码冗余度等级,预设条件可以为各个会议终端对应的编码冗余度等级中,第一预设比例以上的编码冗余度等级均小于或等于第一阈值,或在第二阈值之间;

多个流媒体服务模块,用于获取所述源会议终端进行FEC编码后的视频流和各个所述会议终端对应的编码冗余度等级;

根据各个所述会议终端对应的编码冗余度等级,将所述FEC编码后的视频流发送给各个会议终端。

6.根据权利要求5所述的MCU,其特征在于,多个所述流媒体服务模块在根据各个所述会议终端对应的编码冗余度等级,将所述FEC编码后的视频流发送给各个会议终端之前,所述会议服务模块还用于获取各个所述会议终端对应的视频流信息及各个所述流媒体服务模块的性能状态信息;

根据所述视频流信息及所述性能状态信息确定各个所述会议终端对应的流媒体服务模块,向负载均衡服务模块发送各个所述会议终端对应的流媒体服务模块的信息,以使所述负载均衡服务模块根据各个所述会议终端对应的流媒体服务模块的信息,将各个所述会议终端接入至对应的媒体流服务模块。

7.一种电子设备,其特征在于,包括:

至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如权利要求1‑4任意一项所述的视频会议实现方法。

8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使计算机执行如权利要求1‑4任意一项所述的视频会议实现方法。

说明书 :

视频会议实现方法、多点控制单元、设备及可读存储介质

技术领域

[0001] 本申请涉及视频会议技术领域,尤其涉及一种视频会议实现方法、多点控制单元、设备及可读存储介质。

背景技术

[0002] 随着移动互联网的快速发展,视频会议相关业务呈爆发式增长。随之而来的会议终端的数量,以及外部接入视频会议的互联网设备的数量也越来越大,导致网络信道的承载能力受到相当大的考验,音视频在网络传输中不可避免出现各种问题,例如网络数据丢包,网络数据丢包会导致声音断续,视频花屏、卡顿等现象,降低用户体验。
[0003] 采用前向纠错(Forward Error Correction,FEC)是解决上述问题的主要方法之一。但在大规模会议场景中,多点控制单元(multi control unit,MCU)的编码资源有限,如何在有限编码资源的基础上,使得MCU通过FEC模式支持更多的会议终端,是亟需解决的问题。

发明内容

[0004] 有鉴于此,本申请实施例通过提供一种视频会议实现方法、多点控制单元、设备及可读存储介质,用以解决如何在有限编码资源的基础上,使得MCU通过FEC模式支持更多的会议终端的问题。
[0005] 为了解决上述问题,根据本申请第一方面,本申请实施例提供了一种视频会议实现方法,包括:获取视频会议中各个会议终端的网络质量参数和对FEC的处理能力信息;根据网络质量参数和对FEC的处理能力信息确定各个会议终端对应的编码冗余度等级;根据各个会议终端对应的编码冗余度等级确定目标编码冗余度等级,向源会议终端发送目标编码冗余度等级,以使源会议终端根据目标编码冗余度等级对视频流进行FEC编码;源会议终端为视频会议中作为主发言人的会议终端;获取源会议终端进行FEC编码后的视频流;根据各个会议终端对应的编码冗余度等级,将FEC编码后的视频流发送给各个会议终端。
[0006] 可选地,根据网络质量参数和对FEC的处理能力信息确定各个会议终端对应的编码冗余度等级,包括:将各个会议终端的网络质量参数和对FEC的处理能力信息,与每个编码冗余度等级对应的网络质量参数阈值及对FEC的处理能力预设条件进行匹配,确定各个会议终端对应的编码冗余度等级。
[0007] 可选地,根据各个会议终端对应的编码冗余度等级确定目标编码冗余度等级,包括:根据各个会议终端对应的编码冗余度等级确定各个编码冗余度等级对应的会议终端的数量;根据各个编码冗余度等级对应的会议终端的数量计算各个编码冗余度等级所占的比例;确定满足预设比例的编码冗余度等级,作为目标编码冗余度等级。
[0008] 可选地,根据各个会议终端对应的编码冗余度等级确定目标编码冗余度等级,包括:如果确定各个会议终端对应的编码冗余度等级满足预设条件,则从各个会议终端对应的编码冗余度等级中选择最大的编码冗余度等级,作为目标编码冗余度等级。
[0009] 可选地,根据各个会议终端对应的编码冗余度等级,将FEC编码后的视频流发送给各个会议终端,包括:
[0010] 针对每个会议终端:如果确认会议终端对应的编码冗余度等级与目标编码冗余度等级相同,将FEC编码后的视频流直接发送给会议终端;如果确认会议终端对应的编码冗余度等级小于或大于目标编码冗余度等级,根据会议终端对应的编码冗余度对FEC编码后的视频流再次进行FEC编码,将再次进行FEC编码后的视频流发送给会议终端。
[0011] 可选地,网络质量参数包括丢包率、网络抖动、网络时延。
[0012] 根据本申请第二方面,本申请实施例提供了一种多点控制单元,包括:至少一个会议服务模块,用于获取视频会议中各个会议终端的网络质量参数和对FEC的处理能力信息;根据网络质量参数和对FEC的处理能力信息确定各个会议终端对应的编码冗余度等级;根据各个会议终端对应的编码冗余度等级确定目标编码冗余度等级,向源会议终端发送目标编码冗余度等级,以使源会议终端根据目标编码冗余度等级对视频流进行FEC编码;源会议终端为视频会议中作为主发言人的会议终端;多个流媒体服务模块,用于获取源会议终端进行FEC编码后的视频流和各个会议终端对应的编码冗余度等级;根据各个会议终端对应的编码冗余度等级,将FEC编码后的视频流发送给各个会议终端。
[0013] 可选地,多个流媒体服务模块在根据各个会议终端对应的编码冗余度等级,将FEC编码后的视频流发送给各个会议终端之前,
[0014] 会议服务模块还用于获取各个会议终端对应的视频流信息及各个流媒体服务模块的性能状态信息;根据视频流信息及性能状态信息确定各个会议终端对应的流媒体服务模块,向负载均衡服务模块发送各个会议终端对应的流媒体服务模块的信息,以使负载均衡服务模块根据各个会议终端对应的流媒体服务模块的信息,将各个会议终端接入至对应的媒体流服务模块。
[0015] 根据本申请第三方面,本申请实施例提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器执行如第一方面或第一方面任意实施方式中的视频会议实现方法。
[0016] 根据本申请第四方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,计算机指令用于使计算机执行如第一方面或第一方面任意实施方式中的视频会议实现方法。
[0017] 本申请实施例提供的视频会议实现方法、多点控制单元、设备及可读存储介质,通过获取视频会议中各个会议终端的网络质量参数和对FEC的处理能力信息;根据网络质量参数和对FEC的处理能力信息确定各个会议终端对应的编码冗余度等级;根据各个会议终端对应的编码冗余度等级确定目标编码冗余度等级,向源会议终端发送目标编码冗余度等级,以使源会议终端根据目标编码冗余度等级对视频流进行FEC编码;源会议终端为视频会议中作为主发言人的会议终端;获取源会议终端进行FEC编码后的视频流;根据各个会议终端对应的编码冗余度等级,将FEC编码后的视频流发送给各个会议终端;从而是在源会议终端基于目标编码冗余度等级预先对视频流进行初次编码,可以使得初次编码后的视频流能够直接适用于大部分甚至全部的会议终端的编码冗余度需求,从而大部分甚至全部的会议终端可以复用初次编码后的视频流,多点控制单元中不需要进行视频流的FEC编码,或者仅部分会议终端所需的视频流需要在多点控制单元中再次进行FEC编码,从而可以大大释放多点控制单元的FEC编码资源和带宽,可以使得多点控制单元能够满足大量的会议终端的FEC需求。
[0018] 上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。

附图说明

[0019] 图1为本申请实施例中一种视频会议的总体架构示意图;
[0020] 图2为本申请实施例中一种MCU的结构示意图;
[0021] 图3为本申请实施例中一种电子设备的硬件结构示意图;
[0022] 图4为本申请实施例中一种视频会议实现方法的流程示意图。

具体实施方式

[0023] 为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0024] 本申请实施例提供了一种视频会议的总体架构,如图1所示,包括:
[0025] 负载均衡服务模块:负责将会议终端接入信令接入服务模块和流媒体服务模块。
[0026] 信令接入服务模块集群:负责与会议终端进行信令通讯。
[0027] 流媒体服务模块集群:负责与会议终端进行流媒体通讯。
[0028] 会议服务模块集群:特指会管服务创建的某个特定视频会议,可以进行视频会议的功能控制(如开闭麦、音视频权限以及点名等)。
[0029] 会管服务:实现视频会议的业务管理功能,如创建/删除会议、加入/剔除会议终端、会议级联等会议业务管理功能。
[0030] 其中,某个视频会议对应的信令接入服务模块和流媒体服务模块均可以为多个或一个。多个会议服务模块可以集成在一个服务器中,也可以集成在多个服务器中。多个信令接入服务模块可以集成在一个服务器中,也可以集成在多个服务器中。多个流媒体服务模块可以集成在一个服务器中,可以集成在多个服务器中。会议服务模块、信令接入服务模块、流媒体接入服务模块中的一个或几个可以集成在一个电子设备中,也可以分布在不同的电子设备中,在此不做具体地限定。
[0031] 还可以包括业务管理服务模块:负责平台层的业务管理。
[0032] 认证服务模块:负责各会议终端入会认证等。
[0033] 视频会议的实现过程为:
[0034] 1、会管服务接收到视频会议创建请求时,启动会议服务模块。
[0035] 2、各个会议终端通过负载均衡服务模块接入信令接入服务模块,接入信令接入服务模块后,会议终端通过信令接入服务模块将会议终端的标识信息和订阅的视频流信息发送给会议服务模块。
[0036] 3、会议服务模块根据会议终端的标识信息邀请会议终端入会,会议终端入会后,向会议服务模块上报是否支持启动FEC功能,并通过负载均衡服务模块接入到流媒体服务模块上。
[0037] 4、各个流媒体服务模块上报流媒体服务模块的性能状态信息,性能状态信息包括计算算力以及网络带宽。
[0038] 5、会议服务模块根据各个流媒体服务模块的性能状态信息和各个会议终端订阅的视频流信息对和视频会议接入的流媒体服务模块进行重新分配,分配规则为:在流媒体服务器的计算算力和网络带宽支持的情况下,会议终端订阅相同视频流的,会优先分配到同一个流媒体服务模块上。
[0039] 会议服务将重新分配后的各会议终端接入的流媒体服务模块的信息,发送给负载均衡服务模块,负载均衡服务模块根据该信息重新将各会议终端接到对应的流媒体服务模块上。
[0040] 6、会议服务模块监测本会议服务模块到各个会议终端的网络质量,统计得到各个会议终端的网络质量参数,根据各个会议终端的网络质量参数和对FEC的处理能力信息确定各个会议终端对应的编码冗余度等级。会议终端订阅的每一路视频流,分成0%、10%、20%以及30% 4个档位。其中,0%的档位用于兼容不支持FEC功能的会议终端,丢包率、网络抖动为0%的会议终端,以及低网络延时的会议终端,(此时采用自动重传请求(Automatic Repeat‑reQuest,ARQ)模式保障数据传输);10%的档位用于兼容支持FEC功能,且丢包率、网络抖动大于0%,小于10%的会议终端,以及高延时的会议终端;20%的档位用于兼容支持FEC功能,且丢包率、网络抖动大于10%,小于20%的会议终端;30%的档位用于兼容支持FEC功能,且丢包率、网络抖动大于20%,小于30%的会议终端。
[0041] 7、会议服务模块根据各个会议终端对应的编码冗余度等级确定目标编码冗余度等级,向源会议终端发送目标编码冗余度等级,以使源会议终端根据目标编码冗余度等级对视频流进行FEC编码,并向各个会议终端对应的流媒体服务模块发送各个会议终端对应的编码冗余度等级以及目标编码冗余度等级。源会议终端为视频会议中作为主发言人的会议终端。源会议终端为视频会议中的其中一个或几个会议终端。在一次视频会议中,源会议终端可能相同或不同。当源会议终端加入会议后,源会议终端能够将自身产生的视频流发送给MCU,MCU再将源会议终端产生的视频流发送给其他会议终端。目标编码冗余度等级为各个会议终端对应的编码冗余度等级中的其中一个编码冗余度等级。可通过预设策略从各个会议终端对应的编码冗余度等级中确定一个编码冗余度等级为目标编码冗余度等级。
[0042] 8、源会议终端接收到目标编码冗余度等级,在视频会议中,将源会议终端产生的视频流按照目标编码冗余度等级进行FEC编码,并将FEC编码后的视频流发送给对应的媒体流服务模块。
[0043] 9、媒体流服务模块接收到FEC编码后的视频流,将各个会议终端对应的编码冗余度等级与目标编码冗余度等级进行比较,如果会议终端对应的编码冗余度等级大于或小于目标编码冗余度等级,则对FEC编码后的视频流按照会议终端的编码冗余度等级再次进行FEC编码,并将再次FEC编码后的视频流发送给该会议终端;如果会议终端对应的编码冗余度等级等于目标编码冗余度等级,则直接将接收到的FEC编码后的视频流发送给该会议终端。例如,会议终端对应的编码冗余度等级为0%,目标编码冗余度等级为10%,则可以去除FEC编码后的视频流中的冗余数据,将去除冗余数据后的视频流发送给该会议终端。又如,会议终端对应的编码冗余度等级为10%,目标编码冗余度等级为20%,则可以按照20%的冗余数据的算法对视频流再次FEC编码,并将再次FEC编码后的视频流发送给该会议终端。
[0044] 如此,在源会议终端基于目标编码冗余度等级预先对视频流进行初次FEC编码,可以使得初次FEC编码后的视频流能够直接适用于大部分甚至全部的会议终端的编码冗余度需求,从而大部分甚至全部的会议终端可以复用初次编码后的视频流,流媒体服务模块中不需要进行视频流的FEC编码,或者仅部分会议终端所需的视频流需要在流媒体服务模块中再次进行FEC编码,从而可以大大释放流媒体服务模块的FEC编码资源和带宽,使得流媒体服务模块能够满足大量的会议终端的FEC需求。且能够满足不支持启动FEC功能的会议终端,且对于没有网络质量的会议终端,在视频流中不加入额外的冗余数据,可以节省媒体流服务模块的带宽和会议终端的带宽。
[0045] 根据本申请上述的架构,本申请实施例提供了一种视频会议中的MCU。用于实现本申请实施例提供的视频会议实现方法,如图2所示,MCU包括:
[0046] 至少一个会议服务模块,用于获取视频会议中各个会议终端的网络质量参数和对FEC的处理能力信息;根据网络质量参数和对FEC的处理能力信息确定各个会议终端对应的编码冗余度等级;根据各个会议终端对应的编码冗余度等级确定目标编码冗余度等级,向源会议终端发送目标编码冗余度等级,以使源会议终端根据目标编码冗余度等级对视频流进行FEC编码;源会议终端为视频会议中作为主发言人的会议终端。
[0047] 多个流媒体服务模块,用于获取源会议终端进行FEC编码后的视频流和各个会议终端对应的编码冗余度等级;根据各个会议终端对应的编码冗余度等级,将FEC编码后的视频流发送给各个会议终端。
[0048] 在一个可选的实施例中,多个流媒体服务模块在根据各个会议终端对应的编码冗余度等级,将FEC编码后的视频流发送给各个会议终端之前,
[0049] 会议服务模块还用于获取各个会议终端对应的视频流信息及各个流媒体服务模块的性能状态信息;根据视频流信息及性能状态信息确定各个会议终端对应的流媒体服务模块,向负载均衡服务模块发送各个会议终端对应的流媒体服务模块的信息,以使负载均衡服务模块根据各个会议终端对应的流媒体服务模块的信息,将各个会议终端接入至对应的媒体流服务模块。
[0050] 在一些实施例中,会议服务模块,用于将各个会议终端的网络质量参数和对FEC的处理能力信息,与每个编码冗余度等级对应的网络质量参数阈值及对FEC的处理能力预设条件进行匹配,确定各个会议终端对应的编码冗余度等级。
[0051] 在一些实施例中,会议服务模块,用于根据各个会议终端对应的编码冗余度等级确定各个编码冗余度等级对应的会议终端的数量;根据各个编码冗余度等级对应的会议终端的数量计算各个编码冗余度等级所占的比例;确定满足预设比例的编码冗余度等级,作为目标编码冗余度等级。
[0052] 在一些实施例中,会议服务模块,用于如果确定各个会议终端对应的编码冗余度等级均小于或等于阈值,则从各个会议终端对应的编码冗余度等级中选择最大的编码冗余度等级,作为目标编码冗余度等级。
[0053] 在一些实施例中,针对每个会议终端:多个流媒体服务模块,用于如果确认会议终端对应的编码冗余度等级与目标编码冗余度等级相同,将FEC编码后的视频流直接发送给会议终端;如果确认会议终端对应的编码冗余度等级小于或大于目标编码冗余度等级,根据会议终端对应的编码冗余度对FEC编码后的视频流再次进行FEC编码,将再次进行FEC编码后的视频流发送给会议终端。
[0054] 在一些实施例中,网络质量参数包括丢包率、网络抖动、网络时延。
[0055] 下面说明本申请实施例提供的电子设备的示例性应用,本申请实施例提供的电子设备可以实施为电子设备,所述电子设备可以是服务器或终端设备。
[0056] 服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云计算服务的云服务器。终端设备可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端设备以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请实施例在此不做限制。
[0057] 参见图3,图3是本申请实施例提供的电子设备400的结构示意图,图3所示的电子设备400包括:至少一个处理器410、存储器450和总线440;电子设备400中的各个组件通过总线440耦合在一起。可理解,总线440用于实现这些组件之间的连接通信。总线440除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线440。
[0058] 处理器410可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
[0059] 存储器450中存储有用于实现本申请实施例提供的资源管理方法的可执行指令,资源管理方法可由图3所示的电子设备中的处理器410执行;存储器450可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器450可选地包括在物理位置上远离处理器410的一个或多个存储设备。
[0060] 在一些实施例中,存储器450能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集。
[0061] 在一些实施例中,电子设备400还可以包括:
[0062] 操作系统451,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
[0063] 网络通信模块452,用于经由一个或多个(有线或无线)网络接口420到达其他计算设备,示例性的网络接口420包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等。
[0064] 本申请实施例提供了一种视频会议实现方法,可应用于电子设备兼容大量的会议终端进行FEC,电子设备可以是服务器,可以是终端设备,例如MCU,本申请实施例以MCU为例进行说明。
[0065] 如图4所示,视频会议实现方法包括:
[0066] S101,获取视频会议中各个会议终端的网络质量参数和对FEC的处理能力信息。
[0067] 在本申请实施例中,当视频会议中的各个会议终端接入MCU后,MCU通过监测本MCU到视频会议的各个会议终端的网络质量,可以统计得到各个会议终端的网络质量参数。
[0068] 在MCU邀请各个会议终端入会时,会议终端上报是否支持启动FEC功能的能力,则MCU可以获取到各个会议终端对FEC的处理能力信息。对FEC的处理能力信息包括支持启动FEC功能和不支持启动FEC功能。
[0069] 在一些实施例中,网络质量参数包括丢包率、网络抖动、网络时延。
[0070] S102,根据网络质量参数和对FEC的处理能力信息确定各个会议终端对应的编码冗余度等级。
[0071] 在一些实施例中,可以预先设定不同网络质量参数和对FEC的不同处理能力的编码冗余度等级,从而每个编码冗余度等级对应一个网络质量参数阈值,和对FEC的处理能力的预设条件。
[0072] 例如,将编码冗余度等级分为4级,分别为0%、10%、20%以及30%。其中,0%的档位用于兼容不支持FEC功能的会议终端,丢包率、网络抖动为0%的会议终端,以及低网络延时的会议终端,(此时采用自动重传请求(Automatic Repeat‑reQuest,ARQ)模式保障数据传输);10%的档位用于兼容支持FEC功能,且丢包率、网络抖动大于0%,小于10%的会议终端,以及高延时的会议终端;20%的档位用于兼容支持FEC功能,且丢包率、网络抖动大于10%,小于20%的会议终端;30%的档位用于兼容支持FEC功能,且丢包率、网络抖动大于20%,小于30%的会议终端。
[0073] 从而,根据网络质量参数和对FEC的处理能力信息确定各个会议终端对应的编码冗余度等级,包括:将各个会议终端的网络质量参数和对FEC的处理能力信息,与每个编码冗余度等级对应的网络质量参数阈值及对FEC的处理能力预设条件进行匹配,确定各个会议终端对应的编码冗余度等级。
[0074] 在本申请实施例中,通过预先设定每个编码冗余度等级对应的网络参数阈值及对FEC的处理能量预设条件,从而根据视频会议中各个会议终端的网络质量参数和对FEC的处理能力信息,可以快速确定各个会议终端对应的编码冗余度等级。
[0075] 当然,在其他实施例中,也可以实时根据视频会议中各个会议终端的网络质量参数和对FEC的处理能力信息实时设定各个会议终端的编码冗余度等级。例如,将所有会议终端的网络质量参数,按照大小顺序进行排序,得到排序后的参数序列,并对该参数序列进行分割,得到预订数量的序列片段,并将每个序列片段中最差的网络质量参数设置为该序列片段的编码冗余度等级,从而每个序列片段中的所有会议终端都对应该序列判断的编码冗余度等级。
[0076] S103,根据各个会议终端对应的编码冗余度等级确定目标编码冗余度等级,向源会议终端发送目标编码冗余度等级,以使源会议终端根据目标编码冗余度等级对视频流进行FEC编码;源会议终端为视频会议中作为主发言人的会议终端。
[0077] 在本申请实施例中,音频流和视频流统称为视频流。源会议终端为视频会议中作为主发言人的会议终端,源会议终端为视频会议中的其中一个或几个会议终端。在一次视频会议中,源会议终端可能相同或不同。当源会议终端加入会议后,源会议终端能够将自身产生的视频流发送给MCU,MCU再将源会议终端产生的视频流发送给其他会议终端。
[0078] 目标编码冗余度等级为各个会议终端对应的编码冗余度等级中的其中一个编码冗余度等级。可通过预设策略从各个会议终端对应的编码冗余度等级中确定一个编码冗余度等级为目标编码冗余度等级。
[0079] S104,获取源会议终端进行FEC编码后的视频流。
[0080] 在本申请实施例中,源会议终端入会后,源会议终端产生的视频流按照目标编码冗余度等级进行FEC编码后的视频流会发送至MCU。从而MCU能够获取到源会议终端进行FEC编码后的视频流。
[0081] S105,根据各个会议终端对应的编码冗余度等级,将FEC编码后的视频流发送给各个会议终端。
[0082] 在本申请实施例中,由于目标编码冗余度等级是基于各个会议终端对应的编码冗余度等级确定的,而各个会议终端对应的编码冗余度等级可能存在不同,因此,目标编码冗余度等级编码后的视频流可能不适用于各个会议终端,因此,可以再将各个会议终端对应的编码冗余度等级与目标编码冗余度等级进行比较,从而确定是否需要对按照目标编码冗余度等级编码后的视频流进行进一步的处理,如果各个会议终端对应的编码冗余度等级与目标编码冗余度等级相同,则不需要再进行处理,直接将FEC编码后的视频流发送给各个会议终端。如果存在有会议终端对应的编码冗余度等级与目标编码冗余度等级不相同,则可以对FEC编码后的视频流按照该会议终端对应的编码冗余度等级再次进行FEC编码,将再次FEC编码后的视频流发送给该会议终端。
[0083] 本申请实施例提供的视频会议实现方法,通过获取视频会议中各个会议终端的网络质量参数和对FEC的处理能力信息;根据网络质量参数和对FEC的处理能力信息确定各个会议终端对应的编码冗余度等级;根据各个会议终端对应的编码冗余度等级确定目标编码冗余度等级,向源会议终端发送目标编码冗余度等级,以使源会议终端根据目标编码冗余度等级对视频流进行FEC编码;源会议终端为视频会议中作为主发言人的会议终端;获取源会议终端进行FEC编码后的视频流;根据各个会议终端对应的编码冗余度等级,将FEC编码后的视频流发送给各个会议终端;从而是在源会议终端基于目标编码冗余度等级预先对视频流进行初次编码,可以使得初次编码后的视频流能够直接适用于大部分甚至全部的会议终端的编码冗余度需求,从而大部分甚至全部的会议终端可以复用初次编码后的视频流,多点控制单元中不需要进行视频流的FEC编码,或者仅部分会议终端所需的视频流需要在多点控制单元中再次进行FEC编码,从而可以大大释放多点控制单元的FEC编码资源的带宽,可以使得多点控制单元能够满足大量的会议终端的FEC需求。
[0084] 在一个可选的实施例中,步骤S103中,根据各个会议终端对应的编码冗余度等级确定目标编码冗余度等级,包括:根据各个会议终端对应的编码冗余度等级确定各个编码冗余度等级对应的会议终端的数量;根据各个编码冗余度等级对应的会议终端的数量计算各个编码冗余度等级所占的比例;确定满足预设比例的编码冗余度等级,作为目标编码冗余度等级。
[0085] 具体实施时,假设预设比例为50%。会议终端的总数量为4,包括会议终端d1(编码冗余度等级为0%),会议终端d2(编码冗余度等级为0%),会议终端d3(编码冗余度等级为10%),会议终端d4(编码冗余度等级为10%),则可以确定:编码冗余度等级为0%的会议终端的数量为2,编码冗余度等级为10%的会议终端的数量也为2,则编码冗余度等级为0%所占的比例为50%,编码冗余度等级为10%所占的比例也为50%,则满足50%的预设比例的编码冗余度等级包括0%和10%,则可以从0%和10%中随机选择一个作为目标编码冗余度等级。这样,源会议终端就可以按照0%或10%来计算数据冗余,从而源会议终端编码后的视频流能够满足两个会议终端的需求。
[0086] 在本申请实施例中,通过确定满足预设比例的编码冗余度等级,作为目标编码冗余度等级,可以使得以目标编码冗余度等级编码后的视频流能够满足大部分的会议终端的FEC需求。
[0087] 在另一个可选的实施例中,步骤S103中,根据各个会议终端对应的编码冗余度等级确定目标编码冗余度等级,包括:如果确定各个会议终端对应的编码冗余度等级满足预设条件,则从各个会议终端对应的编码冗余度等级中选择最大的编码冗余度等级,作为目标编码冗余度等级。预设条件可以为各个会议终端对应的编码冗余度等级中,第一预设比例以上的编码冗余度等级均小于或等于第一阈值,或在第二阈值之间。
[0088] 具体实施时,假设第一阈值为20%,第二阈值为20%‑30%,第一预设比例为50%,会议终端的总数量为4,包括会议终端d1(编码冗余度等级为0%),会议终端d2(编码冗余度等级为0%),会议终端d3(编码冗余度等级为10%),会议终端d4(编码冗余度等级为10%),则可以确定:各个会议终端对应的编码冗余度等级均小于或等于20%,则确定10%的编码冗余度等级,作为目标编码冗余度等级。如果突然d2丢包率大于10%(如18%),则d2的编码冗余度等级为20%,此时目标编码冗余度等级会调整到20%。如果突然d2丢包率大于20%(如25%),则d2的编码冗余度等级为30%,此时目标编码冗余度等级仍然为20%。
[0089] 当然,如果大部分终端都在20‑30%之间的,则目标编码冗余度等级为30%。
[0090] 在本申请实施例中,在确定各个会议终端对应的编码冗余度等级满足预设条件,从各个会议终端对应的编码冗余度等级中选择最大的编码冗余度等级,作为目标编码冗余度等级,可以使得在大部分会议终端对应的编码冗余度等级小于阈值时,均采用源会议终端进行FEC编码,节省MCU的编码资源。
[0091] 在一个可选的实施例中,步骤S105,根据各个会议终端对应的编码冗余度等级,将FEC编码后的视频流发送给各个会议终端,包括:
[0092] 针对每个会议终端:如果确认会议终端对应的编码冗余度等级与目标编码冗余度等级相同,将FEC编码后的视频流直接发送给会议终端;如果确认会议终端对应的编码冗余度等级小于或大于目标编码冗余度等级,根据会议终端对应的编码冗余度对FEC编码后的视频流再次进行FEC编码,将再次进行FEC编码后的视频流发送给会议终端。
[0093] 具体实施时,假设会议终端的总数量为4,包括会议终端d1(编码冗余度等级为0%),会议终端d2(编码冗余度等级为10%),会议终端d3(编码冗余度等级为10%),会议终端d4(编码冗余度等级为20%),目标编码冗余度等级为10%,则MCU在收到FEC编码后的视频流后,将FEC编码后的视频流中冗余数据去除,然后发送给d1。然后,将FEC编码后的视频流完整的发送给d2和d3。然后,将FEC编码后的视频流中冗余数据去除,对视频流按照编码冗余度等级为20%计算冗余数据,然后将视频流和计算到的20%的冗余数据编码后,发送给d4。
[0094] 在本申请实施例中,通过将会议终端对应的编码冗余度等级与目标编码冗余度等级进行比较,从而可以确认是否需要再次对FEC编码后的视频流进行FEC编码,从而可以实现按各个会议终端的需求来对视频流进行FEC编码,且减少MCU的编码资源和带宽。
[0095] 本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的视频会议实现方法,例如,如图4示出的视频会议实现方法。
[0096] 在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD‑ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
[0097] 在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
[0098] 作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
[0099] 本申请实施例提供一种计算机程序产品,所述计算机程序产品包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现本申请的视频会议实现方法。
[0100] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。
[0101] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程信息处理设备的处理器以产生一个机器,使得通过计算机或其他可编程信息处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0102] 这些计算机程序指令也可存储在能引导计算机或其他可编程信息处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0103] 这些计算机程序指令也可装载到计算机或其他可编程信息处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0104] 显然本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。