QEMU下虚拟机内的声卡模拟方法总结 |
您所在的位置:网站首页 › 虚拟声卡电脑版怎么使用 › QEMU下虚拟机内的声卡模拟方法总结 |
转载请注明:http://blog.csdn.net/hubbybob1/article/details/77199567 在做VAG或者USB穿透的过程中如果声卡和网卡在同一个分组内,那么就不适合穿透声卡了,那么就需要模拟声卡来试用了,一步一步来介绍吧 一,虚拟机内部声音导出到本地宿主机内主要是针对qemu虚拟机下的音频如何使用,首先要查看help命令: qemu-system-x86_64 -audio-help这个命令能告诉我们audio的一些基本的信息和使用方法,以及Qemu支持的驱动 Audio options: QEMU_AUDIO_DAC_FIXED_SETTINGS: boolean, default = 1 Use fixed settings for host DAC QEMU_AUDIO_DAC_FIXED_FREQ: integer, default = 44100 Frequency for fixed host DAC QEMU_AUDIO_DAC_FIXED_FMT: format, default = S16, (one of: U8 S8 U16 S16 U32 S32) Format for fixed host DAC QEMU_AUDIO_DAC_FIXED_CHANNELS: integer, default = 2 Number of channels for fixed DAC (1 - mono, 2 - stereo) QEMU_AUDIO_DAC_VOICES: integer, default = 1 Number of voices for DAC QEMU_AUDIO_DAC_TRY_POLL: boolean, default = 1 Attempt using poll mode for DAC QEMU_AUDIO_ADC_FIXED_SETTINGS: boolean, default = 1 Use fixed settings for host ADC QEMU_AUDIO_ADC_FIXED_FREQ: integer, default = 44100 Frequency for fixed host ADC QEMU_AUDIO_ADC_FIXED_FMT: format, default = S16, (one of: U8 S8 U16 S16 U32 S32) Format for fixed host ADC QEMU_AUDIO_ADC_FIXED_CHANNELS: integer, default = 2 Number of channels for fixed ADC (1 - mono, 2 - stereo) QEMU_AUDIO_ADC_VOICES: integer, default = 1 Number of voices for ADC QEMU_AUDIO_ADC_TRY_POLL: boolean, default = 1 Attempt using poll mode for ADC QEMU_AUDIO_TIMER_PERIOD: integer, default = 100 Timer period in HZ (0 - use lowest possible) Available drivers: Name: spice Description: spice audio driver One playback voice One capture voice Options: Name: oss Description: OSS http://www.opensound.com Theoretically supports many playback voices Theoretically supports many capture voices Options: QEMU_OSS_FRAGSIZE: integer, default = 4096 Fragment size in bytes QEMU_OSS_NFRAGS: integer, default = 4 Number of fragments QEMU_OSS_MMAP: boolean, default = 0 Try using memory mapped access QEMU_OSS_DAC_DEV: string, default = /dev/dsp Path to DAC device QEMU_OSS_ADC_DEV: string, default = /dev/dsp Path to ADC device QEMU_OSS_EXCLUSIVE: boolean, default = 0 Open device in exclusive mode (vmix won't work) Name: alsa Description: ALSA http://www.alsa-project.org Theoretically supports many playback voices Theoretically supports many capture voices Options: QEMU_ALSA_DAC_SIZE_IN_USEC: boolean, default = 0 DAC period/buffer size in microseconds (otherwise in frames) QEMU_ALSA_DAC_PERIOD_SIZE: integer, default = 1024 DAC period size (0 to go with system default) QEMU_ALSA_DAC_BUFFER_SIZE: integer, default = 4096 DAC buffer size (0 to go with system default) QEMU_ALSA_ADC_SIZE_IN_USEC: boolean, default = 0 ADC period/buffer size in microseconds (otherwise in frames) QEMU_ALSA_ADC_PERIOD_SIZE: integer, default = 0 ADC period size (0 to go with system default) QEMU_ALSA_ADC_BUFFER_SIZE: integer, default = 0 ADC buffer size (0 to go with system default) QEMU_ALSA_THRESHOLD: integer, default = 0 (undocumented) QEMU_ALSA_DAC_DEV: string, default = default DAC device name (for instance dmix) QEMU_ALSA_ADC_DEV: string, default = default ADC device name Name: sdl Description: SDL http://www.libsdl.org One playback voice Does not support capture Options: QEMU_SDL_SAMPLES: integer, default = 1024 Size of SDL buffer in samples Name: none Description: Timer based audio emulation Theoretically supports many playback voices Theoretically supports many capture voices No options Name: wav Description: WAV renderer http://wikipedia.org/wiki/WAV One playback voice Does not support capture Options: QEMU_WAV_FREQUENCY: integer, default = 44100 Frequency QEMU_WAV_FORMAT: format, default = S16, (one of: U8 S8 U16 S16 U32 S32) Format QEMU_WAV_DAC_FIXED_CHANNELS: integer, default = 2 Number of channels (1 - mono, 2 - stereo) QEMU_WAV_PATH: string, default = qemu.wav Path to wave file Options are settable through environment variables. Example: export QEMU_AUDIO_DRV=wav export QEMU_WAV_PATH=$HOME/tune.wav (for csh replace export with setenv in the above) qemu ...可以看到audio的很多操作,也可以设置Audio的参数,通过export来设置,我们可以看到,支持的驱动有spice,oss,alsa,sdl, none, wav,每种驱动都给出了相应的操作方法,并且还给出了Example: 如果你是本地启动虚拟机二没有通过远程spice连接的话那么可以如下: #在启动qemu虚拟机命令前执行,修改下面的环境变量 export QEMU_AUDIO_DRV=wav #audio的驱动方式为wav export QEMU_WAV_PATH=$HOME/tune.wav #把所有虚拟机下的声音存储到tune.wav内,$HOME改写为你的绝对路径如:/home/tune.wav这样你的所有在虚拟机下的声音统统都导入到了你的宿主机的文件内了,这个方法缺点是是无法在虚拟机内真正的发出声音或者录音,只有通过本地打开的wav文件才能收听。 二.通过soundhw来模拟声卡这个方法也很简单,首先就是查看支持的驱动 qemu-system-x86_64 -soundhw ? #查看支持的驱动查看结果如下: 如果你做了一些穿透的工作如,VGA或者usb的穿透,那么上面的方法二就无法使用了,因为会报如下错误,说PCI已经被使用了,无法使用,因此上面的方法是没办法使用的,如下图所示: 因此我们只能使用-device这个参数来模拟了 要想使用这种方法来模拟,必须对qemu这个库进行重新配置编译,编译的选项如下 ./configure --target-list=x86_64-softmmu --enable-kvm \ --enable-gtk --with-gtkabi=3.0 --enable-virtfs \ --enable-tcg-interpreter --enable-xfsctl \ --enable-libiscsi --enable-glusterfs --enable-snappy \ --enable-lzo --enable-rdma --enable-linux-aio \ --enable-vhost-net --enable-spice --enable-smartcard \ --enable-libusb --enable-usb-redir --enable-guest-agent \ --enable-libssh2 \ --enable-sdl --audio-drv-list='oss alsa sdl'看到最后一行,就是我们需要的,添加上audio驱动列表audio-drv-list,配置结果可以查看到下图: 我们在打印出的很多内容中找到Hub devices,USB devices ,Storage devices ,Network devices , Input devices , Display devices , Sound devices , Misc devices , CPU devices , Uncategorized devices ,而我们只需要查看Sound devices如下: 那么我们在运行qemu启动虚拟机命令是会报出一个错误 #在使用的过程中默认使用oss但是启动脚本是会报错:无法初始化OSS audio: Could not init `oss' audio driver这个错误无关紧要,不会影响模拟的效果,但是看着就不爽,下面就是解决方法: # 修改驱动为alsa就可以了 export QEMU_AUDIO_DRV=alsa到此声卡的模拟也就总结完毕了 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |