web-dev-qa-db-ja.com

PulseAudio仮想サウンドデバイスの再検出を強制するにはどうすればよいですか?

ネットワークサウンドデバイス(Multicast/RTPではない)のPulseAudio機能を使用して、自宅でHTPCに接続されているオーディオ機器でネットブックのサウンドを再生しています。これにより、物理的な組み込みデバイスの代わりに使用できる仮想サウンドデバイスが作成されます。ほとんどの場合、これで十分です。ただし、仮想サウンドデバイスが表示されないことがあります。ネットワークからの切断と再接続は時々役立つことがありますが、常にではありません。また、既存のTCP接続にとっては面倒で潜在的に悪いです。

だから私の質問は基本的に次のとおりです。PulseAudioに「ねえ、あなたがreallyがネットワークサウンドデバイスを見つけられない場合、もう一度見てください。」 ?


編集:module-zeroconf-discoverpacmdでアンロードおよびリロードしてもどちらも役に立たず、表示されません表示されませんデバイスがpavucontrolまたはavahi-browse -t --all | grep PulseAudioにリストされていない場合でも、pacmd list-sinksは多くの正しい見た目を表示するため、本質的にavahi問題になります。


編集2:両方のボックスでUbuntu 12.04を使用して、すべての違いを確認しています。

8
Christian

単純なSudo service avahi-daemon restartは、avahi-browseがそのavahiが再起動する前にデバイスを見るにもかかわらず、トリックを行います。私を正しい方向に向けてくれたTakkatに感謝します。

4
Christian
  1. 「シンク」PC(スピーカーでサウンドを再生したい)で、ターミナルに移動して次のコマンドを発行し、PulseAudioコマンドシェルを開きます。

    $ pacmd

    次のウェルカムメッセージを含むPythonのようなシェルが表示されます。

    Welcome to PulseAudio! Use "help" for usage information. >>>
  2. PulseAudioシェルのコマンドを使用して、PCでサウンドを再生できるデバイスを一覧表示します。
    >>> list-sinks
    これで、すべてのサウンドシンクの詳細なリストが表示されます。
  3. 選択したシンクの完全なnameを書き留めてください。サウンドカードの属性として表示されます。たとえば、私の場合は次のとおりです。

    1 sink(s) available. index: 0 name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
    ...

私の興味のある文字列は「alsa_output.pci-0000_00_1b.0.analog-stereo」です

  1. 次にソースPC(オーディオマルチメディアストリームのオリジン)に移動し、ターミナルを開いて次のコマンドを発行します

    $ pactl load-module module-tunnel-sink "server=192.168.1.105 sink=alsa_output.pci-0000_00_1b.0.analog-stereo sink_name=home_theater"

    ここで、192.168.1.105はシンクPCのIPアドレス、「alsa_output.pci-0000_00_1b.0.analog-stereo」はシンクの端末からコピーした文字列、「home_theater」は単なる仮名ですコンピューターでこの仮想サウンド出力デバイスを呼び出します。

  2. 最後に、この仮想サウンドデバイスを選択します。
    $ pacmd set-default-sink home_theater

    ワラ!!
6
Rishav Ambasta

この回答はテストされていないため、機能しない可能性がありますが、正しい方向に導く可能性があります。

未解決を確認できます Avahiサービスの問題 時々Puls​​eAudioサーバーに接続できません。ネットワークまたはpulseaudioサーバーを再起動することで再接続に成功するかもしれませんが、残念ながらこれは常に機能するとは限りません。

この問題を克服するために、Avahi名前解決を使用するのではなく、ネイティブTCPプロトコルを使用してIPに直接ストリーミングするネットワークオーディオストリームを確立しようとすることがあります。

これを行うには、受信側で module-tunnel-sink をロードすることにより、リモートシンクをトンネルできます。送信側では、 module-native-protocol-tcp をロードして、ネイティブTCPプロトコルを有効にする必要があります。

用語とPulse_SERVER変数の定義方法については、この質問も参照してください。

起動時にPulseAudioのデフォルトシンクをリモートサーバーに自動的に設定する方法-Ubuntu 9.04

これはUbuntu 9.04にとってはかなり古い質問ですが、私の知識用語と手順はそれ以来あまり変わっていません。

ネットワーク接続に関するPulseAudio Wiki もフォローしてください。

3
Takkat

Pulseaudioサービスを強制終了するpulseaudio -kを試すことができます(自動的に再起動するようです)。これは以前に私に物事をもたらしました。

時々役立つもう1つのことは、Pulseaudio Preferences(別名paprefs)のボックスのチェックを外してからチェックを外すことです。チェックボックスは、Make discoverable PulseAudio network sound devices available locallyNetwork Access、およびEnable network access to local sound devicesNetwork Serverです。明らかにこれはおそらくあなたが使用しているものに対してのみ機能します。

1
gib