web-dev-qa-db-ja.com

pulseaudio、KVM仮想マシン(ルートとして)とデスクトップ(ルートではない)で同時にオーディオを再生しますか?

どうすれば、pulseaudioでKVM仮想マシン(rootとして実行)とデスクトップアプリ(rootとして実行されていない)で同時にサウンドを再生することができますか?

デフォルトでは、一度に1人のユーザーのサウンドのみを再生し、他のすべてのユーザーをブロックするようです。

例えば、

私はいくつかの音楽を演奏します:

mplayer ~/Music/*

my VMは次で始まります:

kdesu qemu-system-x86_64 -enable-kvm [... disks, network, etc. ...] -soundhw hda

これにより、プロセスがrootとして実行され、実行するユーザーのXが表示されます。そして、mplayerが停止するまでサウンドは機能しません。

代わりにルートシェルで実行すると、次のようになります。

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'

次に、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) ??,?% 

私はpulseaudioをアンインストールして代わりにALSAを使用することでこれを解決できると信じていますが、qemuconfigを再構成してソースからビルドする必要があります。 ALSAのソフトウェアミキサーのように、代わりにpulseaudioを設定してやりたいと思います。

5
Peter

Qemuの環境変数を次のように正しく設定しました。

QEMU_AUDIO_DRV=pa

ただし、QEMU_PA_SINKを設定する前に、パッケージpaprefsをインストールする必要があります。このパッケージには、pulseaudioのサーバーのような設定が含まれています。

私はPulseAudioの設定ですべてをチェックしましたが、それはおそらくオプションだけです:

  • 「ローカルサウンドデバイスへのネットワークアクセスを有効にする」、
  • 「LAN上の他のマシンがローカルサウンドデバイスを検出できるようにする」および
  • 「認証を要求しないでください」

これはpulseaudioの再起動後、combinedソースを利用可能にしました。次に、ユーザーが開始すると:

pulseaudio -k
pactl list short sinks

combinedという名前のソースが表示されている場合は、次のようなQemuの他の環境変数の設定を続行できます。

QEMU_PA_SINK=combined
QEMU_PA_SOURCE=input

最後のステップとして、VMを再起動します

https://wiki.archlinux.org/index.php/QEM <-オーディオのセクションを参照 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>
1
Radek Secka