libvirt: Конфигурируйте guest to share host аудио

For the past days гve been trying to get в x64 Windows 8.1 VM's аудио mixed with the host аудио with mixed success.

The solution which kind of works for я right now is using Spice for аудио, and the ICH6 эксперт setting for the sound card, but because of в known вирус in Spice which I could only find reported for Федора and Red Hat, the аудио is pretty bad and the only partial workaround is to удар в лунку <playback compression='off'/> in my VM domain config. What I мочатся by partial is that the sound quality becomes somewhat usable but there пахал still glitches in the аудио эксперт some users also pointed out in the вирус доклады above.

I have also tried using VNC instead of Spice but the client does not ест with sound support. Following this вирус доклад I understood that аудио хан be sent through the регулярный backends if the VNC client does not support it by changing the user and group the VM runs under to my current user and adding в VNC setting in the /etc/libvirt/qemu.conf like so:

vnc_allow_host_audio = 1
user = "yourusernamehere"
group = "yourusernamehere"

but also making my user part of the kvm & libvirtd groups and furthermore adding this line in /etc/default/libvirt-bin:

export QEMU_AUDIO_DRV=pa

Doing this gave я the desired effect and the guest аудио would run smoothly but the host аудио would not work until I would have closed the guest. Looking at the host processes I noticed that libvirt spawned another Pulseaudio instance under my current user (effectively having 2 Pulseaudio instances) instead of using the instance that was already available.

After в бит обитал Гооглинг I found that pulseaudio хан share it's аудио with other users if the module-native-protocol-tcp was enabled. Unfortunately this is where I stopped finding useful information. Every article I found explaining how to enable this suggests running Pulseaudio in system mode which, obviously, is в security issue, but would also make my нажал аудио widgets in Plasma5 not work эксперт expected. I have managed to track down this article for Федора 12 explaining that it is possible to run Pulseaudio схвати an unprivileged user (aka. my current user) but I don't understand how I хан share аудио with myself.

Does someone know how I хан использовал Нажал so I хан share аудио with my VM or provide another solution for mixing sound from the guest and host without glitchy аудио?

4
задан 11 January 2016 в 17:11

1 ответ

Хорошо, после большого метода проб и ошибок мне наконец удалось получить его работающий, как это должно без любых отклонений.

Некоторые следующие шаги не могли бы требоваться, чтобы заставить его работать, но это действительно работало на меня после создания их. Если кто-то хочет изменить ответ и избавиться от ненужных шагов, затем сделайте это.

Помимо того, что я сказал выше при использовании VNC (изменяющий настройки в qemu.conf & libvirt-мусорное-ведро и проверка моего пользователя были частью необходимых групп), я также удостоверился, что мой пользователь был частью pulse & pulse-access группы.

я скопировал все с/etc/pulse в .pulse мой корневой каталог:

cd ~
mkdir .pulse
cp /etc/pulse/* .pulse/

В ~/.pulse/client.conf я комментировал/изменял следующие строки:

enable-shm = yes
auto-connect-localhost = yes
auto-connect-display = yes

В ~/.pulse/daemon.conf

daemonize = yes
allow-module-loading = yes
use-pid-file = yes
enable-shm = yes

Также я установил paprefs (apt-get install paprefs) и проверил:

  • Делают поддающиеся обнаружению звуковые устройства сети PulseAudio доступными локально
  • , Включают доступ к сети к локальным звуковым устройствам
  • , не требуют, чтобы authnetication
  • Включил получатель Многоадресной передачи/RTP
  • , Добавляет виртуальное устройство вывода для одновременного вывода на всех локальных звуковых картах

после внесения всех изменений, можно перезагрузить Вас компьютер или просто выйти из системы/войти и перезапустить libvirt-мусорное-ведро, и все должно работать отлично при запуске VM.

пз: Если аудио от VM потрескивает, затем удостоверяются, что VM имеет ту же частоту дискретизации и битовую глубину как хост, и это должно работать.

Обновление: Для меня стало очевидно, что аудио может все еще иметь проблемы в госте (потрескивающий звук), потому что libvirt не может загружать импульсную конфигурацию, от того, что я видел в доменном файле журнала (/var/log/libvirt/qemu/yourdomain.log). Можно отключить профиль временно или просто добавить:

@{HOME}/.pulse/** rw,

в/etc/apparmor.d/abstractions/libvirt-qemu и перезагрузка apparmor представляет с:

sudo invoke-rc.d apparmor reload

Примечание: Я настроил libvirt для выполнения как мой текущий пользователь в/etc/libvirt/qemu.conf из соображений безопасности.

2
ответ дан 1 December 2019 в 10:18

Другие вопросы по тегам:

Похожие вопросы: