Pulseaudioがレシーバエラーによってフェイルオーバーするのを防ぐ方法

Pulseaudioがレシーバエラーによってフェイルオーバーするのを防ぐ方法

ALSAでUSBサウンドカードを介して音楽を再生し、誤ってUSBケーブルを抜くと自動的に再生が停止するため、問題を簡単に検出して解決できます。

$ mpv --audio-device=alsa/hw:2 sound.wav
 (+) Audio --aid=1 (pcm_s16le 2ch 44100Hz)
AO: [alsa] 44100Hz stereo 2ch s16
A: 00:00:05 / 00:03:41 (2%)
[ao/alsa] Device lost, trying to recover...
...
Exiting... (Interrupted by error)
[2]

しかし、Pulseaudioを介して音楽を再生し、USBケーブルを外すと、他の受信機に「トラブルシューティング」され、再生を続けます。

$ mpv --audio-device=pulse/alsa_output.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.analog-stereo sound.wav
 (+) Audio --aid=1 (pcm_s16le 2ch 44100Hz)
AO: [pulse] 44100Hz stereo 2ch s16
A: 00:00:16 / 00:03:41 (7%)
# no error message

この場合、受信機は2つだけであり、USBデバイスを取り外すと、オーディオ接続が私のラップトップスピーカーであるPCIデバイスに移動します。

$ pacmd list-sinks | grep name:
        name: <alsa_output.pci-0000_06_00.6.analog-stereo>
        name: <alsa_output.usb-C-Media_Electronics_Inc._USB_Audio_Device-00.analog-stereo>

USBケーブルを再接続した後でも、オーディオはまだノートパソコンのスピーカーから出てきます。

Pulseaudioを制御する方法を知っていれば、その動作は役に立つかもしれませんが、私はそうではありません。具体的には、フェイルオーバー時にどのレシーバーがアクティブになるかを制御でき、USBケーブルが切断されたときにクライアントアプリケーションでエラーが発生するようにフェイルオーバーを無効にできるようにしたいです。

もちろん、状況によっては基本的な動作が恥ずかしいかもしれません。たとえば、公共の場所でヘッドフォンでプライベートコンテンツを聴いていますが、Pulseaudioがこれをラップトップスピーカーを介して再ルーティングすることにした場合、非常に迷惑になります。ヌル受信機(サンプル削除)または無効な受信機(クライアントでエラーが発生した場合)にフェールオーバーするようにUSB受信機を設定できる場合、この状況は解決されます。これは可能ですか?

ベストアンサー1

Pulseaudioバージョン13.0では、受信機の避難を無効にできます。

pactl unload-module module-rescue-streams

または/etc/pulse/default.pa

バージョン 14.0 以降、module-rescue-streamsコア機能の一部になるため削除できません。しかし、新しいブールオプションは紹介されました無効にできるようにします。 14.0以降は、を追加してrescue-streams=no受信機の避難を無効にできます/etc/pulse/daemon.conf

現時点では、受信機エラーが発生した場合に特定のストリームがどの受信機に避難するかをユーザーが構成できるようにする計画はありません。ストリームは常に基本シンクで避難します。

おすすめ記事