PulseAudioはデフォルトの受信機を使用しません。

PulseAudioはデフォルトの受信機を使用しません。

Kubuntu 18.04を搭載したミニHPコンピュータがあります。すべてのオーディオが常にアクティブなHDMIポートを通過したいのですが、何らかの理由で一部のアプリケーションでは、PulseAudioは常にオーディオが内蔵スピーカーを通過したいと考えています。

インデックス0がデフォルトです。

$ pacmd list-sinks | grep -e 'name:' -e 'index:'
  * index: 0
        name: <alsa_output.pci-0000_0a_00.1.hdmi-stereo-extra1>
    index: 1
        name: <alsa_output.pci-0000_0a_00.6.analog-stereo>

しかし、いくつかのアプリケーションを実行するとき:

$ pactl list short sinks
0       alsa_output.pci-0000_0a_00.1.hdmi-stereo-extra1 module-alsa-card.c      s16le 2ch 48000Hz       SUSPENDED
1       alsa_output.pci-0000_0a_00.6.analog-stereo      module-alsa-card.c      s16le 2ch 44100Hz       RUNNING

そして私はそれを変更することはできません!

$ pacmd list-sink-inputs | grep available -A 1
1 sink input(s) available.
    index: 7
$ pacmd move-sink-input 7 0
Moved failed.
$ pactl move-sink-input 7 0
Failure: Invalid argument

欠陥に関する追加情報をどのように取得できますか?これらのエラーメッセージは有用な情報を提供しません。

ベストアンサー1

部分的な答え:

Pulseaudioは、リスナーに接続されているすべてのアプリケーションのデータベースを維持し、デフォルトのリスナーを使用する代わりに、起動時にこの接続を再起動します。デフォルトのリスナーは「新しい」アプリケーションでのみ使用されます。

なぜ失敗したのかわかりませんmove-sink-input。それを移動できますかpavucontrol

編集する

OpenALコードはMonoGameのgithubリポジトリにあります。 「OpenAL Pulse Audio」のGoogle検索によると、OpenALのデフォルト設定はリスナーの移動を無効にしますが、~/.alsoftrcコンテンツを含むファイルを生成します。

[pulse]

allow-moves = true

これは許可されます。私はそれを直接テストしませんでした。

編集する

起動時に記憶された受信機を復元する場合、.alsoftrcオプションリストには該当する項目は表示されません。

パルスオーディオの場合、モジュールストリームの復元ストリームソース/シンクの回復を処理します。 GDBMツールを使用してデータベースを表示できるように、GDBMデータベースファイルに保存します。私が知っている限り、Pulseaudioというアプリケーション名が使用されていますが(再確認する方が良いです)、役割を理解していない複雑なシステムもあります。

したがって、OpenALとの対話をデバッグする必要があります。 OpenALがアプリケーション名を指定しない場合、OpenALがmodule-stream-restoreの機能をオーバーライドし、デフォルトのシンクのみを選択することも、他のものでもかまいません。 OpenALソースコードを見てみると役に立ちます。

もちろん、回避策はOpenALアプリケーションを起動して実行する小さなラッパースクリプトを作成することですmove-sink。おそらくより早く完了します。

おすすめ記事