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


8

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

だから私の質問は基本的に:「ねえ、本当にネットワークサウンドデバイスが見つからない場合はもう一度見てください」とPulseAudioに伝える方法はありますか?


編集:module-zeroconf-discover withをアンロードして再ロードしても効果pacmdはなく、デバイスがpavucontrolまたはにリストされていない場合でも、多くの正しいものを表示するため、それ自体はavahiの問題ではないようです。avahi-browse -t --all | grep PulseAudiopacmd list-sinks


編集2:私は両方のボックスでUbuntu 12.04を使用しています。


役立つコメントや回答を提供するための情報が不足している場合は、その旨をお知らせください。
クリスチャン

回答:


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

    $ pacmd

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

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

    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


私のために働きました-正確なシンクを指定する必要なく、新しいトンネルシンクモジュールとシンクのホストIPアドレスのみで動作します(私は自分のステレオに接続されているこのRaspberry Piで1つだけ使用するため、その必要はありません): 'pactl load-module module-tunnel-sink-new server = [2001:470:ca90:4:ba27:ebff:fee2:ada9] '-ありがとう!
Jean-Marc Liotier、2015年

4

そのavahiが再起動する前にデバイスが表示されsudo service avahi-daemon restartていavahi-browseても、単純な方法でうまくいきます。私を正しい方向に向けてくれたTakkatに感謝します。


3

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

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

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

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

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

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

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

ネットワーク接続についてPulseAudio Wikiもご覧ください。


1つのリンクをありがとう。そこにある解決策も実際に私の場合にも機能します:再起動する前でもデバイスsudo service avahi-daemon restartが表示されるためavahi-browse、期待していませんでした。
クリスチャン

@クリスチャン:良い助けになりました。とりあえずアバヒをあきらめました。
Takkat

あなたの命題が理解できたかどうかはわかりません。DNS名前解決を使用できますか、それともIPを知っている必要がありますか?固定IPを使用したくないのですが、HTPCの場合はこれで問題ありません。
クリスチャン

1
ええ、その理由は理解できます。同じ問題を抱えているためにこの質問につまずいた人々にとっては、それが最も簡単な解決策のように思えるので、私は自分の返信を書いたところです。
クリスチャン

1

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.