web-dev-qa-db-ja.com

PulseAudioはどのALSAデバイスを利用可能にするかどうかをどのように決定しますか?

PulseAudioは通常、利用可能なALSAデバイスを判別し、それらを自動的にセットアップするという非常に優れた仕事をします。そうでない場合、この一見自動リンクがどのように発生するのかわかりません。 ALSAがPulseAudioにデバイスについて伝えるプッシュですか、それともPulseAudioがALSA構成から決定するプルですか? A、B、Cの3つのオーディオ「カード」があるとしましょう。aplay -lは3つすべてを示しています(3つすべてがaplayを介して期待どおりに機能していると仮定します)が、pacmd list-cardsはAとBのみを表示します。PulseAudioでBとCのみを使用したい場合、PulseAudioでAを削除してCを追加するにはどうすればよいですか?これはpacmdを介して行われるか、PAのスタートアップ構成ファイルを変更することで行われると思いますが、これを正確に行う方法がわかりません。

2
blihp

モジュールはデバイスの追加を担当していると思います。例えば。 module-udev-detectというものがあり、システムでpacmd list-cardsを実行すると、3つのうち2つにmodule-udev-detect.discovered = "1"が表示されます。 3つ目はBluetoothデバイスなので、1つはbluez5モジュールからのものだと思います。

Webを少し見てみると、udevルールでENV{Pulse_IGNORE}="1"を設定することで、pulseaudioにudevからのデバイスを無視させることができます。見る

Bluetoothの場合、デバイスを無視するには、bluezをいじる必要があると思います。

デバイスが無視される理由については、pulseaudioがデバイスを開こうとしたときにロックされていた(alsaデバイスは一度しか開くことができない)ためである可能性があります。

@blihpから編集:

PulseAudioにオーディオデバイスの使用を強制するには、/etc/Pulse/default.paにエントリを追加します。

load-module module-alsa-sink device=plughw:<card#>,<device#>

<card#>,<device#>0,1などのシステム固有のハードウェアに置き換えます)

3
V13