Pet*_*ter 5 audio pulse-audio qemu linux-kvm
如何让pulseaudio同时在KVM虚拟机(以root身份运行)和桌面应用程序(不以root身份运行)中播放声音?
似乎默认情况下,它一次只会为一个用户播放声音,而阻止所有其他用户。
例如,
我播放一些音乐:
mplayer ~/Music/*
Run Code Online (Sandbox Code Playgroud)
我的虚拟机开始于:
kdesu qemu-system-x86_64 -enable-kvm [... disks, network, etc. ...] -soundhw hda
Run Code Online (Sandbox Code Playgroud)
这会以 root 身份运行进程,并显示运行它的用户的 X。直到 mplayer 停止,声音才起作用。
如果在 root shell 中运行,我会得到:
pulseaudio: pa_context_connect() failed
pulseaudio: Reason: Connection refused
pulseaudio: Failed to initialize PA contextaudio: Could not init `pa' audio driver
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
alsa: Could not initialize DAC
alsa: Failed to open `default':
alsa: Reason: Device or resource busy
ALSA lib pcm_dmix.c:1018:(snd_pcm_dmix_open) unable to open slave
alsa: Could not initialize DAC
alsa: Failed to open `default':
alsa: Reason: Device or resource busy
audio: Failed to create voice `dac'
Run Code Online (Sandbox Code Playgroud)
然后 VM 运行,它的声音设备看起来可以工作,但没有播放声音。
然后我可以停止mplayer,然后可以从VM播放声音而无需重新启动它。
然后,如果我再次启动 mplayer,我会收到错误并且没有声音:
AO: [pulse] 44100Hz 2ch s16le (2 bytes per sample)
Video: no video
Starting playback...
A: -0.0 (unknown) of 308.2 (05:08.2) ??,?%
Audio device got stuck!
A: -0.0 (unknown) of 308.2 (05:08.2) ??,?%
Audio device got stuck!
A: -0.0 (unknown) of 308.2 (05:08.2) ??,?%
Audio device got stuck!
A: -0.0 (unknown) of 308.2 (05:08.2) ??,?%
Run Code Online (Sandbox Code Playgroud)
我相信我可以通过卸载pulseaudio并使用ALSA来解决这个问题,但是我需要重新配置qemu配置并从源代码构建它。我想通过配置pulseaudio来做到这一点,就像在ALSA中使用软件混音器一样。
您可能已经为 Qemu 设置了正确的环境变量,例如:
QEMU_AUDIO_DRV=pa
Run Code Online (Sandbox Code Playgroud)
但在设置 QEMU_PA_SINK 之前,有必要安装软件包,paprefs该软件包包含与pulseaudio类似的服务器设置。
我已经检查了 PulseAudio Preferences 中的所有内容,但可能只是选项:
重新启动pulseaudio后,combined源可用。作为您的用户然后开始:
pulseaudio -k
pactl list short sinks
Run Code Online (Sandbox Code Playgroud)
如果您看到名为的源,combined您可以继续为 Qemu 设置其他环境变量,例如:
QEMU_PA_SINK=combined
QEMU_PA_SOURCE=input
Run Code Online (Sandbox Code Playgroud)
最后一步重新启动您的虚拟机
https://wiki.archlinux.org/index.php/QEMU <- 参见音频部分 https://freedesktop.org/software/pulseaudio/paprefs/
编辑:现在我们有 QEMU 版本 4.0
https://www.redhat.com/archives/libvir-list/2019-February/msg01305.html
那么虚拟机 xml 定义中的常见更改如下所示
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
...
<qemu:commandline>
<qemu:arg value='-audiodev'/>
<qemu:arg value='pa,id=pa1,out.name=combined,in.name=input'/>
</qemu:commandline>
</domain>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4987 次 |
| 最近记录: |