Spice 用于图形,pulseaudio 用于声音

Spice 用于图形,pulseaudio 用于声音

当我们在KVM/qemu/libvirt下的虚拟机中使用Spice时,QEMU_AUDIO_DRV默认设置为spice。
我的主机(debian-Stretch)使用良好的声卡(Xonar DX)和更好的声音驱动程序(pulseaudio,alsa)。
如何在虚拟机中使用spice来处理图形方面,使用pulseaudio或alsa来处理声音方面(无论客户操作系统是什么)?

注1:在domain.xml中,我添加了:

<qemu:commandline>
  <qemu:env name='QEMU_AUDIO_DRV' value='pa'/>
  <qemu:env name='QEMU_PA_SERVER' value='/run/user/1000/pulse/native'/>
</qemu:commandline>

现在,在domain.log 中,我看到:

QEMU_AUDIO_DRV=pa QEMU_PA_SERVER=/run/user/1000/pulse/native

好吧,但我不知道我的客人是否使用pulseaudio,因为domain.xml 有以下部分:

<sound model='ich6'>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</sound>

笔记2: 其他尝试:

<qemu:commandline>
  <qemu:env name='QEMU_AUDIO_DRV' value='alsa'/>
</qemu:commandline>

没有声音。

答案1

PulseAudio 通常只接受来自一个用户的连接。为了减轻这种情况,你可以

  1. 以用户 1000 身份运行 QEMU -编辑 /etc/libvirt/qemu.conf并添加/更改user = "<user>"
  2. 允许 PulseAudio接受匿名连接

答案2

你的第一个qemu:commandline片段没问题,我用它很好地将客人的声音引导到主机上的特定 PA 声卡。这是主机上的音量控制对话框条目: 音量控制对话框 要连接到当前用户 PA,只需在 下创建域qemu:///session,这意味着 VM 进程默认在当前用户 ID 下运行。无需更改全局 QEMU 或 PA 配置。要调试无头,您可以使用以下命令查看 PA 是否从 virt-manager 获得连接pacmd list-clients

index: 137
driver: <protocol-native.c>
owner module: 11
properties:
    application.name = "virt-manager"
    native-protocol.peer = "UNIX socket client"
    native-protocol.version = "34"
    application.process.id = "97515"
    application.process.user = "xyz"
    application.process.host = "xyz"
    application.process.binary = "python3.9"
    application.icon_name = "virt-manager"
    application.language = "en_US.UTF-8"
    window.x11.display = ":0.0"
    application.process.machine_id = "68058b3d029948a1ae03d28f827a6f53"
    application.process.session_id = "c2"

相关内容