CN101763238A - 提高音频播放质量的方法、音频数据采集方法及系统 - Google Patents
提高音频播放质量的方法、音频数据采集方法及系统 Download PDFInfo
- Publication number
- CN101763238A CN101763238A CN200810241068A CN200810241068A CN101763238A CN 101763238 A CN101763238 A CN 101763238A CN 200810241068 A CN200810241068 A CN 200810241068A CN 200810241068 A CN200810241068 A CN 200810241068A CN 101763238 A CN101763238 A CN 101763238A
- Authority
- CN
- China
- Prior art keywords
- voice data
- operating system
- client operating
- dummy machine
- 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.)
- Granted
Links
Images
Abstract
本发明提供了提高音频播放质量的方法、音频数据采集方法及系统。其中,所述提高音频播放质量的方法包括:所述方法包括:按照预定时间,获取所述客户操作系统的待播放的音频数据并缓存,其中,获取的音频数据量大于所述物理声卡音频数据需求量;根据所述物理声卡的音频播放参数,将缓存的音频数据发送给所述物理声卡进行播放。按照本发明,可以提高客户操作系统声音播放性能,改善用户体验。
Description
技术领域
本发明涉及虚拟机技术领域,具体涉及一种提高虚拟机系统音频播放质量的方法、音频数据采集方法及虚拟机系统。
背景技术
模拟声音在时间上是连续的,而数字音频是一个数据序列,在时间上是断续的。由于人脑处理信息需要花费一定的时间,因此人类的听觉特性存在时域掩蔽(在时间上相邻的声音相互之间有掩蔽的现象),因此当数字音频的采样频率达到一定频率时就会感觉声音是连续的,而当数字音频出现明显的断续,间隔时间超过时域掩蔽时,人耳就能分辨出这个断续。通常,计算机系统中,声卡每隔10ms获取一次数据,以保证人耳能连贯舒畅地听到声音。
现有的虚拟化技术中,以模拟方式来使用真实物理设备的虚拟机系统主要包括基于Xen的虚拟机系统和基于Vmware的虚拟机系统。上述虚拟机系统中,由于存在服务操作系统或宿主操作系统的调度,因此运行中的客户操作系统是不能完全占用真实的CPU时间,而客户操作系统中的虚拟声卡仍然是每隔10ms获取一次音频数据,这就会造成一个问题:客户操作系统的虚拟声卡基于客户操作系统的调度每隔10ms获取一次音频数据,但虚拟机系统并不能保证客户操作系统每隔10ms都能占用到真实的CPU时间,客户操作系统认为自己仍然是每隔10ms获取一次音频数据,但物理声卡获取到音频数据的真实时间间隔可能大于10ms,进而导致客户操作系统所播放的声音不能完全连续地被播放。事实上,现有的虚拟机系统中,在客户操作系统中播放音乐文件时声音性能较差,用户可以听到明显的刺啦声或者感觉到声音停顿,严重影响了用户体验。
发明内容
本发明实施例所要解决的技术问题是提供一种提高虚拟机系统音频播放质量的方法、音频数据采集方法及虚拟机系统,提高客户操作系统声音播放性能,改善用户体验。
为解决上述技术问题,本发明实施例提供方案如下:
一种虚拟机系统,包括:
硬件平台,所述硬件平台至少包括CPU和物理声卡;
运行在所述硬件平台上的虚拟机管理器;以及,
运行在所述虚拟机管理器上的至少一个客户操作系统,
所述客户操作系统包括:
前端驱动,用于按照预定时间,获取所述客户操作系统的待播放的音频数据并发送出去,其中,获取的音频数据量大于所述物理声卡需要播放的音频数据需求量;
所述虚拟机系统还包括一后端驱动,分别与所述前端驱动和所述物理声卡连接,用于接收并缓存所述音频数据,得到第二音频数据,并将所述第二音频数据发送给所述物理声卡进行播放。
优选地,上述的虚拟机系统中,还包括:
应用程序模块,用于生成所述客户操作系统的待播放的音频数据。
优选地,上述的虚拟机系统中,所述前端驱动包括:
获取单元,用于按照预定时间间隔,逐次提取所述客户操作系统的待播放的音频数据,其中,所述每次提取的音频数据量大于所述物理声卡音频数据需求量;
发送单元,用于将所述获取单元每次提取的音频数据发送给所述后端驱动;
所述后端驱动包括:
缓存单元,用于接收并缓存所述前端驱动发送的音频数据;
播放单元,用于根据所述物理声卡的音频播放参数,将缓存单元中的音频数据发送给所述物理声卡进行播放。
优选地,上述的虚拟机系统中,所述物理声卡音频数据需求量等于所述物理声卡音频数据播放速率与所述预定时间间隔的乘积。
优选地,上述的虚拟机系统中,所述后端驱动还包括一第一流控单元,用于根据所述缓存单元中的音频数据量向所述前端驱动发送流量控制消息;
所述前端驱动还包括一第二流控单元,用于接收所述第一流控单元发送的所述流量控制消息,并根据所述流量控制消息控制所述获取单元执行相应的流量控制处理。
优选地,上述的虚拟机系统中,所述第一流控单元包括:
判断单元:用于判断所述缓存单元中的数据量是否大于预定的第一阈值以及是否小于预定的第二阈值,其中,所述第一阈值大于所述第二阈值;
流量控制消息发送单元,用于在所述缓存单元中的数据量大于所述第一阈值时,向所述前端驱动发送用于请求暂停音频数据发送的第一流量控制消息,以及在所述缓存单元中的数据量小于所述第二阈值时,向所述前端驱动发送用于请求发送音频数据的第二流量控制消息,其中,所述第一阈值大于第二阈值;
所述第二流控单元包括:
流量控制消息接收单元,用于接收所述第一流量控制消息和/或第二流量控制消息;
控制单元,用于在接收到所述第一流量控制消息时暂停所述获取单元,以及在接收到所述第二流量控制消息时重启所述获取单元。
优选地,上述的虚拟机系统中,所述虚拟机系统还包括有一服务操作系统,所述后端驱动设置在所述服务操作系统或所述虚拟机管理器中。
优选地,上述的虚拟机系统中,所述虚拟机系统还包括有一宿主操作系统,所述后端驱动设置在所述宿主操作系统或所述虚拟机管理器中。
本发明实施例还提供了一种提高虚拟机系统音频播放质量的方法,所述虚拟机系统包括一物理声卡和一客户操作系统,所述方法包括:
按照预定时间,获取所述客户操作系统的待播放的音频数据并缓存,其中,获取的音频数据量大于所述物理声卡音频数据需求量;
根据所述物理声卡的音频播放参数,将缓存的音频数据发送给所述物理声卡进行播放。
优选地,上述方法中,所述客户操作系统的待播放的音频数据是由所述客户操作系统的应用程序生成的。
优选地,上述方法中,所述按照预定时间,获取所述客户操作系统的待播放的音频数据是:按照预定时间间隔,逐次提取所述客户操作系统的待播放的音频数据;
所述物理声卡音频数据需求量等于所述物理声卡音频数据播放速率与所述预定时间的乘积。
优选地,上述方法中,还包括:
根据当前缓存的音频数据量,对所述音频数据的获取执行相应的流量控制处理。
优选地,上述方法中,所述流量控制处理包括:
在当前缓存的音频数据量大于预定的第一阈值时,停止获取所述待播放的音频数据;以及在当前缓存的音频数据量小于预定的第二阈值时,继续获取所述待播放的音频数据,其中,所述第一阈值大于第二阈值。
优选地,上述方法中,所述虚拟机系统还包括一后端驱动和一设置在所述客户操作系统中的前端驱动;
进一步由所述前端驱动,每次间隔预定时间间隔,逐次提取客户操作系统的待播放的音频数据并发送给所述后端驱动;所述后端驱动接收并缓存所述前端驱动发送的音频数据,并根据所述物理声卡的音频播放参数,将缓存的音频数据发送给所述物理声卡进行播放。
优选地,上述方法中,所述虚拟机系统还包括一宿主操作系统,进一步将所述后端驱动设置在所述宿主操作系统或所述虚拟机管理器中。
优选地,上述方法中,所述虚拟机系统还包括有一服务操作系统,进一步将所述后端驱动设置在所述服务操作系统或所述虚拟机管理器中。
本发明另一实施例还提供了一种虚拟机系统的音频数据采集方法,所述虚拟机系统包括一音频采集模块和一客户操作系统,所述方法包括:
接收并缓存所述音频采集模块采集到的音频数据;
客户操作系统按照预定时间获取所述音频数据,并将获取的音频数据发送至预定应用程序,其中,获取的音频数据量大于所述预定应用程序正常处理音频数据时所需的数据量。
优选地,上述方法中,所述预定应用程序接收并缓存所述客户操作系统发送的音频数据,并对缓存的音频数据进行相应的处理。
优选地,上述方法中,所述预定应用程序是用于保存音频数据的应用程序或用于播放音频数据的应用程序,所述预定应用程序设置在所述客户操作系统中或者设置在与所述虚拟机系统连接的远端计算机系统中。
本发明另一实施例还提供了一种虚拟机系统,包括:
硬件平台,所述硬件平台至少包括CPU和音频采集模块;
运行在所述硬件平台上的虚拟机管理器;以及,
运行在所述虚拟机管理器上的至少一个客户操作系统,
所述虚拟机系统还包括一后端驱动,与所述音频采集模块连接,用于接收并缓存所述音频采集模块采集到的音频数据;
所述客户操作系统包括:
前端驱动,与所述后端驱动连接,用于按照预定时间,获取所述后端驱动缓存的音频数据并发送至预定应用程序模块,其中,获取的音频数据量大于所述预定应用程序模块正常处理音频数据时所需的数据量。
优选地,上述虚拟机系统中,所述预定应用程序模块设置在所述客户操作
系统中或者设置在与所述虚拟机系统连接的远端计算机系统中。
从以上所述可以看出,本发明实施例提供的一种提高虚拟机系统音频播放质量的方法、音频数据采集方法及虚拟机系统,当客户操作系统中的某个应用程序播放音频文件时,前端驱动预取过量的音频数据,然后通过通信通道交给后端驱动,后端驱动再将音频数据发送到真实的物理声卡进行播放,这样可以保证后端驱动中提前存储了待播放的音频数据,减少甚至避免了客户操作系统中播放声音出现停顿或延时。本发明实施例中还采用采用预取数据和流量控制相结合的方法,后端驱动通过流量控制通知前端驱动传递足够或合适的数据给后端驱动用于播放,从而让真实的声卡能平稳的播放音频数据,避免后端驱动中数据溢出导致系统出错、以及避免因缓存数据量过少导致播放声音不连续的问题,从而进一步提高声音播放质量,改善用户体验。本发明实施例还提供了一种音频数据采集方法及相应的虚拟机系统,提高了音频数据的采集质量。
附图说明
图1为本发明实施例一中所述虚拟机系统的结构示意图;
图2为本发明实施例二中所述虚拟机系统的结构示意图;
图3为本发明实施例二中提高音频播放质量的方法的流程图;
图4为本发明实施例三中所述虚拟机系统的结构示意图;
图5为本发明实施例四中所述虚拟机系统的结构示意图。
具体实施方式
本发明实施例在虚拟机系统中采用前、后端驱动的结构,前端驱动通过预取适量的音频数据,由后端驱动负责播放音频数据,本发明实施例可以提高客户操作系统声音播放性能,改善用户体验。以下结合附图对本发明的具体实施例作进一步说明。
<实施例一>
本实施例以基于Xen的虚拟机系统为例进行说明。
图1为本实施例所述的虚拟机系统,如图1所示,本实施例中虚拟机系统包括:
硬件平台10,所述硬件平台至少包括CPU 102和物理声卡101;
运行在所述硬件平台之上的、与硬件平台连接的虚拟机管理器11;以及,
运行在虚拟机管理器11上的服务操作系统13和至少一个客户操作系统12。图1中仅示出了一个客户操作系统。
如图1所示,客户操作系统12又具体包括:
应用程序122,用于处理得到客户操作系统12将要播放的音频数据。这里,应用程序可以是任何现有的能够播放音频的应用程序,例如,Windows视窗系统所提供的媒体播放器(Windows Media Player)。该应用程序可以对音频文件进行解码处理,得到待播放的音频数据。
前端驱动121,与应用程序122连接,用于按照预定时间间隔,从应用程序122处获取音频数据并发送出去,其中,前端驱动121每次所获取的音频数据量大于物理声卡101音频数据播放速率与所述时间间隔的乘积。
图1中,服务操作系统13中包括一后端驱动131,该后端驱动131分别与所述前端驱动和所述物理声卡连接,用于接收并缓存所述前端驱动121发送的音频数据,并根据所述物理声卡101的音频播放参数,将缓存的音频数据发送给所述物理声卡101进行播放。这里,后端驱动131与真实的物理声卡101连接,它能够根据物理声卡的音频播放参数,确定当前需要播放音频数据的数据量,即后端驱动131可以根据物理声卡的音频播放参数,发送适量的音频数据给物理声卡101用以播放。
这里,前端驱动121用于向客户操作系统12提供一个模拟的声卡驱动,客户操作系统12中所有的音频数据都会经过前端驱动121。服务操作系统13中的后端驱动131相当于一个流媒体播放器,用于缓存从前端驱动121传输过来的音频数据并实时播放。前、后端驱动之间可以通过通信通道(包括网络或者共享内存等方式)进行通信。
较佳的,所述预定时间间隔为10ms。由于虚拟机系统不能保证客户操作系统12每隔10ms能够被调度到,因此,客户操作系统12中的前端驱动121每次预取过量的音频数据并发送给后端驱动131。这里,所述的过量的音频数据是指:每次预取的音频数据量大于物理声卡101在所述预定时间间隔中所播放的音频数据量。这样,前端驱动121每次都会获取到过量的音频数据并发送给后端驱动131,后端驱动131的缓存中保存有一部分尚未播放的音频数据,在客户操作系统12的调度间隔大于10ms时,后端驱动131可以继续播放缓存中的音频数据,从而可以避免或减少声音停顿等不良效果的出现,达到改善用户体验的目的。
举例说明前端驱动121的音频数据预取:
假设物理声卡的播放参数为:播放44.1kHz双声道每声道2字节的音频。此时,客户操作系统中的前端驱动正常情况下每隔10ms获取一次音频数据,每次获取的音频数据量为:44.1*1000*2*2/100=1764字节,每秒钟共获取176400字节的音频数据。现有技术中,客户操作系统的音频数据经常不能及时获取到,即每10毫秒少于1764个字节,从而导致声音断续。本实施例采用预取数据的方法,前端驱动提前获取待播放的音频数据,每10毫秒/次获取大于1764字节的音频数据,再发送给服务操作系统中的后端驱动。这样可以保证后端驱动中提前存储了待播放的音频数据,减少甚至避免了客户操作系统中播放声音出现停顿或延时。前端驱动每次预取的音频数据量可以根据客户操作系统的调度周期、后端驱动的缓存大小等因素综合确定,例如,在客户操作系统的调度周期较长,或后端驱动的缓存较大时,可以每次预取的数据量可以适当增大;反之,每次预取的数据量可以适当减小。
需要说明的是,在客户操作系统12中,前端驱动121是基于客户操作系统12的系统时间,按照预定时间间隔从应用程序122处获取音频数据并发送出去。但对于整个虚拟机系统来说,只有在客户操作系统12被调度到后,前端驱动121才能真正地去获取音频数据。因此,前端驱动121会认为它获取音频数据的时间间隔是固定的,而实际上该时间间隔可能随着虚拟机系统的具体调度情况而变化。
以下详细说明本实施例中虚拟机系统中的各个部件之间的数据交互。
当客户操作系统12中的应用程序122播放音频文件需要访问声卡设备时,前端驱动121从应用程序122处获取音频数据。然后,前端驱动121通过VMCall指令(虚拟机管理器从客户操作系统的None-Root运行模式陷入虚拟机管理器的Root运行模式的CPU指令),并使用寄存器或者共享内存将音频数据传送给虚拟机管理器11。虚拟机管理器11通过主动通知方式(例如中断注入)或等待查询方式(例如,后端驱动定时查询或实时查询),通知后端驱动131。后端驱动131获知有客户操作系统12有声卡访问需求后,到存储设备访问数据的寄存器或者共享内存中获取音频数据并缓存。并且,在获取音频数据之后,后端驱动131通过虚拟机管理器11提供的设备调用接口对声卡设备101进行访问,将音频数据发送给物理声卡101进行播放。
<实施例二>
本实施例以基于Vmware的虚拟机系统为例进行说明。
图2为本实施例所述虚拟机系统的结构示意图,与图1不同的是,本实施例中后端驱动131设置在宿主操作系统14(HOS)中,而不是在服务操作系统(SOS)中。除此之外,本实施例与实施例一中的各个对应模块的功能作用相同,此处不再一一赘述。
另外,由于预取音频数据造成每次前端驱动发送到后端驱动的音频数据总是比实际播放的音频数据多,当播放连续声音文件时会造成后端驱动中缓存的数据越积越多,当缓存数据量超出后端驱动的缓存容量时会造成系统出错。因此,本实施例进一步在后端驱动中增加流量控制,对前端驱动发送过来的等待播放的音频数据总量进行控制。
具体的流量控制方式可以是:根据缓存中的音频数据量,当大于第一阈值时后端驱动通知前端驱动停止预取数据,当小于第二阈值时通知前端驱动继续预取数据。流量控制方式还可以是:仅设置一个阈值,当缓存中的音频数据量大于该阈值时后端驱动通知前端驱动停止预取数据,当小于该阈值时通知前端驱动继续预取数据。具体的,阈值设置可以根据当前播放音频的采样率、编码方式、声道数量等灵活调整,在性能和效率间做最佳的权衡。
为此,本实施例所述虚拟机系统中,后端驱动131可以包括:
缓存单元,用于接收并缓存所述前端驱动发送的音频数据;
播放单元,用于根据所述物理声卡的音频播放参数,将缓存单元中的音频数据发送给所述物理声卡进行播放;以及,
第一流控单元,用于根据所述缓存单元中的音频数据量向所述前端驱动发送流量控制消息。
前端驱动121可以包括:
获取单元,用于按照预定时间间隔,从所述应用程序处获取音频数据,其中,每次所获取的音频数据量大于所述物理声卡音频数据播放速率与所述时间间隔的乘积;
发送单元,用于将所述获取单元每次获取的音频数据发送给所述后端驱动;以及,
第二流控单元,用于接收所述第一流控单元发送的流量控制消息,并根据所述流量控制消息控制所述获取单元执行相应的流量控制处理。
更为具体的,所述第一流控单元包括:
判断单元:用于判断所述缓存单元中的数据量是否大于预定第一阈值以及是否小于预定的第二阈值;
流量控制消息发送单元,用于在所述缓存单元中的数据量大于所述第一阈值时,向所述前端驱动发送用于请求暂停音频数据发送的第一流量控制消息,以及在所述缓存单元中的数据量大于所述第二阈值时,向所述前端驱动发送用于请求发送音频数据的第二流量控制消息,其中,所述第一阈值大于第二阈值;
所述第二流控单元包括:
流量控制消息接收单元,用于接收所述第一流量控制消息和/或第二流量控制消息;
控制单元,用于在接收到所述第一流量控制消息时,暂停所述获取单元以停止获取所述音频数据,以及在接收到所述第二流量控制消息时,重启所述获取单元以继续获取所述音频数据。
本实施例中,当客户操作系统中的某个应用程序播放音频文件时,前端驱动预取音频数据,然后通过通信通道交给后端驱动,后端驱动再将音频数据发送到真实的物理声卡。后端驱动与真实的物理声卡连接,它总是知道当前需要播放音频数据的数据量,因此,后端驱动可以通过流量控制通知前端驱动传递足够或合适的数据给后端驱动用于播放,从而让真实的声卡能平稳的播放音频数据。本实施例中采用预取数据和流量控制相结合的方法,可以避免后端驱动中数据溢出导致系统出错、以及避免因缓存数据量过少导致播放声音不连续的问题,从而进一步提高声音播放质量,改善用户体验。
基于上述虚拟机系统,本实施例还提供了一种提高虚拟机系统音频播放质量的方法,所述虚拟机系统包括一物理声卡,如图3所示,本实施例所述方法包括以下步骤:
步骤31,在客户操作系统需要播放音频文件时,通过其中的应用程序对音频文件进行处理,得到客户操作系统的待播放的音频数据。这里,所述对音频文件进行处理包括对音频文件进行解码等处理。
步骤32,客户操作系统中的前端驱动,基于本客户操作系统的系统时间,按照预定时间间隔获取待播放的音频数据并通过虚拟机管理器发送给宿主操作系统中的后端驱动,其中,每次获取的音频数据量大于所述物理声卡音频数据播放速率与所述时间间隔的乘积;
步骤33,后端驱动接收并缓存前端驱动发送的音频数据,并根据物理声卡的音频播放参数,将缓存的音频数据发送给所述物理声卡进行播放。
较佳的,本发明所述方法中,还可以根据当前缓存的音频数据量,对所述音频数据的获取执行相应的流量控制处理,例如,在当前缓存的音频数据量大于第一阈值时,停止获取所述客户操作系统的音频数据;以及在当前缓存的音频数据量小于第二阈值时,继续获取所述客户操作系统的音频数据。
<实施例三>
如图4所示,本实施例提供了一种虚拟机系统,与实施例一、二不同的是,本实施例中,后端驱动131设置在虚拟机管理器11中。而不是在服务操作系统(SOS)或宿主操作系统(HOS)中。除此之外,本实施例与实施例一、二中的各个对应模块的功能作用相同,此处不再一一赘述。
上述实施例中,通过前端驱动预取过量音频数据,后端数据将音频数据发送给物理声卡进行播放,从而提高了虚拟机系统中声音播放质量,改善了用户体验。
<实施例四>
在现有的虚拟机系统中,由于存在服务操作系统或宿主操作系统的调度,运行中的客户操作系统是不能完全占用真实的CPU时间,客户操作系统播放音频数据存在背景技术中所述的缺点,并且,客户操作系统在对音频数据进行采集处理时也有类似的缺点,例如,客户操作系统进行录音操作时,接收到的音频数据通常也不连续,导致录音得到的音频文件通常也会存在着断续的问题;还例如,在用户通过客户操作系统与远端的计算机用户进行语音聊天时,远端用户所听到的声音连续性也是比较差。
为此,本实施例提供了一种虚拟机系统和采集音频数据的方法,用以改善上述不足,提高用户体验。本实施例提供了一种虚拟机系统的音频数据采集方法,如图5所示,所述虚拟机系统具体包括:包括一音频采集模块103和一客户操作系统12,
硬件平台10,所述硬件平台至少包括CPU 10和音频采集模块;
运行在所述硬件平台10上的虚拟机管理器11;以及,
运行在所述虚拟机管理器11上的至少一个客户操作系统12,
所述虚拟机系统还包括一后端驱动131,设置在宿主操作系统13中。该后端驱动131与所述音频采集模块103连接,用于接收并缓存所述音频采集模块103采集到的音频数据。
所述客户操作系统12包括:
前端驱动121,与所述后端驱动103连接,用于按照预定时间,获取所述后端驱动103缓存的音频数据并发送至预定应用程序模块,其中,获取的音频数据量大于所述预定应用程序模块正常处理音频数据时所需的数据量。
这里,所述预定应用程序模块设置在所述客户操作系统中或者设置在与所述虚拟机系统连接的远端计算机系统中。
本实施例提供的一种虚拟机系统的音频数据采集方法,具体包括:
接收并缓存所述音频采集模块采集到的音频数据;
客户操作系统按照预定时间获取所述音频数据,并将获取的音频数据发送至预定应用程序,其中,获取的音频数据量大于所述预定应用程序正常处理音频数据时所需的数据量。这里,所述预定应用程序首先接收并缓存所述客户操作系统发送的音频数据,然后再对缓存的音频数据进行相应的处理,例如播放或者保存为音频文件。
优选地,上述预定应用程序是用于保存音频数据的应用程序或用于播放音频数据的应用程序,所述预定应用程序设置在所述客户操作系统中或者设置在与所述虚拟机系统连接的远端计算机系统中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (21)
1.一种虚拟机系统,包括:
硬件平台,所述硬件平台至少包括CPU和物理声卡;
运行在所述硬件平台上的虚拟机管理器;以及,
运行在所述虚拟机管理器上的至少一个客户操作系统,其特征在于,
所述客户操作系统包括:
前端驱动,用于按照预定时间,获取所述客户操作系统的待播放的音频数据并发送出去,其中,获取的音频数据量大于所述物理声卡需要播放的音频数据需求量;
所述虚拟机系统还包括一后端驱动,分别与所述前端驱动和所述物理声卡连接,用于接收并缓存所述音频数据,得到第二音频数据,并将所述第二音频数据发送给所述物理声卡进行播放。
2.如权利要求1所述的虚拟机系统,其特征在于,还包括:
应用程序模块,用于生成所述客户操作系统的待播放的音频数据。
3.如权利要求2所述的虚拟机系统,其特征在于,所述前端驱动包括:
获取单元,用于按照预定时间间隔,逐次提取所述客户操作系统的待播放的音频数据,其中,所述每次提取的音频数据量大于所述物理声卡音频数据需求量;
发送单元,用于将所述获取单元每次提取的音频数据发送给所述后端驱动;
所述后端驱动包括:
缓存单元,用于接收并缓存所述前端驱动发送的音频数据;
播放单元,用于根据所述物理声卡的音频播放参数,将缓存单元中的音频数据发送给所述物理声卡进行播放。
4.如权利要求3所述的虚拟机系统,其特征在于,所述物理声卡音频数据需求量等于所述物理声卡音频数据播放速率与所述预定时间间隔的乘积。
5.如权利要求1所述的虚拟机系统,其特征在于,
所述后端驱动还包括一第一流控单元,用于根据所述缓存单元中的音频数据量向所述前端驱动发送流量控制消息;
所述前端驱动还包括一第二流控单元,用于接收所述第一流控单元发送的所述流量控制消息,并根据所述流量控制消息控制所述获取单元执行相应的流量控制处理。
6.如权利要求5所述的虚拟机系统,其特征在于,
所述第一流控单元包括:
判断单元:用于判断所述缓存单元中的数据量是否大于预定的第一阈值以及是否小于预定的第二阈值,其中,所述第一阈值大于所述第二阈值;
流量控制消息发送单元,用于在所述缓存单元中的数据量大于所述第一阈值时,向所述前端驱动发送用于请求暂停音频数据发送的第一流量控制消息,以及在所述缓存单元中的数据量小于所述第二阈值时,向所述前端驱动发送用于请求发送音频数据的第二流量控制消息,其中,所述第一阈值大于第二阈值;
所述第二流控单元包括:
流量控制消息接收单元,用于接收所述第一流量控制消息和/或第二流量控制消息;
控制单元,用于在接收到所述第一流量控制消息时暂停所述获取单元,以及在接收到所述第二流量控制消息时重启所述获取单元。
7.如权利要求1所述的虚拟机系统,其特征在于,所述虚拟机系统还包括有一服务操作系统,所述后端驱动设置在所述服务操作系统或所述虚拟机管理器中。
8.如权利要求1所述的虚拟机系统,其特征在于,所述虚拟机系统还包括有一宿主操作系统,所述后端驱动设置在所述宿主操作系统或所述虚拟机管理器中。
9.一种提高虚拟机系统音频播放质量的方法,所述虚拟机系统包括一物理声卡和一客户操作系统,其特征在于,所述方法包括:
按照预定时间,获取所述客户操作系统的待播放的音频数据并缓存,其中,获取的音频数据量大于所述物理声卡音频数据需求量;
根据所述物理声卡的音频播放参数,将缓存的音频数据发送给所述物理声卡进行播放。
10.如权利要求8所述的方法,其特征在于,所述客户操作系统的待播放的音频数据是由所述客户操作系统的应用程序生成的。
11.如权利要求9或10所述的方法,其特征在于,
所述按照预定时间,获取所述客户操作系统的待播放的音频数据是:按照预定时间间隔,逐次提取所述客户操作系统的待播放的音频数据;
所述物理声卡音频数据需求量等于所述物理声卡音频数据播放速率与所述预定时间的乘积。
12.如权利要求11所述的方法,其特征在于,还包括:
根据当前缓存的音频数据量,对所述音频数据的获取执行相应的流量控制处理。
13.如权利要求12所述的方法,其特征在于,所述流量控制处理包括:
在当前缓存的音频数据量大于预定的第一阈值时,停止获取所述待播放的音频数据;以及在当前缓存的音频数据量小于预定的第二阈值时,继续获取所述待播放的音频数据,其中,所述第一阈值大于第二阈值。
14.如权利要求9所述的方法,其特征在于,所述虚拟机系统还包括一后端驱动和一设置在所述客户操作系统中的前端驱动;
进一步由所述前端驱动,每次间隔预定时间间隔,逐次提取客户操作系统的待播放的音频数据并发送给所述后端驱动;所述后端驱动接收并缓存所述前端驱动发送的音频数据,并根据所述物理声卡的音频播放参数,将缓存的音频数据发送给所述物理声卡进行播放。
15.如权利要求13所述的方法,其特征在于,所述虚拟机系统还包括一宿主操作系统,进一步将所述后端驱动设置在所述宿主操作系统或所述虚拟机管理器中。
16.如权利要求13所述的方法,其特征在于,所述虚拟机系统还包括有一服务操作系统,进一步将所述后端驱动设置在所述服务操作系统或所述虚拟机管理器中。
17.一种虚拟机系统的音频数据采集方法,所述虚拟机系统包括一音频采集模块和一客户操作系统,其特征在于,所述方法包括:
接收并缓存所述音频采集模块采集到的音频数据;
客户操作系统按照预定时间获取所述音频数据,并将获取的音频数据发送至预定应用程序,其中,获取的音频数据量大于所述预定应用程序正常处理音频数据时所需的数据量。
18.如权利要求17所述的方法,其特征在于,所述预定应用程序接收并缓存所述客户操作系统发送的音频数据,并对缓存的音频数据进行相应的处理。
19.如权利要求17所述的方法,其特征在于,所述预定应用程序是用于保存音频数据的应用程序或用于播放音频数据的应用程序,所述预定应用程序设置在所述客户操作系统中或者设置在与所述虚拟机系统连接的远端计算机系统中。
20.一种虚拟机系统,包括:
硬件平台,所述硬件平台至少包括CPU和音频采集模块;
运行在所述硬件平台上的虚拟机管理器;以及,
运行在所述虚拟机管理器上的至少一个客户操作系统,其特征在于,
所述虚拟机系统还包括一后端驱动,与所述音频采集模块连接,用于接收并缓存所述音频采集模块采集到的音频数据;
所述客户操作系统包括:
前端驱动,与所述后端驱动连接,用于按照预定时间,获取所述后端驱动缓存的音频数据并发送至预定应用程序模块,其中,获取的音频数据量大于所述预定应用程序模块正常处理音频数据时所需的数据量。
21.如权利要求20所述的虚拟机系统,其特征在于,所述预定应用程序模块设置在所述客户操作系统中或者设置在与所述虚拟机系统连接的远端计算机系统中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102410683A CN101763238B (zh) | 2008-12-25 | 2008-12-25 | 提高音频播放质量的方法、音频数据采集方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102410683A CN101763238B (zh) | 2008-12-25 | 2008-12-25 | 提高音频播放质量的方法、音频数据采集方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101763238A true CN101763238A (zh) | 2010-06-30 |
CN101763238B CN101763238B (zh) | 2012-07-25 |
Family
ID=42494417
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102410683A Active CN101763238B (zh) | 2008-12-25 | 2008-12-25 | 提高音频播放质量的方法、音频数据采集方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101763238B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011063642A1 (zh) * | 2009-11-27 | 2011-06-03 | 北京中星微电子有限公司 | 一种音频数据处理方法及音频数据处理系统 |
CN102447606A (zh) * | 2010-09-30 | 2012-05-09 | 重庆重邮信科通信技术有限公司 | 一种数据传输流量控制方法及装置 |
CN105184192A (zh) * | 2015-08-26 | 2015-12-23 | 宇龙计算机通信科技(深圳)有限公司 | 一种双操作系统的音频数据处理方法和装置 |
CN107278293A (zh) * | 2017-05-08 | 2017-10-20 | 深圳前海达闼云端智能科技有限公司 | 虚拟机的传感器实现装置及其方法 |
CN108255569A (zh) * | 2016-12-28 | 2018-07-06 | 华为技术有限公司 | 一种虚拟机调用定制化硬件的方法及装置 |
CN109819108A (zh) * | 2019-01-04 | 2019-05-28 | Oppo广东移动通信有限公司 | 调整驱动参数的方法、装置、电子设备及存储介质 |
CN110324760A (zh) * | 2019-06-28 | 2019-10-11 | 安徽威斯贝尔智能科技有限公司 | 一种音频处理器及其控制方法 |
CN110399315A (zh) * | 2019-06-05 | 2019-11-01 | 北京梧桐车联科技有限责任公司 | 一种语音播报的处理方法、装置、终端设备及存储介质 |
CN110739009A (zh) * | 2019-09-20 | 2020-01-31 | 深圳震有科技股份有限公司 | 媒体资源板播放通告音方法及装置、计算机设备、存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100428164C (zh) * | 2006-01-23 | 2008-10-22 | 联想(北京)有限公司 | 一种虚拟机系统及其设备访问方法 |
CN100524357C (zh) * | 2007-10-11 | 2009-08-05 | 上海交通大学 | 视频处理中数据预取系统 |
-
2008
- 2008-12-25 CN CN2008102410683A patent/CN101763238B/zh active Active
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011063642A1 (zh) * | 2009-11-27 | 2011-06-03 | 北京中星微电子有限公司 | 一种音频数据处理方法及音频数据处理系统 |
CN102447606A (zh) * | 2010-09-30 | 2012-05-09 | 重庆重邮信科通信技术有限公司 | 一种数据传输流量控制方法及装置 |
CN105184192A (zh) * | 2015-08-26 | 2015-12-23 | 宇龙计算机通信科技(深圳)有限公司 | 一种双操作系统的音频数据处理方法和装置 |
CN108255569A (zh) * | 2016-12-28 | 2018-07-06 | 华为技术有限公司 | 一种虚拟机调用定制化硬件的方法及装置 |
CN108255569B (zh) * | 2016-12-28 | 2021-12-31 | 华为技术有限公司 | 一种虚拟机调用定制化硬件的方法及装置 |
CN107278293A (zh) * | 2017-05-08 | 2017-10-20 | 深圳前海达闼云端智能科技有限公司 | 虚拟机的传感器实现装置及其方法 |
CN107278293B (zh) * | 2017-05-08 | 2020-11-06 | 深圳前海达闼云端智能科技有限公司 | 虚拟机的传感器实现装置及其方法 |
CN109819108A (zh) * | 2019-01-04 | 2019-05-28 | Oppo广东移动通信有限公司 | 调整驱动参数的方法、装置、电子设备及存储介质 |
CN109819108B (zh) * | 2019-01-04 | 2021-03-02 | Oppo广东移动通信有限公司 | 调整驱动参数的方法、装置、电子设备及存储介质 |
CN110399315A (zh) * | 2019-06-05 | 2019-11-01 | 北京梧桐车联科技有限责任公司 | 一种语音播报的处理方法、装置、终端设备及存储介质 |
CN110324760A (zh) * | 2019-06-28 | 2019-10-11 | 安徽威斯贝尔智能科技有限公司 | 一种音频处理器及其控制方法 |
CN110739009A (zh) * | 2019-09-20 | 2020-01-31 | 深圳震有科技股份有限公司 | 媒体资源板播放通告音方法及装置、计算机设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101763238B (zh) | 2012-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101763238B (zh) | 提高音频播放质量的方法、音频数据采集方法及系统 | |
CN104464716B (zh) | 一种语音播报系统和方法 | |
CN104756473B (zh) | 处理并发语音 | |
CN104052846B (zh) | 游戏应用中的语音通信方法及系统 | |
CN102629936B (zh) | 一种移动终端处理文本的方法、相关设备及系统 | |
CN102667924B (zh) | 利用选择性功率控制对音频数据进行解码的方法和系统 | |
DE69728299D1 (de) | System und verfahren zur herstellung eines echtzeit-agentpools zwischen rechnersystemen | |
CN108470034A (zh) | 一种智能设备服务提供方法及系统 | |
WO2004022188A3 (en) | Autoconfiguration method for interactive on-line gaming systems | |
CN110310657B (zh) | 一种音频数据处理方法及装置 | |
WO2001061925A3 (en) | System and method for suppressing silence in voice traffic over an asynchronous communication medium | |
CN101442586A (zh) | 一种多媒体播放方法及播放终端 | |
CN103686248A (zh) | 背景音乐播放方法及系统 | |
CN107005800A (zh) | 音频文件的传输、接收方法及装置、设备及其系统 | |
CN104505109A (zh) | 多媒体播放器的音轨切换方法、系统及对应播放器和设备 | |
CN106550286A (zh) | 基于驾驶环境下的实时对讲方法、终端、服务器及系统 | |
CN110399315A (zh) | 一种语音播报的处理方法、装置、终端设备及存储介质 | |
CN102623032A (zh) | 一种实现硬盘录像机同步回放的方法 | |
CN104883625B (zh) | 信息展示方法、终端设备、服务器和系统 | |
CN110086941A (zh) | 语音播放方法、装置及终端设备 | |
CN109378001A (zh) | 一种语音交互方法、装置、电子设备及可读存储介质 | |
CN107071575A (zh) | 贴片媒体文件播放方法和装置 | |
CN107426200A (zh) | 一种多媒体数据处理方法和装置 | |
CN105025353B (zh) | 一种播放控制方法及用户终端 | |
CN104168446A (zh) | 基于消息调度和硬解码的音视频信号数模切换系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |