一种媒体数据处理方法、装置及媒体服务器转让专利

申请号 : CN201910810921.7

文献号 : CN112445605A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 孟繁星官丹朱景升陈俊梅君君赵志东朱红军

申请人 : 中兴通讯股份有限公司

摘要 :

本发明公开了一种媒体数据处理方法、装置及媒体服务器,本发明通过CPU根据待处理业务的业务类型,将音频媒体数据业务分配给CPU处理,而将视频媒体数据业务分配给图形处理器(Graphics Processing Unit,GPU)处理,也就是说,本发明通过CPU进行信令业务和音频媒体数据业务的处理,而通过GPU来完成视频媒体数据业务的处理,以充分发挥GPU处理视频媒体数据业务的优势,从而有效避免了通过CPU处理视频媒体数据业务导致的CPU消耗过多资源的问题。

权利要求 :

1.一种媒体数据处理方法,其特征在于,该方法包括:

通过中央处理器CPU判断待处理业务的业务类型,所述业务类型包括音频媒体数据业务和视频媒体数据业务;

将所述音频媒体数据业务分配给CPU处理,将所述视频媒体数据业务分配给图形处理器GPU处理;

其中,所述CPU设置在所述媒体服务器上或者是分布式部署在物理机上,和/或,所述GPU设置在所述媒体服务器上或者是分布式部署在物理机上。

2.根据权利要求1所述的方法,其特征在于,在通过CPU判断待处理业务的业务类型之前,所述方法,还包括:对接收到的消息进行解析,得到该消息所对应的待处理业务。

3.根据权利要求1所述的方法,其特征在于,当所述媒体服务器包括多个CPU时,将所述音频媒体数据业务分配给CPU处理,包括:计算各个CPU的剩余资源,根据各个CPU的剩余资源对所述音频媒体数据业务进行分配。

4.根据权利要求3所述的方法,其特征在于,

该方法还包括:对所述音频媒体数据业务进行资源量化计算,得到处理该音频媒体数据业务消耗的资源能力;

计算各个CPU的剩余资源,根据各个CPU的剩余资源对所述音频媒体数据业务进行分配,包括:计算各个CPU的剩余资源,根据各个CPU的剩余资源以及处理所述音频媒体数据业务消耗的资源能力,对所述音频媒体数据业务进行分配。

5.根据权利要求4所述的方法,其特征在于,计算各个CPU的剩余资源,根据各个CPU的剩余资源以及处理所述音频媒体数据业务消耗的资源能力,对所述音频媒体数据业务进行分配,包括:计算各个CPU的剩余资源,将各个CPU的剩余资源存储到第一资源调度管理列表中,并根据所述第一资源调度管理列表以及处理所述音频媒体数据业务消耗的资源能力,按照预设分配规则对所述音频媒体数据业务进行分配。

6.根据权利要求1所述的方法,其特征在于,当所述媒体服务器包括多个GPU时,将视频媒体数据业务分配给GPU处理,包括:计算各个GPU的剩余资源,根据各个GPU的剩余资源对所述视频媒体数据业务进行分配。

7.根据权利要求6所述的方法,其特征在于,

该方法还包括:对所述视频媒体数据业务进行资源量化计算,得到处理该视频媒体数据业务消耗的资源能力;

计算各个GPU的剩余资源,根据各个GPU的剩余资源对所述视频媒体数据业务进行分配,包括:计算各个GPU的剩余资源,根据各个GPU的剩余资源以及处理所述视频媒体数据业务消耗的资源能力,对所述视频媒体数据业务进行分配。

8.根据权利要求7所述的方法,其特征在于,计算各个GPU的剩余资源,根据各个GPU的剩余资源以及处理所述视频媒体数据业务消耗的资源能力,对所述视频媒体数据业务进行分配,包括:计算各个GPU的剩余资源,将各个GPU的剩余资源存储到第二资源调度管理列表中,并根据所述第二资源调度管理列表以及处理所述视频媒体数据业务消耗的资源能力,按照预设分配规则对所述视频媒体数据业务进行分配。

9.根据权利要求5或8所述的方法,其特征在于,

所述预设分配规则包括:基于最大载干算法对待处理的音频媒体数据业务选择剩余能力最大的CPU进行处理;

基于最大载干算法对待处理的视频媒体数据业务选择剩余能力最大的GPU进行处理,当该GPU的剩余能力不能满足所述视频媒体数据业务的处理时,则重新选择剩余能力最大的CPU对所述待处理的视频媒体数据业务进行处理。

10.根据权利要求1-8中任一项所述的方法,其特征在于,所述方法,还包括:通过所述GPU对所述视频媒体数据业务进行视频媒体数据处理,并将处理结果发送给向其分配所述视频媒体数据业务的CPU,其中,所述视频媒体数据处理包括以下中的一种或多种:编码、解码、缩放和合成。

11.一种媒体数据处理装置,其特征在于,该装置包括:

媒体控制单元,用于通过CPU判断待处理业务的业务类型,所述业务类型包括音频媒体数据业务和视频媒体数据业务;

资源调度单元,用于将所述音频媒体数据业务分配给CPU处理,将所述视频媒体数据业务分配给图形处理器GPU处理;

其中,所述CPU设置在所述媒体服务器上或者是分布式部署在物理机上,和/或,所述GPU设置在所述媒体服务器上或者是分布式部署在物理机上。

12.根据权利要求11所述的装置,其特征在于,当所述媒体服务器包括多个CPU时,所述资源调度单元还用于,计算各个CPU的剩余资源,根据各个CPU的剩余资源对所述音频媒体数据业务进行分配。

13.根据权利要求12所述的装置,其特征在于,

所述媒体控制单元还用于,对所述音频媒体数据业务进行资源量化计算,得到处理该音频媒体数据业务消耗的资源能力;

所述资源调度单元还用于,计算各个CPU的剩余资源,根据各个CPU的剩余资源以及所述音频媒体数据业务消耗的资源能力,对所述音频媒体数据业务进行分配。

14.根据权利要求13所述的装置,其特征在于,

所述资源调度单元还用于,计算各个CPU的剩余资源,将各个CPU的剩余资源存储到第一资源调度管理列表中,并根据所述第一资源调度管理列表以及处理所述音频媒体数据业务消耗的资源能力,按照预设分配规则对所述音频媒体数据业务进行分配。

15.根据权利要求11所述的装置,其特征在于,当所述媒体服务器包括多个GPU时,所述资源调度单元还用于,计算各个GPU的剩余资源,根据各个GPU的剩余资源对所述视频媒体数据业务进行分配。

16.根据权利要求15所述的装置,其特征在于,

所述媒体控制单元还用于,对所述视频媒体数据业务进行资源量化计算,得到处理该视频媒体数据业务消耗的资源能力;

所述资源调度单元还用于,计算各个GPU的剩余资源,根据各个GPU的剩余资源以及处理所述视频媒体数据业务消耗的资源能力,对所述视频媒体数据业务进行分配。

17.根据权利要求16所述的装置,其特征在于,

所述资源调度单元还用于,计算各个GPU的剩余资源,将各个GPU的剩余资源存储到第二资源调度管理列表中,并根据所述第二资源调度管理列表以及处理所述视频媒体数据业务消耗的资源能力,按照预设分配规则对所述视频媒体数据业务进行分配。

18.根据权利要求11-17中任意一项所述的装置,其特征在于,所述媒体控制单元和所述调度单元均包括多个,所述媒体控制单元与所述调度单元一一相对应,组成一个分组,且每一分组均设置有与该分组相唯一对应的GPU。

19.根据权利要求11-17中任意一项所述的装置,其特征在于,所述媒体控制单元包括多个,所述调度单元为一个,每一个所述媒体控制单元均与所述调度单元连接。

20.一种计算机可读存储介质,其特征在于,所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至10中任一项所述的媒体数据处理方法的步骤。

21.一种媒体服务器,其特征在于,所述媒体服务器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至10任一项所述的方法的步骤。

说明书 :

一种媒体数据处理方法、装置及媒体服务器

技术领域

[0001] 本发明涉及通讯领域,特别是涉及一种媒体数据处理方法、装置及媒体服务器。

背景技术

[0002] 现有的各大媒体服务器厂商一般都只在中央处理器(Central Processing Unit,CPU)上做媒体处理(包括视频的解码,编码,缩放及合成等等),但是由于视频媒体处理对CPU的消耗较大,单个媒体服务器支持的并发数较少,也就是说,现有通过CPU进行视频媒体处理的方法很难满足用户需求。

发明内容

[0003] 本发明提供了一种媒体数据处理方法、装置及媒体服务器,用以解决现有技术中通过CPU进行视频媒体处理消耗CPU大量资源的问题。
[0004] 为解决上述技术问题,一方面,本发明提供一种媒体数据处理方法,应用于媒体服务器,该方法包括:通过中央处理器CPU判断待处理业务的业务类型,所述业务类型包括音频媒体数据业务和视频媒体数据业务;并将所述音频媒体数据业务分配给CPU处理,将所述视频媒体数据业务分配给图形处理器GPU处理;其中,所述CPU设置在所述媒体服务器上或者是分布式部署在物理机上,和/或,所述GPU设置在所述媒体服务器上或者是分布式部署在物理机上。
[0005] 优选地,在通过CPU判断待处理业务的业务类型之前,所述方法,还包括:
[0006] 对接收到的消息进行解析,得到该消息所对应的待处理业务。
[0007] 优选地,当所述媒体服务器包括多个CPU时,将所述音频媒体数据业务分配给CPU处理,包括:
[0008] 计算各个CPU的剩余资源,根据各个CPU的剩余资源对所述音频媒体数据业务进行分配。
[0009] 优选地,该方法还包括:对所述音频媒体数据业务进行资源量化计算,得到处理该音频媒体数据业务消耗的资源能力;
[0010] 计算各个CPU的剩余资源,根据各个CPU的剩余资源对所述音频媒体数据业务进行分配,包括:
[0011] 计算各个CPU的剩余资源,根据各个CPU的剩余资源以及处理所述音频媒体数据业务消耗的资源能力,对所述音频媒体数据业务进行分配。
[0012] 优选地,计算各个CPU的剩余资源,根据各个CPU的剩余资源以及处理所述音频媒体数据业务消耗的资源能力,对所述音频媒体数据业务进行分配,包括:
[0013] 计算各个CPU的剩余资源,将各个CPU的剩余资源存储到第一资源调度管理列表中,并根据所述第一资源调度管理列表以及处理所述音频媒体数据业务消耗的资源能力,按照预设分配规则对所述音频媒体数据业务进行分配。
[0014] 优选地,当所述媒体服务器包括多个GPU时,将视频媒体数据业务分配给GPU处理,包括:计算各个GPU的剩余资源,根据各个GPU的剩余资源对所述音频媒体数据业务进行分配。
[0015] 优选地,该方法还包括:对所述视频媒体数据业务进行资源量化计算,得到处理该视频媒体数据业务消耗的资源能力;
[0016] 计算各个GPU的剩余资源,根据各个GPU的剩余资源对所述音频媒体数据业务进行分配,包括:计算各个GPU的剩余资源,根据各个GPU的剩余资源以及处理所述视频媒体数据业务消耗的资源能力,对所述视频媒体数据业务进行分配。
[0017] 优选地,计算各个GPU的剩余资源,根据各个GPU的剩余资源以及处理所述视频媒体数据业务消耗的资源能力,对所述视频媒体数据业务进行分配,包括:计算各个GPU的剩余资源,将各个GPU的剩余资源存储到第二资源调度管理列表中,并根据所述第二资源调度管理列表以及处理所述视频媒体数据业务消耗的资源能力,按照预设分配规则对所述视频媒体数据业务进行分配。
[0018] 优选地,所述预设分配规则包括:基于最大载干算法对待处理的音频媒体数据业务选择剩余能力最大的CPU进行处理;
[0019] 基于最大载干算法对待处理的视频媒体数据业务选择剩余能力最大的GPU进行处理,当该GPU的剩余能力不能满足所述视频媒体数据业务的处理时,则重新选择剩余能力最大的CPU对所述待处理的视频媒体数据业务进行处理。
[0020] 优选地,所述资源量化计算的规则包括以下中的一种或多种:
[0021] 1个Intel GPU等于32核的CPU虚拟主机的性能;
[0022] 1路H264hp@720P的高清视频能力消耗等于1个CPU的能力消耗;
[0023] 1路H264hp@1080P的超清视频能力消耗等于2路H264hp@720P的高清视频能力消耗;
[0024] 低于H264hp@720P的视频能力消耗等于1/2路H264hp@720P的高清视频能力消耗;
[0025] 1路H265@720P的高清视频能力消耗等于等于2路H264hp@720P的高清视频能力消耗;
[0026] 1路H265@1080P的超清视频能力消耗等于2路H265@720P的高清视频能力消耗;
[0027] 低于H265@720P的视频能力消耗等于1/2路H265@720P的高清视频能力消耗。
[0028] 优选地,所述方法,还包括:通过所述GPU对所述视频媒体数据业务进行视频媒体数据处理,并将处理结果发送给向其分配所述视频媒体数据业务的CPU,其中,所述视频媒体数据处理包括以下中的一种或多种:编码、解码、缩放和合成。
[0029] 优选地,所述音频媒体数据业务包括以下中的一种或多种:音频播放业务、音频会议业务和音频录制业务;
[0030] 所述视频媒体数据业务包括以下中的一种或多种:视频播放业务、视频会议业务和视频录制业务。
[0031] 另一方面,本发明提供一种媒体数据处理装置,该装置包括:媒体控制单元,用于通过CPU判断待处理业务的业务类型,所述业务类型包括音频媒体数据业务和视频媒体数据业务;资源调度单元,用于将所述音频媒体数据业务分配给CPU处理,将所述视频媒体数据业务分配给图形处理器GPU处理;其中,所述CPU设置在所述媒体服务器上或者是分布式部署在物理机上,和/或,所述GPU设置在所述媒体服务器上或者是分布式部署在物理机上。
[0032] 优选地,所述媒体控制单元还用于,对接收到的消息进行解析,得到该消息所对应的待处理业务。
[0033] 优选地,当所述媒体服务器包括多个CPU时,所述资源调度单元还用于,计算各个CPU的剩余资源,根据各个CPU的剩余资源对所述音频媒体数据业务进行分配。
[0034] 优选地,所述媒体控制单元还用于,对所述音频媒体数据业务进行资源量化计算,得到处理该音频媒体数据业务消耗的资源能力;
[0035] 所述资源调度单元还用于,计算各个CPU的剩余资源,根据各个CPU的剩余资源以及所述音频媒体数据业务消耗的资源能力,对所述音频媒体数据业务进行分配。
[0036] 优选地,所述资源调度单元还用于,计算各个CPU的剩余资源,将各个CPU的剩余资源存储到第一资源调度管理列表中,并根据所述第一资源调度管理列表以及处理所述音频媒体数据业务消耗的资源能力,按照预设分配规则对所述音频媒体数据业务进行分配。
[0037] 优选地,当所述媒体服务器包括多个GPU时,所述资源调度单元还用于,计算各个GPU的剩余资源,根据各个GPU的剩余资源对所述视频频媒体数据业务进行分配。
[0038] 优选地,所述媒体控制单元还用于,对所述视频媒体数据业务进行资源量化计算,得到处理该视频媒体数据业务消耗的资源能力;
[0039] 所述资源调度单元还用于,计算各个GPU的剩余资源,根据各个GPU的剩余资源以及处理所述视频媒体数据业务消耗的资源能力,对所述视频媒体数据业务进行分配。
[0040] 优选地,所述资源调度单元还用于,计算各个GPU的剩余资源,将各个GPU的剩余资源存储到第二资源调度管理列表中,并根据所述第二资源调度管理列表以及处理所述视频媒体数据业务消耗的资源能力,按照预设分配规则对所述视频媒体数据业务进行分配。
[0041] 优选地,所述媒体控制单元和所述调度单元均包括多个,所述媒体控制单元与所述调度单元一一相对应,组成一个分组,且每一分组均设置有与该分组相唯一对应的GPU。
[0042] 优选地,所述媒体控制单元包括多个,所述调度单元为一个,每一个所述媒体控制单元均与所述调度单元连接。
[0043] 优选地,所述GPU,用于对视频媒体数据业务进行视频媒体数据处理,并将处理结果反馈给向其分配所述视频媒体数据业务的CPU,其中,所述视频媒体数据处理包括以下中的一种或多种:编码、解码、缩放和合成。
[0044] 再一方面,本发明还提供了一种计算机可读存储介质,所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述中任一种所述的媒体数据处理方法的步骤。
[0045] 又再一方面,本发明提供了一种媒体服务器,所述媒体服务器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述任一种所述的方法的步骤。
[0046] 本发明通过CPU根据待处理业务的业务类型,将音频媒体数据业务分配给CPU处理,而将视频媒体数据业务分配给图形处理器(Graphics Processing Unit,GPU)处理,也就是说,本发明通过CPU进行信令业务和音频媒体数据业务的处理,而通过GPU来完成视频媒体数据业务的处理,以充分发挥GPU处理视频媒体数据业务的优势,从而有效避免了通过CPU处理视频媒体数据业务导致的CPU消耗过多资源的问题。

附图说明

[0047] 图1是本发明第一实施例中一种媒体数据处理方法的流程图;
[0048] 图2是本发明第一实施例中媒体服务器的外部网络架构示意图;
[0049] 图3是本发明第一实施例中资源调度的最大载干算法示意图;
[0050] 图4是本发明第一实施例中CPU+GPU媒体处理工作示意图;
[0051] 图5是本发明第一实施例中转码播放流程示意图;
[0052] 图6是本发明第一实施例中转码录像流程示意图;
[0053] 图7是本发明第一实施例中会议流程示意图;
[0054] 图8是本发明第二实施例中一种媒体数据处理装置的结构示意图;
[0055] 图9是本发明第二实施例中第一种媒体服务器架构示意图;
[0056] 图10是本发明第二实施例中第二种媒体服务器架构示意图;
[0057] 图11是本发明第二实施例中第三种媒体服务器架构示意图;
[0058] 图12是本发明第二实施例中第四种媒体服务器架构示意图。

具体实施方式

[0059] 为了解决现有技术中,CPU处视频媒体数据业务会消耗CPU过多资源的问题,以及通过虚拟化部署媒体服务器集群来支持大规模用户并发,而带来的价格成本的过高及维护成本的增加的问题,本发明提供了一种媒体数据处理方法,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
[0060] 本发明第一实施例提供了一种媒体数据处理方法,应用于媒体服务器,该方法的流程如图1所示,包括步骤S101至S102:
[0061] S101,通过CPU判断待处理业务的业务类型,所述业务类型包括音频媒体数据业务和视频媒体数据业务;
[0062] 即,本发明实施例是,通过CPU对接收到的消息进行解析,得到该消息所对应的待处理业务,并判断该待处理业务的业务类型,所述业务类型包括音频媒体数据业务和视频媒体数据业务;
[0063] 具体实施时,本发明实施例的CPU是从应用服务器(Application Server,AS),或者代理服务器(SIP PROXY)接收用户终端发来的消息,通过对该消息进行解析可以得到该消息对应的待处理业务以及该待处理业务所对应的业务类型。
[0064] 如图2所示为本发明实施例的媒体服务器的外部网络架构示意图,通过图2可知,用户终端的消息是经由核心网和应用服务器传递到媒体服务器,媒体服务器的CPU接收到用户终端发来的消息后,对该消息进行解析。
[0065] 具体来说,用户终端可以是手机,电脑,硬终端等各类用户终端设备;核心网,用户终端通过网络接入核心网,核心网是承载消息接收和发送的核心;应用服务器,是接入媒体服务器之前的应用逻辑控制单元,负责协调各类用户终端同媒体服务器之间的业务信令控制和呼叫逻辑控制。
[0066] S102,将所述音频媒体数据业务分配给CPU处理,将所述视频媒体数据业务分配给图形处理器GPU处理。
[0067] 也就是说,本发明实施例通过CPU根据待处理业务的业务类型,将音频媒体数据业务分配给CPU处理,而将视频媒体数据业务分配给图形处理器(Graphics Processing Unit,GPU)处理,即,本发明实施例是通过CPU来完成信令业务和音频媒体数据业务的处理,而通过GPU来完成视频媒体数据业务的处理,以充分发挥GPU处理视频媒体数据业务的优势,从而有效避免了通过CPU处理视频频媒体数据业务导致的CPU消耗过多资源的问题。
[0068] 本发明实施例中,是通过所述GPU对视频媒体数据业务进行视频媒体数据处理,并将处理结果发送给向其分配所述视频媒体数据业务的CPU,以充分发挥GPU处理视频媒体数据业务的优势,其中,所述视频媒体数据处理包括以下中的一种或多种:编码、解码、缩放和合成。
[0069] 需要说明的是,本发明实施例中,所述音频媒体数据业务包括以下中的一种或多种:音频播放业务、音频会议业务和音频录制业务;所述视频媒体数据业务包括以下中的一种或多种:视频播放业务、视频会议业务和视频录制业务。
[0070] 其中,本发明实施例中,所述CPU设置在所述媒体服务器上,或者是分布式部署在物理机上,类似的,本发明实施例的所述GPU也可以设置在所述媒体服务器上,或者是分布式部署在物理机上。
[0071] 也就是说,本发明实施例的CPU和GPU都可以是直接设置在媒体服务器上,也可以设置在其他物理机上,通过物理机与媒体服务器连接,实现媒体服务器对CPU和GPU的控制。
[0072] 并且,本发明实施例的CPU和GPU都可以设置为多个,以更好的满足不同用户的需求。
[0073] GPU是专为执行复杂的数学和几何计算而设计的,在浮点运算、并行计算等方面,GPU可以提供数十倍乃至于上百倍于CPU的性能,基于GPU的这些特性,本发明实施例利用GPU来提升视频媒体处理的能力和质量,而且目前常见的GPU厂家一般都会提供媒体处理相关的sdk工具。但是带有GPU硬件资源的设备都比较珍贵,一旦利用不合理就会产生GPU资源的浪费。
[0074] 总体来说,本发明实施例的核心就是在CPU资源池上处理信令业务和消耗性能很小的音频码流,在GPU资源池上处理消耗性能很大的视频码流,以达到业务处理与视频媒体处理分离,既发挥了CPU在虚拟化平台上对资源的精确调度,又能充分发挥GPU在视频媒体处理上的优势,避开了GPU在虚拟化平台上的不足,提升软件媒体服务器的服务能力和服务质量。
[0075] 本发明实施例采用了基于CPU+GPU异构的媒体数据处理方法,完全摒弃了传统的业务和视频处理同在一个资源池下的处理方式(即在包含有CPU、内存、I/O等资源池服务器上的处理方式),而采用本地CPU资源池去处理信令业务和音频处理等轻量级的任务,采用部署带有GPU硬件资源的媒体处理模块去处理视频媒体流,实现了业务控制与视频媒体处理相分离,使得本地CPU资源池减少了任务量级,避免达到性能瓶颈,又充分发挥了GPU在视频图像处理上的优势。
[0076] 本发明实施例中,当媒体服务器包括多个CPU时,将所述音频媒体数据业务分配给CPU处理,具体包括:计算各个CPU的剩余资源,根据各个CPU的剩余资源对所述音频媒体数据业务进行分配。
[0077] 也就是说,在对音频媒体数据业务进行分配时,本发明实施例是基于计算得到的各个CPU的剩余资源,来对音频媒体数据业务进行分配。
[0078] 具体来说,本发明实施例是通过对所述音频媒体数据业务进行资源量化计算,得到处理该音频媒体数据业务所消耗的资源能力;
[0079] 并计算各个CPU的剩余资源,根据各个CPU的剩余资源以及处理所述音频媒体数据业务实际消耗的资源能力,对所述音频媒体数据业务进行分配。
[0080] 即,本发明实施例是根据各个CPU的剩余资源以及处理所述音频媒体数据业务消耗的资源能力,对音频媒体数据业务进行分配。
[0081] 本发明实施例中,计算各个CPU的剩余资源,根据各个CPU的剩余资源以及处理所述音频媒体数据业务消耗的资源能力,对所述音频媒体数据业务进行分配,包括:
[0082] 计算各个CPU的剩余资源,将各个CPU的剩余资源存储到第一资源调度管理列表中,并根据所述第一资源调度管理列表以及处理所述音频媒体数据业务消耗的资源能力,按照预设分配规则对所述音频媒体数据业务进行分配。
[0083] 即在具体实施时,本发明实施例是,实时计算各个CPU的剩余资源情况,并将各个CPU的剩余资源情况存储到第一资源调度管理列表中,后续根据该第一资源调度管理列表以及处理所述音频媒体数据业务所消耗的资源能力,实现对所述音频媒体数据业务进行分配。
[0084] 需要说明的是,本发明实施例的第一资源调度管理列表中还要实时记录CPU的上下线情况。
[0085] 具体来说,本发明实施例会进行实时或者定时查询CPU节点,每当一个CPU上线(或下线)后,都会及时查询到此节点的变动,并加入(删除)第一资源调度管理列表中。
[0086] 本发明实施例中,当包括多个GPU时,将视频媒体数据业务分配给GPU处理,包括:计算各个GPU的剩余资源,根据各个GPU的剩余资源对所述音频媒体数据业务进行分配。
[0087] 具体实施时,本发明实施例所述方法还包括:对所述视频媒体数据业务进行资源量化计算,得到处理该视频媒体数据业务实际消耗的资源能力;
[0088] 计算各个GPU的剩余资源,根据各个GPU的剩余资源对所述音频媒体数据业务进行分配,包括:计算各个GPU的剩余资源,根据各个GPU的剩余资源以及处理所述视频媒体数据业务所消耗的资源能力,对所述视频媒体数据业务进行分配。
[0089] 具体来说,本发明实施例是基于各个GPU的剩余资源以及处理所述视频媒体数据业务消耗的资源能力,对所述视频媒体数据业务进行分配。
[0090] 具体实施时,本发明实施例是计算各个GPU的剩余资源,将各个GPU的剩余资源存储到第二资源调度管理列表中,并根据所述第二资源调度管理列表以及所述视频媒体数据业务实际消耗的资源能力,按照预设分配规则对所述视频媒体数据业务进行分配。
[0091] 即,为了更方便对各个GPU的剩余资源进行查询,本发明实施例通过设置一个第二资源调度管理列表,并将各个GPU的剩余资源存储到第二资源调度管理列表中,后续根据该第二资源调度管理列表以及所述视频媒体数据业务实际消耗的资源能力,按照预设分配规则对所述视频媒体数据业务进行分配。
[0092] 需要说明的是,本发明实施例的第二资源调度管理列表中还要实时记录GPU的上下线情况。
[0093] 具体来说,本发明实施例会进行实时或者定时查询GPU节点,每当一个GPU上线(或下线)后,都会及时查询到此节点的变动,并加入(删除)第二资源调度管理列表中。
[0094] 本发明实施例中,所述预设分配规则包括:基于最大载干算法对待处理的视频媒体数据业务选择剩余能力最大的GPU进行处理,当该GPU的剩余能力不能满足所述视频媒体数据业务的处理时,则选择剩余能力最大的CPU对所述待处理的视频媒体数据业务进行处理。以保证音频媒体数据业务的最快处理速度,以获得更好的处理效果。
[0095] 本发明实施例中,所述资源量化计算的规则包括以下中的一种或多种:
[0096] 1个Intel GPU等于32核的CPU虚拟主机的性能;
[0097] 1路H264hp@720P的高清视频能力消耗等于1个CPU的能力消耗;
[0098] 1路H264hp@1080P的超清视频能力消耗等于2路H264hp@720P的高清视频能力消耗;
[0099] 其他低于H264hp@720P的视频能力消耗等于1/2路H264hp@720P的高清视频能力消耗;
[0100] 1路H265@720P的高清视频能力消耗等于等于2路H264hp@720P的高清视频能力消耗;
[0101] 1路H265@1080P的超清视频能力消耗等于2路H265@720P的高清视频能力消耗;
[0102] 其他低于H265@720P的视频能力消耗等于1/2路H265@720P的高清视频能力消耗。
[0103] 需要说明的是,本发明实施例上述的量化计算方法仅是一个例子,具体实施时,本领域技术人员也可以根据实际需要进行其他设置。本发明对此不作具体限定。
[0104] 本发明实施例通过上述计算方法对用户终端能力进行资源量化计算,并对本地虚拟化CPU资源池和带有GPU硬件的资源池的剩余能力进行实时管理,来实现对后续接入的新业务进行负载均衡,在此负载均衡的基础之上,针对新增(或删除)的CPU资源节点和GPU节点实时监测,增加了系统的动态可扩展性。
[0105] 下面将结合图3-图7对本发明实施例所述方法进行详细的解释和说明:
[0106] 图3为本发明实施例的资源调度的最大载干算法示意图,最大载干算法是对每次的接入的用户终端选择剩余能力最大的资源节点进行处理,下面结合图3对最大载干算法进行详细描述。
[0107] 媒体服务器需要查询每一个部署的CPU资源节点和GPU节点,并将其保存到管理列表中(具体是将CPU的剩余资源存储到第一资源调度管理列表中,将各个GPU的剩余资源存储到第二资源调度管理列表中),并实时获取每一个节点剩余能力值,在相应的表里进行登记;
[0108] 用户终端接入后,媒体服务器根据与用户终端媒体协商的内容,判断该用户终端是否是视频端还是是纯音频端,即,根据接收到的用户终端消息判断该用户终端预处理的业务是音频媒体数据业务还是视频媒体数据业务;
[0109] 如果是音频媒体数据业务,只需处理音频码流,则从CPU管理列表中选择一个剩余能力最大的CPU资源节点,并判断此节点的剩余能力是否允许此音频用户终端接入。如果可以接入,选择的CPU资源节点需要保存该用户终端的相关参数信息,否则提示用户计算资源不足,拒绝用户接入。
[0110] 如果是视频端,需要说明的是,视频端包括音频码流和视频码流的处理,对于音频码流按照上述对纯音频端的处理模式;对于视频码流的处理,需要从GPU管理列表(即,第二资源调度管理列表)中的选择一个剩余能力最大的GPU媒体处理节点,并判断此节点的剩余能力是否允许此视频端接入,如果可以接入,选择的GPU节点需要保存该用户终端的相关参数信息,如果不可以接入,说明GPU硬件资源池没有满足的资源节点,再从CPU管理列表(即,第一资源调度管理列表)中的选择一个剩余能力最大的CPU资源节点,并判断此节点的剩余能力是否满足,如果满足,选择的CPU资源节点需要保存用户终端的相关参数信息,否则提示用户计算资源不足,拒绝用户接入。
[0111] 图4是本发明实施例的CPU+GPU对视频媒体数据业务的处理流程示意图,下面结合图4进行说明。
[0112] 将视频媒体数据业务的解码、缩放、合成及编码在GPU中进行,数据都是存放在显存中的。
[0113] 通过网络来接收视频媒体数据包。
[0114] 调用GPU图像处理器厂家提供的SDK工具解码接口,传入待解码的数据,保存解码后YUV数据在显存中的地址。
[0115] 按帧率定时调用缩放接口,将解码后的YUV数据显存地址传入,并申请新的显存地址,缩放后的数据在显存内部直接拷贝到新申请的显存的指定合成位置。
[0116] 调用SDK编码接口,传入合成后的YUV数据显存地址,最后将编码后的数据从显存拷贝到系统内存。
[0117] 打包并发送给发出请求的用户终端;如果视频需要存储,则写文件保存。
[0118] 也就是说,本发明实施例是利用GPU处理视频媒体数据业务的优势,通过GPU来对视频媒体数据业务的解码、缩放、合成及编码进行处理,从而避免了处理视频媒体数据业务占用过多的CPU资源的问题。
[0119] 图5是本发明实施例的转码播放视频流程示意图,下面结合图5对本发明实施例的转码播放视频的过程进行详细描述。
[0120] 当接收到终端接入请求后,分配音视频通道资源,计算用户终端的待处理业务的能力消耗,如果是纯音频终端,只选择本地的CPU资源进行处理即可;如果是视频终端,选择本地的CPU资源处理音频码流的同时,还要选择GPU处理视频码流,并下发通道参数到GPU。
[0121] 即在接收到用户终端播放请求后,获取待播放的文件的音视频格式,如果与用户终端协商的音视频格式一致,则不需要转码,否则,需要进行转码播放。
[0122] GPU接收到视频播放指令和相关的参数后,从播放文件中读取视频数据,如果不需要转码GPU,则将视频数据直接打包发送给用户终端,否则,首先将视频数据解码成YUV数据,然后缩放,最后再编码打包发送给用户终端,其中的编解码,缩放等操作都必须在分配的GPU中进行。
[0123] 在收到终端播放结束指令后,通知GPU结束播放,并释放分配的音视频通道资源,同时资源调度单元更新能力消耗。
[0124] 也就是说,本发明实施例通过GPU来完成用户终端的播放文件的编码过程。
[0125] 图6是本发明实施例的转码录像流程示意图,下面结合图示详细描述。
[0126] 当接收到用户终端接入请求后,分配音视频通道资源,计算用户终端的能力消耗,如果是纯音频终端,只选择本地的CPU资源进行处理即可;如果是视频终端,选择本地的CPU资源处理音频码流的同时,还要选择GPU处理视频码流,并下发通道参数到GPU。
[0127] GPU在接收到终端录像请求后,比较文件音视频格式与用户终端音视频格式是否一致,如果与用户终端的音视频格式一致,则不需要转码,否则,需要进行转码。
[0128] GPU接收到录像指令和相关的参数后,接收用户终端上来的视频数据,如果不需要转码,则将视频数据直接写入录像文件,否则,首先将视频数据解码成yuv数据,然后缩放,最后再编码写入录像文件,其中的编解码,缩放等操作都必须在分配的GPU中进行。
[0129] 在接收到终端录像结束指令后,通知GPU结束播放,并释放分配的音视频通道资源,同时更新能力消耗。
[0130] 图7是本发明实施的会议流程示意图,下面结合图7对本发明实施例的会议流程进行详细描述。
[0131] 当接收到终端接入请求后,分配音视频通道资源,计算用户终端的能力消耗,如果是纯音频终端,只选择本地的CPU资源进行处理即可;如果是视频终端,选择本地的CPU资源处理音频码流的同时,还要选择GPU处理视频码流,并下发通道参数到GPU。
[0132] GPU接收到终端加入会议请求,由于会议场景需要做合成,所以从用户终端接收到的视频数据首先需要解码成YUV数据,然后将解码后的YUV数据再进行合成,最后将合成后的YUV数据重新编码发送给用户终端。
[0133] 在接收到加入会议请求后,将用户终端加入到指定会议中,接收用户终端发送的视频数据,首先,将视频数据解码成YUV数据,然后缩放,再按照一定的规则进行合成,最后编码发送给用户终端,其中的编解码,缩放以及合成都必须分配的GPU中进行。
[0134] 最后在接收到用户终端退出会议指令后,通知GPU退出会议,并释放分配的音视频通道资源和计算资源,同时更新能力消耗。
[0135] 本发明第二实施例提供了一种媒体数据处理装置,参见图8,该装置设置在媒体服务器上,所述装置包括:
[0136] 媒体控制单元,用于通过CPU判断待处理业务的业务类型,所述业务类型包括音频媒体数据业务和视频媒体数据业务;
[0137] 资源调度单元,用于将所述音频媒体数据业务分配给CPU处理,将所述视频媒体数据业务分配给图形处理器GPU处理;
[0138] 也就是说,本发明实施例是由媒体控制单元通过CPU来判断待处理业务的业务类型,并通过资源调度单元将所述音频媒体数据业务分配给CPU处理,将所述视频媒体数据业务分配给图形处理器GPU处理,以充分发挥GPU处理视频媒体数据业务的优势,从而有效避免了通过CPU处视频频媒体数据业务导致的CPU消耗过多资源的问题。
[0139] 需要说明的是,本发明实施例中,所述CPU设置在所述媒体服务器上,或者是分布式部署在物理机上,和/或,所述GPU设置在所述媒体服务器上,或者是分布式部署在物理机上。
[0140] 也就是说,本发明实施例的CPU和GPU都可以是直接设置在媒体服务器上,也可以设置在其他物理机上,通过物理机与媒体服务器连接,实现媒体服务器对CPU和GPU的控制。
[0141] 进一步地,本发明实施例所述媒体控制单元还用于,对接收到的消息进行解析,得到该消息所对应的待处理业务。
[0142] 当所述媒体服务器包括多个CPU时,所述资源调度单元还用于,计算各个CPU的剩余资源,根据各个CPU的剩余资源对所述音频媒体数据业务进行分配。
[0143] 具体来说,本发明实施例是通过媒体控制单元对所述音频媒体数据业务进行资源量化计算,得到处理该音频媒体数据业务消耗的资源能力;并通过所述资源调度单元计算各个CPU的剩余资源,根据各个CPU的剩余资源以及所述音频媒体数据业务消耗的资源能力,对所述音频媒体数据业务进行分配。
[0144] 具体实施时,本发明实施的所述资源调度单元是计算各个CPU的剩余资源,将各个CPU的剩余资源存储到第一资源调度管理列表中,并根据所述第一资源调度管理列表以及处理所述音频媒体数据业务消耗的资源能力,按照预设分配规则对所述音频媒体数据业务进行分配。
[0145] 即,本发明实施例是根据各个CPU的剩余资源以及处理所述音频媒体数据业务消耗的资源能力,对音频媒体数据业务进行分配。
[0146] 当所述媒体服务器包括多个GPU时,所述资源调度单元还用于,计算各个GPU的剩余资源,根据各个GPU的剩余资源对所述音频媒体数据业务进行分配。
[0147] 具体来说,本发明是先通过所述媒体控制单元对所述视频媒体数据业务进行资源量化计算,得到处理该视频媒体数据业务消耗的资源能力;并通过资源调度单元计算各个GPU的剩余资源,根据各个GPU的剩余资源以及处理所述视频媒体数据业务消耗的资源能力,对所述视频媒体数据业务进行分配。
[0148] 具体实施时,本发明实施例的所述资源调度单元是通过计算各个GPU的剩余资源,将各个GPU的剩余资源存储到第二资源调度管理列表中,并根据所述第二资源调度管理列表以及处理所述视频媒体数据业务消耗的资源能力,按照预设分配规则对所述视频媒体数据业务进行分配。
[0149] 总体来说,本发明实施例是通过资源调度单元对部署的GPU硬件资源进行统一管理,合理调度,选择合适的GPU对视频媒体流进行处理,完成对视频媒体流的解码,编码,缩放及合成等等。
[0150] 下面将结合图9-图12对本发明实施例所述的装置进行详细的解释和说明:
[0151] 图9是本发明实施例第一种媒体服务器架构,如图9所示,媒体控制单元,是同外部应用服务器AS交互的模块,负责把AS下发的SIP信令解析成内部具体业务命令,并同时把内部的响应或者请求转换成SIP信令发送给AS。
[0152] 本发明实施例中的媒体控制单元是根据具体业务命令(如播放、录像、会议等视频业务),对业务进行逻辑控制,并计算此业务实际消耗的资源能力,为后续的资源调度找到相应的GPU资源节点或GPU节点提供条件。
[0153] 资源调度单元,管理所有CPU资源池和GPU节点,通过定时查询节点功能,每当一个GPU节点上线(下线)后,资源调度单元都会及时查询到此节点,并加入(删除)资源调度管理列表中。另外,如果CPU资源处理也是分布式部署多个节点,也需要对CPU资源节点进行实时增删和调度。
[0154] 资源调度单元通过对所有节点进行统一管理,按照一定的调度算法实现对GPU节点合理有效的调节和使用。
[0155] GPU节点,分布式部署多个GPU节点(可以是携带GPU图像处理器的各种物理机,如各种硬件设备),通过资源调度单元选择某个或者多个节点,并调用GPU厂家提供的SDK工具,对视频媒体流进行处理(包括视频的解码,编码,缩放及合成等),最终完成各种视频媒体转发、转码、录像和会议的功能。
[0156] 转码播放视频功能,找到播放信令路径下的媒体文件,从文件中读取视频数据,如果不需要转码,则将视频数据直接打包,通过RTP协议发送给终端,否则,首先将视频数据解码成YUV数据,然后缩放,最后再编码打包发送给终端,其中的编解码,缩放等操作都必须在资源调度单元分配的GPU节点中进行。
[0157] 录像功能,接收终端上来的视频数据,如果不需要转码,则将视频数据直接写入录像文件,否则,首先将视频数据解码成YUV数据,然后缩放,最后再编码写入录像文件,其中的编解码,缩放等操作都必须在资源调度单元分配的GPU节点中进行。
[0158] 视频会议功能,业务处理模块接收到加入会议请求,将视频终端加入到指定会议中,接收终端发送的视频数据,首先,将视频数据解码成YUV数据,然后缩放,再按照一定的规则进行合成,最后编码发送给终端,其中的编解码,缩放等操作都必须在资源调度单元分配的GPU节点中进行。
[0159] 图10是本发明实施例的第二媒体服务器架构,该架构同图9所对应的第一种媒体服务器架构相比,主要区别在于:第一种媒体服务器架构是一个媒体控制单元和资源调度单元对应多个GPU节点,外部网元只需要和单一的媒体控制单元交互即可;而第二种媒体服务器架构是分离的媒体服务器系统,由外部网元控制下发给哪个媒体控制单元,外部网元可能是代理服务器(SIPPROXY)也可能是应用服务器(AS)。根据图10可知,本发明实施例第二媒体服务器架构中所述媒体控制单元和所述调度单元均设置多个,所述媒体控制单元与所述调度单元一一相对应,组成一个分组,且每一分组均设置有与该分组相唯一对应的GPU。需要说明的是,第二种媒体服务器架构往往在用户量特别大的情况下使用,由于该种架构中GPU媒体处理资源池只从属于某一个媒体控制单元,所以可能会产生GPU资源的浪费。
[0160] 图11为本发明实施例第三种媒体服务器架构,该种架构中所述媒体控制单元包括多个,所述调度单元为一个,每一个所述媒体控制单元均与所述调度单元连接。
[0161] 第三种媒体服务器架构同第一和第二种媒体服务器架构的主要区别在于:第三种媒体服务器架构实现了业务与算力的相分离,GPU硬件不在单纯的从属于某一媒体控制单元,而是可以和多个媒体控制单元相连通,通过部署一个单独的资源调度单元对GPU节点资源进行合理调度,来选择最终的GPU节点。GPU硬件资源可以同时为多个媒体控制单元工作,考虑到GPU资源的珍贵性,可以让同一个区域的GPU硬件资源集中部署、集中管理,最大化GPU硬件资源使用率,让这些GPU硬件资源高效合理利用。
[0162] 第三种媒体服务器架构由上层媒体控制单元实现虚拟化“集群”部署,但此“集群”可以是互不影响,独立分开的,甚至可以是异地部署,并且只针对业务和性能消耗较小的音频码流进行处理。集中的GPU硬件资源为这些虚拟化“集群”服务,但只针对视频媒体流进行处理(包括视频的解码,编码,缩放及合成等),这样既实现了业务处理与GPU媒体计算的分离,也规避了GPU在虚拟化技术上存在的缺点,最终有效提升了媒体服务器的服务能力和服务质量。
[0163] 图12是本发明实施例中第四种媒体服务器架构,该架构设置主要是考虑随着网络技术的不断发展,GPU虚拟化的实现也是可以实现的,云化的操作系就可以按照一定的算法对GPU进行调度,此媒体服务器架构不仅可以对视频媒体数据用GPU进行处理,而且对媒体数据处理系统部署和实现也更轻便、简洁。
[0164] 需要说明的是,本发明实施例的所述GPU主要是对视频媒体数据业务进行视频媒体数据处理,并将处理结果反馈给向其分配所述视频媒体数据业务的CPU,其中,所述视频媒体数据处理包括以下中的一种或多种:编码、解码、缩放和合成。
[0165] 本发明实施例的相关内容可参照本发明第一实施例部分进行理解,在此不做详细论述。
[0166] 本发明第三实施例提供了一种计算机可读存储介质,所述计算机存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本发明第一实施例中任一种所述的媒体数据处理方法的步骤。具体内容可参照本发明第一实施例部分进行理解,在此不做详细论述。
[0167] 本发明第四实施例提供了一种媒体服务器,其特征在于,所述媒体服务器包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现本发明第一实施例中任一种所述的方法的步骤。具体内容可参照本发明第一实施例部分进行理解,在此不做详细论述。
[0168] 尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。