CN112631736A - 云主机的音频数据串流方法、装置、设备及存储介质 - Google Patents
云主机的音频数据串流方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112631736A CN112631736A CN202110023642.3A CN202110023642A CN112631736A CN 112631736 A CN112631736 A CN 112631736A CN 202110023642 A CN202110023642 A CN 202110023642A CN 112631736 A CN112631736 A CN 112631736A
- Authority
- CN
- China
- Prior art keywords
- audio
- client
- virtual
- session
- audio 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Abstract
本发明公开了一种多用户云主机的音频数据串流方法,包括预先创建至少一个虚拟音频设备;当接收到新的客户端连接接入的信号时,在虚拟音频设备中选择待分配的虚拟音频设备分配给新接入的客户端;将客户端的操作进程中的audio session和客户端分配的虚拟音频设备进行绑定;当audio session中产生音频数据时,则通过audio session绑定的虚拟音频设备获取音频数据并输出至客户端。本申请中预先创建好的虚拟音频设备和客户端对应的audio session绑定,实现各个客户端的音频数据相互隔离串流。本申请还提供了一种多用户云主机的音频数据串流装置、设备以及计算机可读存储介质,具有上述有益效果。
Description
技术领域
本发明涉及云平台技术领域,特别是涉及一种多用户云主机的音频数据串流方法、装置、设备以及计算机可读存储介质。
背景技术
随着计算机科学的发展,越来越多的应用程序被不断开发升级。为了用户带来更好的应用体验,各种应用程序无论是从画面渲染还是运行程序的流畅性上都得到极大的提升。但是与此同时也带来了要求运行应用程序的计算机硬件配置高的问题。以游戏软件为例,游戏开发者已经开发出了许多大型3D游戏,借助于高性能计算机,这些游戏能够渲染出逼真的画面,给玩家带来极佳的游戏体验。但同时,这些游戏软件运行过程对计算机性能的要求也普遍较高,许多玩家因为低配硬件的限制而无法体验,而要购买一台能够流畅运行大型3D游戏的计算机,将会是一笔不小的开支。
云平台的应用可以将开发好的应用程序放在云端服务器上运行,而用户可以通过客户端和云端服务器之间的数据信息交互实现对应用程序的操作和使用。以云游戏为例,所有的游戏程序都在云游戏服务提供商提供的云主机上运行,云主机负责利用其高性能CPU和GPU渲染出游戏画面,串流模块会将云主机上的视频进行压缩,然后通过网络传输给用户,这样用户只需要拥有一台具备基本视频解压能力的设备,就可以流畅的体验各类需要高性能硬件的游戏。
由此可见云平台的应用能够在很大程度上解决用户计算机性能不足导致无法操作使用云游戏等应用程序的问题。并且对于云主机而言,一般其硬件配置相对较高,仅仅只运行一个用户的应用程序,还存在较大的性能冗余,因此,一般情况下云主机能够实现支持多个用户通过客户端操作使用的应用程序同时在云主机上运行。
发明内容
本发明的目的是提供一种多用户云主机的音频数据串流方法、装置、设备以及计算机可读存储介质,使得云主机能够更好的支持多个用户的操作进程相关程序,带给用户良好的使用体验。
为解决上述技术问题,本发明提供一种多用户云主机的音频数据串流方法,包括:
预先创建至少一个虚拟音频设备;
当接收到新的客户端连接接入的信号时,在所述虚拟音频设备中选择未分配的虚拟音频设备的分配给新接入的所述客户端;
将所述客户端对应的操作进程中的audio session和所述客户端分配的所述虚拟音频设备进行绑定;
当所述audio session中产生音频数据时,通过所述audio session绑定的所述虚拟音频设备获取所述音频数据并输出至所述客户端。
在本申请的一种可选地实施例中,将所述客户端对应的操作进程中的audiosession和所述客户端分配的所述虚拟音频设备进行绑定,包括:
按照预定时间周期查询各个所述操作进程的audio session是否均已经绑定所述虚拟音频设备;
若存在未绑定所述虚拟音频设备的audio session,则将未绑定所述虚拟音频设备的所述audio session和所述audio session对应的所述客户端分配的虚拟音频设备进行绑定;所述audio session对应的客户端为所述audio session对应的操作进程所属的客户端。
在本申请的一种可选地实施例中,按照预定时间周期查询各个所述操作进程对应的audio session是否均已经绑定所述虚拟音频设备,包括:
查询各个所述audio session所属操作进程的进程ID;
通过所述进程ID查询每个所述audio session所属操作进程对应的JobObject;其中,每个所述客户端对应的操作进程均绑定在所述客户端对应的JobObject中;
根据所述audio session对应的所述JobObject中的进程列表,查询所述audiosession是否绑定虚拟音频设备的信息;
将所述audio session和所述audio session对应的所述客户端分配的虚拟音频设备进行绑定,包括:
将所述audio session和对应的所述JobObject所属的客户端分配的虚拟音频设备进行绑定。
在本申请的一种可选地实施例中,还包括:
当接收到所述客户端输入的输入音频数据时,将所述输入音频数据输入所述客户端分配的虚拟音频设备。
本申请还提供了一种多用户云主机的音频数据串流装置,包括:
设备创建模块,用于预先创建至少一个虚拟音频设备;
设备分配模块,用于当接收到新的客户端连接接入的信号时,在所述虚拟音频设备中选择未分配的虚拟音频设备的分配给新接入的所述客户端;
设备绑定模块,用于将所述客户端对应的操作进程中的audio session和所述客户端分配的所述虚拟音频设备进行绑定;
数据串流模块,用于当所述audio session中产生音频数据时,通过所述audiosession绑定的所述虚拟音频设备获取所述音频数据并输出至所述客户端。
在本申请的一种可选地实施例中,所述设备绑定模块用于按照预定时间周期查询各个所述操作进程的audio session是否均已经绑定所述虚拟音频设备;若存在未绑定所述虚拟音频设备的audio session,则将未绑定所述虚拟音频设备的所述audio session和所述audio session对应的所述客户端分配的虚拟音频设备进行绑定;将所述audiosession和对应的所述JobObject所属的客户端分配的虚拟音频设备进行绑定。
在本申请的一种可选地实施例中,所述设备绑定模块用于查询各个所述audiosession所属操作进程的进程ID;通过所述进程ID查询每个所述audio session所属操作进程对应的JobObject;其中,每个所述客户端对应的操作进程均绑定在所述客户端对应的JobObject中;根据所述audio session对应的所述JobObject中的进程列表,查询所述audio session是否绑定虚拟音频设备的信息;若存在未绑定所述虚拟音频设备的audiosession,则将所述audio session和对应的所述JobObject所述的客户端分配的虚拟音频设备进行绑定。
在本申请一种可选地实施例中,还包括数据输入模块,用于当接收到所述客户端输入的输入音频数据时,将所述输入音频数据输入所述客户端分配的虚拟音频设备。
本申请还提供一种多用户云主机的音频数据串流设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上任一项所述的多用户云主机的音频数据串流方法的操作步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行以实现如上任一项所述的多用户云主机的音频数据串流方法的操作步骤。
本发明所提供的多用户云主机的音频数据串流方法,包括预先创建至少一个虚拟音频设备;当接收到新的客户端连接接入的信号时,在虚拟音频设备中选择待分配的虚拟音频设备中分配给新接入的客户端;将客户端对应的操作进程中的audio session和客户端分配的虚拟音频设备进行绑定;当audio session中产生音频数据时,则通过audiosession绑定的虚拟音频设备获取音频数据并输出至客户端。
本申请中的云主机在同时运行多个用户的操作程序时,为了避免各个用户的操作进程中产生的音频数据通过云主机的真实音频设备输出至所有的客户端,预先创建多个虚拟音频设备,作为客户端的操作进程的音频数据输出端口,且将虚拟音频设备和客户端以及该客户端对应的audio session进行绑定,使得每个客户端对应的操作进程运行过程中产生的音频数据从绑定的虚拟音频设备输出并发送至对应的客户端,从而实现了每个客户端的操作进程中产生的音频数据相互独立的输送至对应的客户端,实现各个客户端的音频数据相互隔离,使得云主机能够更好的支持多个用户的操作进程相关程序,带给用户良好的使用体验。
本申请还提供了一种多用户云主机的音频数据串流装置、设备以及计算机可读存储介质,具有上述有益效果。
附图说明
为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的多用户云主机的音频数据串流方法的流程示意图;
图2为本申请实施例提供多用户云游戏的音频管理系统示意图;
图3为本发明实施例提供的多用户云主机的音频数据串流装置的结构框图。
具体实施方式
目前现有技术中云主机运行多个用户的操作程序时,云主机具有专用的多核心CPU、支持虚拟化的专业显卡,因此可在云主机上运行多个虚拟机,为多名用户提供操作程序服务,类似于云游戏服务。但虚拟机往往会带来性能上的损失,而且由于云主机CPU主频较低,而类似于大型游戏等操作程序对CPU主频要求较高,致使此类云主机在运行大型游戏时会比较吃力;另一方面,云主机采用的服务器CPU和专业显卡价格昂贵,使机房的建设成本高昂。
为此,本申请中云主机同时运行类似于云游戏服务等操作程序时,是直接采用云主机的物理机运行多个用户的操作程序,并通过显卡在云主机显示屏上不同区域显示各个不同用户的操作界面,并将各个用户的操作界面通过抓屏的方式获得各个用户的视频流传送至用户的客户端对用户进行显示,也即是说客户端仅仅相当于一个显示器的作用,从而降低对用户所使用的计算机的配置要求。
尽管通过抓屏方式能够实现各个用户视屏流的独立传输,但是对于云主机而言,其仅仅只具有一个音频设备,各个用户的操作程序产生的音频数据均需要通过该音频设备输出并串流到每个客户端,也即是说每个用户的操作程序产生的所有音频数据均会同时串流到每个客户端,用户通过客户端接收到的是所有用户的操作程序产生的音频数据,导致音频数据错乱的问题。
为此,本申请中提供了一种能够在一定程度上实现各个用户的音频数据独立串流的技术方案。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,图1为本申请实施例提供的多用户云主机的音频数据串流方法的流程示意图,该音频数据串流的方法可以包括:
S11:预先创建至少一个虚拟音频设备。
S12:当接收到新的客户端连接接入的信号时,在虚拟音频设备中选择未分配的虚拟音频设备的分配给新接入的客户端。
可以理解的是,本实施例中所指的客户端也即是用户实际操作的显示设备,其充当了云主机的显示器和音频播放器,云主机将用户操作的操作进程(例如游戏进程)的显示界面以及音频数据串流到客户端,使得用户从客户端观看到视频操作界面和音频,在视觉效果和听觉效果上均和直接在客户端上操作相同,而操作进程运行性能上却能够大幅度提升的操作体验。
在实际应用过程中,该可以先创建多个虚拟音频设备,并创建各个虚拟音频设备的管理列表,该管理列表中记录有每个虚拟音频设备是否分配有对应的客户端以及分配的是哪一个客户端等信息。
每次接入一个新的客户端时,即可通过查询该管理列表,在未被分配的虚拟音频设备中选取一个虚拟音频设备分配给客户端。
当然,也可以每次新接入一个客户端时,就创建一个新的虚拟音频设备,并将新创建的虚拟音频设备分配给新接入的客户端,同样在管理列表中记录该虚拟音频设备的相关信息。
当然,因为在该过程中不仅仅有新的客户端接入,也同样存在客户端退出。那么当存在客户端退出,其对应的虚拟音频设备也就被释放出来,重新变为未被分配的虚拟音频设备,在下一个客户端接入时,即可重新被分配。
S13:将客户端的操作进程中的audio session和客户端分配的虚拟音频设备进行绑定。
S14:当audio session中产生音频数据时,则通过audio session绑定的虚拟音频设备获取音频数据并输出至客户端。
在用户通过客户端打开某一个操作进程时,若是该操作进程是存在audiosession(音频会议)的,则操作进程中自动生成audio session,将该audio session和对应的客户端分配的虚拟音频设备进行绑定,那么该audio session在操作进程运行过程中产生的音频数据即可通过虚拟音频设备输出。
需要说明的是,每个用户的操作进程尽管是在云主机上运行,但操作进程是一个独立的运行程序,在运行程序中产生的数据,云主机的主控CPU并不能轻易获知,虚拟音频设备相当于操作进程输出音频数据的一个输出端口,云主机基于该输出端口即可获得该音频数据。当然,尽管云主机也可以通过某些其他方式获得该音频数据,但是一般需要操作进程的运行程序编码进行修改,而一种操作程序例如云游戏的开发过程本身就较为复杂,再对操作程序本身进行修改显然是较为困难的。
为此,本申请中并不对用户操作运行的操作进程本身做任何修改,而是创建多个虚拟音频设备,相当于为每个用户的操作进程各分配一个音频数据的输出端口,相对于各个用户的操作进程共用云主机的实体音频设备作为输出端口而言,使得每个用户的操作进程产生的音频数据分别从各自对应的虚拟音频设备独立输出互不干扰,而云主机根据各个虚拟音频设备和客户端之间的对应分配关系,即可将各个虚拟音频设备输出的音频数据串流发送至各个客户端,使得用户通过客户端接收到的音频数据仅仅只包含其自身的操作进程对应的音频数据,而不包括其他用户的操作进程对应的音频数据。
可以理解的是,在云主机进行音频数据进行串流时,不仅仅包含有需要向客户端输出的音频数据,用户也可以通过客户端输入音频数据。因此,当用户通过客户端输入音频数据时,该音频数据可以串流输入该客户端对应的虚拟音频设备,作为操作进程运行过程中的输入数据。
例如,在云游戏服务中,可能存在多个用户联网进行同一款游戏的操作,各个用户之间需要进行语音聊天,由此用户通过该客户端对应的虚拟音频设备输入语音数据后,即可通过游戏进程转发至另一个用户。
综上所述,本申请预先创建多个虚拟音频设备,在用户的客户端接入云主机时,为每个客户端分配一个虚拟音频设备,使得每个用户操作运行的操作进程中产生的音频数据可以通过各自对应的虚拟音频设备独立输出以串流到对应的客户端,避免了各个用户的操作进程中产生的音频数据混合输出至每个客户端,造成用户无法接受正常音频数据的问题。
基于上述实施例,在本申请的另一可选的实施例中,将客户端对应的操作进程中的audio session和客户端分配的虚拟音频设备进行绑定的过程可以包括:
按照预定时间周期查询各个操作进程对应的audio session是否均已经绑定虚拟音频设备;
若存在未绑定虚拟音频设备的audio session,则将未绑定虚拟音频设备的audiosession和audio session对应的客户端分配的虚拟音频设备进行绑定;audio session对应的客户端为audio session对应的操作进程所属的客户端。
如前所述,在客户端接入到云主机时,如果用户通过客户端在云主机上打开的操作进程中包含有audio session,操作进程中会自动创建audio session,可以在每个audiosession被创建时就将其和对应的客户端分配的虚拟音频设备进行绑定,但audio session是操作进程自动创建的,云主机并不一定能够在audio session创建完成之后立即获知,为此,可以周期性的对已有的audio session进行枚举,并检测是否每个audio session都已经和对应的虚拟音频设备进行了绑定,若是未绑定,在基于该audio session所对应的操作进程查找对应的虚拟音频设备进行绑定。
对于同一个客户端在云主机上打开的操作进程可能存在多个子进程,且一个用户还可能同时打开多个子进程,每个子进程中分别具有其对应的audio session,每个客户端都只分配一个虚拟音频设备,该客户端对应的多个子进程的audio session生成的音频数据也应该和同一个虚拟音频设备绑定。
为此,在本申请的一种可选地实施例中,当客户端接入云主机时,可以为每个客户端创建一个JobObject(作业对象),JobObject是Windows提供的批量管理一组进程的方式。将该客户端的用户在云主机上打开的操作进程绑定到对应的JobObject上,那么后续操作过程中,用户打开的操作进程的子进程被打开运行时,该子进程也能够自动绑定到对应的JobObject上,该JobObject中包含有绑定在该JobObject上的所有操作进程的进程列表,JobObject的进程列表中记载有每个操作进程对应的audio session是否绑定有虚拟音频设备以及对应的客户端等信息,从而实现同一个客户端所有操作进程通过同一个JobObject管理。
在确定audio session是否绑定对应的虚拟音频设备时,可以先基于该audiosession所属操作进程的进程ID查询获得audio session所属操作进程对应的JobObject,再基于JobObject的进程列表中记载有每个操作进程对应的audio session是否绑定有虚拟音频设备,若是未绑定虚拟音频设备,则查询audio session对应的JobObject所属的客户端,再将该客户端分配的虚拟音频设备和audio session进行绑定。
综上所述,对于各个audio session和虚拟音频设备之间进行绑定时,可以在各个操作进程打开运行创建audio session时,就绑定对应的虚拟音频设备,也可以通过周期性的枚举检测audio session是否存在audio session未绑定虚拟音频设备的情况,若存在,将未绑定虚拟音频设备的audio session绑定对应的虚拟音频设备即可。
为了进一步地说明本申请中音频数据串流的过程,下面以云游戏的音频数据串流过程为例进行说明。
如图2所示,图2为本申请实施例提供多用户云游戏的音频管理系统示意图,包括云游戏平台、云主机集群以及客户端,每台云主机包含有音频管理模块和串流模块,在云主机上预先先通过虚拟声卡驱动创建多个带有特定名称前缀的虚拟音频设备,虚拟音频设备名称统一添加特定前缀用于区分,以创建了3个虚拟音频设备为例,可为3个用户提供云游戏服务。
云主机中的音频管理模块先进行初始化工作,通过Windows提供的IMMDeviceEnumerator::EnumAudioEndpoints接口枚举云主机上所有音频设备,枚举结果可能包含真实音频设备及虚拟音频设备,通过虚拟音频设备特定名称前缀区分所有虚拟音频设备的设备ID,并记录各个虚拟音频设备的设备ID、是否被分配给客户端等信息记录到音频设备列表中。此时,云主机已经准备好为用户提供服务。
用户选择一款想要玩的游戏后,云平台会调度一台可以提供服务的云主机,通知云主机上的游戏程序准备提供服务。当用户的客户端连接到该云主机时,音频管理模块会遍历虚拟音频设备列表,找到一个未被分配的虚拟音频设备,将该虚拟音频设备打上已分配标记;音频管理模块还会将该虚拟音频设备的ID通知给串流模块,作为需要进行音频数据串流的虚拟音频设备。
音频管理模块可调用CreateJobObject为用户创建一个JobObject,程序通过CreateProcess打开用户选择的游戏对应的进程后,会调用AssignProcessToJobObject将该进程绑定到JobObject中,这样,此进程创建的各个子进程都会自动添加到JobObject中。
音频管理模块通过IAudioSessionManager2:GetSessionEnumerator定时枚举云主机上所有的audio session,对于每个枚举到的audio session,查询audio session对应的游戏进程是否进行过虚拟音频设备的绑定;若未绑定,可认为当前audio session是新创建的。对于新创建的audio session,通过IAudioSessionControl2::GetProcessId查询其所属游戏进程ID,再通过QueryInformationJobObject查找各个JobObject包含的进程列表,若发现该游戏进程在某个JobObject的进程列表中,即可调用IAudioPolicyConfigFactory::SetPersistedDefaultAudioEndpoint将audio session绑定到JobObject所属用户的虚拟音频设备上,由此可以实现多用户环境下的音频隔离。
下面对本发明实施例提供的多用户云主机的音频数据串流装置进行介绍,下文描述的多用户云主机的音频数据串流装置与上文描述的多用户云主机的音频数据串流方法可相互对应参照。
图3为本发明实施例提供的多用户云主机的音频数据串流装置的结构框图,参照图3的多用户云主机的音频数据串流装置可以包括:
设备创建模块100,用于预先创建至少一个虚拟音频设备;
设备分配模块200,用于当接收到新的客户端连接接入的信号时,在虚拟音频设备中选择待分配的虚拟音频设备中分配给新接入的客户端;
设备绑定模块300,用于将客户端的操作进程中的audio session和客户端分配的虚拟音频设备进行绑定;
数据串流模块400,用于当audio session中产生音频数据时,则通过audiosession绑定的虚拟音频设备获取音频数据并输出至客户端。
在本申请的一种可选地实施例中,所述设备绑定模块300用于按照预定时间周期查询各个所述操作进程对应的audio session是否均已经绑定所述虚拟音频设备;若存在未绑定所述虚拟音频设备的audio session,则将未绑定所述虚拟音频设备的所述audiosession和所述audio session对应的所述客户端分配的虚拟音频设备进行绑定;所述audio session对应的客户端为所述audio session对应的操作进程所属的客户端。
在本申请的一种可选地实施例中,所述设备绑定模块300用于查询所述audiosession所属操作进程的进程ID;通过所述进程ID查询所述audio session所属操作进程对应的JobObject;其中,每个所述客户端的操作进程均绑定在预先创建的所述客户端对应的JobObject中;根据所述audio session对应的所述JobObject中的进程列表,查询所述audio session是否绑定虚拟音频设备的信息;若存在未绑定所述虚拟音频设备的audiosession,则将所述audio session和对应的所述JobObject所述的客户端分配的虚拟音频设备进行绑定。
在本申请的一种可选地实施例中,还包括数据输入模块,用于当接收到所述客户端输入的输入音频数据时,将所述输入音频数据输入所述客户端分配的虚拟音频设备。
本实施例的多用户云主机的音频数据串流装置用于实现前述的多用户云主机的音频数据串流方法,因此多用户云主机的音频数据串流装置中的具体实施方式可见前文中的多用户云主机的音频数据串流方法的实施例部分,在此不再赘述。
本申请还提供了一种多用户云主机的音频数据串流设备的实施例,该设备可以包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上任一项所述的多用户云主机的音频数据串流方法的操作步骤。
该处理器所执行的多用户云主机的音频数据串流方法的过程可以包括:
预先创建至少一个虚拟音频设备;当接收到新的客户端连接接入的信号时,在虚拟音频设备中选择待分配的虚拟音频设备中分配给新接入的客户端;将客户端的操作进程中的audio session和客户端分配的虚拟音频设备进行绑定;当audio session中产生音频数据时,则通过audio session绑定的虚拟音频设备获取音频数据并输出至客户端。
本申请中所提供的多用户云主机的音频数据串流设备,能够实现各个用户的客户端对应的操作进程数据独立串流,避免了每个用户均能够接收到所有用户的音频数据的问题,提升用户通过云主机实现各种操作进程运行的使用体验。
本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行以实现如上任一项所述的多用户云主机的音频数据串流方法的操作步骤。
该计算机可读存储介质可以包括随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
1.一种多用户云主机的音频数据串流方法,其特征在于,包括:
预先创建至少一个虚拟音频设备;
当接收到新的客户端连接接入的信号时,在所述虚拟音频设备中选择未分配的虚拟音频设备的分配给新接入的所述客户端;
将所述客户端对应的操作进程中的audio session和所述客户端分配的所述虚拟音频设备进行绑定;
当所述audio session中产生音频数据时,通过所述audio session绑定的所述虚拟音频设备获取所述音频数据并输出至所述客户端。
2.如权利要求1所述的多用户云主机的音频数据串流方法,其特征在于,将所述客户端对应的操作进程中的audio session和所述客户端分配的所述虚拟音频设备进行绑定,包括:
按照预定时间周期查询各个所述操作进程的audio session是否均已经绑定所述虚拟音频设备;
若存在未绑定所述虚拟音频设备的audio session,则将未绑定所述虚拟音频设备的所述audio session和所述audio session对应的所述客户端分配的虚拟音频设备进行绑定;所述audio session对应的客户端为所述audio session对应的操作进程所属的客户端。
3.如权利要求2所述的多用户云主机的音频数据串流方法,其特征在于,按照预定时间周期查询各个所述操作进程的audio session是否均已经绑定所述虚拟音频设备,包括:
查询各个所述audio session所属操作进程的进程ID;
通过所述进程ID查询每个所述audio session所属操作进程对应的JobObject;其中,每个所述客户端对应的操作进程均绑定在所述客户端对应的JobObject中;
根据所述audio session对应的所述JobObject中的进程列表,查询所述audiosession是否绑定虚拟音频设备的信息;
将所述audio session和所述audio session对应的所述客户端分配的虚拟音频设备进行绑定,包括:
将所述audio session和对应的所述JobObject所属的客户端分配的虚拟音频设备进行绑定。
4.如权利要求1所述的多用户云主机的音频数据串流方法,其特征在于,还包括:
当接收到所述客户端输入的输入音频数据时,将所述输入音频数据输入所述客户端分配的虚拟音频设备。
5.一种多用户云主机的音频数据串流装置,其特征在于,包括:
设备创建模块,用于预先创建至少一个虚拟音频设备;
设备分配模块,用于当接收到新的客户端连接接入的信号时,在所述虚拟音频设备中选择未分配的虚拟音频设备的分配给新接入的所述客户端;
设备绑定模块,用于将所述客户端对应的操作进程中的audio session和所述客户端分配的所述虚拟音频设备进行绑定;
数据串流模块,用于当所述audio session中产生音频数据时,通过所述audiosession绑定的所述虚拟音频设备获取所述音频数据并输出至所述客户端。
6.如权利要求5所述的多用户云主机的音频数据串流装置,其特征在于,所述设备绑定模块用于按照预定时间周期查询各个所述操作进程的audio session是否均已经绑定所述虚拟音频设备;若存在未绑定所述虚拟音频设备的audio session,则将未绑定所述虚拟音频设备的所述audio session和所述audio session对应的所述客户端分配的虚拟音频设备进行绑定;将所述audio session和对应的所述JobObject所属的客户端分配的虚拟音频设备进行绑定。
7.如权利要求6所述的多用户云主机的音频数据串流装置,其特征在于,所述设备绑定模块用于查询各个所述audio session所属操作进程的进程ID;通过所述进程ID查询每个所述audio session所属操作进程对应的JobObject;其中,每个所述客户端对应的操作进程均绑定在所述客户端对应的JobObject中;根据所述audio session对应的所述JobObject中的进程列表,查询所述audio session是否绑定虚拟音频设备的信息;若存在未绑定所述虚拟音频设备的audio session,则将所述audio session和对应的所述JobObject所述的客户端分配的虚拟音频设备进行绑定。
8.如权利要求5所述的多用户云主机的音频数据串流装置,其特征在于,还包括数据输入模块,用于当接收到所述客户端输入的输入音频数据时,将所述输入音频数据输入所述客户端分配的虚拟音频设备。
9.一种多用户云主机的音频数据串流设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至4任一项所述的多用户云主机的音频数据串流方法的操作步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行以实现如权利要求1至4任一项所述的多用户云主机的音频数据串流方法的操作步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110023642.3A CN112631736A (zh) | 2021-01-08 | 2021-01-08 | 云主机的音频数据串流方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110023642.3A CN112631736A (zh) | 2021-01-08 | 2021-01-08 | 云主机的音频数据串流方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112631736A true CN112631736A (zh) | 2021-04-09 |
Family
ID=75293896
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110023642.3A Pending CN112631736A (zh) | 2021-01-08 | 2021-01-08 | 云主机的音频数据串流方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112631736A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114598931A (zh) * | 2022-03-08 | 2022-06-07 | 杭州雾联科技有限公司 | 一种多开云游戏的串流方法、系统、装置及介质 |
-
2021
- 2021-01-08 CN CN202110023642.3A patent/CN112631736A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114598931A (zh) * | 2022-03-08 | 2022-06-07 | 杭州雾联科技有限公司 | 一种多开云游戏的串流方法、系统、装置及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10912997B2 (en) | Game execution environments | |
US11030025B2 (en) | Managing inter-process communications in a containerized application environment | |
EP2609520B1 (en) | Add-on management | |
CN102202078B (zh) | 一种用于配置服务器场的多个异类角色的方法和系统 | |
WO2016177079A1 (zh) | 云桌面资源的处理方法及装置 | |
CN104813309A (zh) | 用于远程显示器的基于云的虚拟化图形处理方法和系统 | |
WO2010141492A1 (en) | Game execution environments | |
JP2015517158A (ja) | コンピュータ・システムのハードウエア資源を仮想化する方法とシステムと実行可能なピース・オブ・コード | |
JP2013094386A (ja) | ユーザ編成装置、ユーザ編成方法、およびクラウドコンピューティングシステム | |
CN116382849A (zh) | 基于云的音频/视频操作系统 | |
CN104050013B (zh) | 虚拟桌面处理方法、装置及虚拟桌面服务器 | |
US20100077019A1 (en) | Redirection of multiple remote devices | |
CN110025957A (zh) | 一种云游戏服务器端架构、客户端和系统 | |
JP2012123459A (ja) | 仮想環境管理システム、及びその制御方法 | |
JP2023517367A (ja) | 仮想シーンのデータ処理方法、装置、電子機器及びプログラム | |
US8666096B2 (en) | Device and process for using audio plug-ins in a mixer | |
CN112631736A (zh) | 云主机的音频数据串流方法、装置、设备及存储介质 | |
CN114598931A (zh) | 一种多开云游戏的串流方法、系统、装置及介质 | |
CN112416497A (zh) | 图像的显示处理方法及装置、点播系统 | |
CN102387118B (zh) | 一种数据输出方法及装置 | |
CN112887786A (zh) | 视频播放方法、装置及计算机可读介质 | |
CN114168254A (zh) | 一种数据处理方法、装置及设备 | |
US10659732B2 (en) | Apparatus for providing multi-party conference and method for assigning encoder thereof | |
JP2023152877A (ja) | 音声システム及び方法 | |
CN117290003A (zh) | 云终端的外设重定向方法、云终端、电子设备及介质 |
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 |