GNU / Linuxオーディオ出力をWI-FI経由でAndroidデバイスにストリーミングする方法は?


39

ネットワーク(Wi-Fi)経由でAndroidデバイスにオーディオ出力をストリーミングしたい。音楽/ビデオストリーミングソリューションを探しているわけではありませんが、GNU / Linuxデスクトップのオーディオ出力をBluetoothヘッドフォンのようなAndroidの作品にストリーミングします。

私のGNU / LinuxデスクトップはDebian Wheezyであり、音はpulseaudioによって提供されます。

Pulseaudioのraopモジュール(およびpaprefsで有効化)+ AndroidのAirBuddleアプリを試しましたが、オーディオはストリーミングされません(pulseaudioがAirBuddleに接続されていますが、音が再生されず、一部のソフトウェアでは接続エラーが発生します。他のソフトウェアでは音が詰まっています)。

回答:


27

PulseAudioには必要なツールがすべて揃っているため、非常に簡単なソリューションがあります。

  1. コマンドでソースデバイス名を取得する pactl list | grep Name
  2. 次の名前のスクリプトを作成しますpashare

    #!/bin/sh
    case "$1" in
      start)
        $0 stop 
        pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2 source=<source_name_here> record=true port=8000
        ;;
      stop)
        pactl unload-module `pactl list | grep tcp -B1 | grep M | sed 's/[^0-9]//g'`
        ;;
      *)
        echo "Usage: $0 start|stop" >&2
        ;;
    esac
    
  3. いくつかの確認と準備を行います(スクリプトの実行を許可し、ポートが正常に開かれたかどうかを確認します):

    chmod 755 pashare
    ./pashare start
    netstat -nlt | grep 8000 
    telnet 127.0.0.1 8000
    
  4. PulseDroid.apkをダウンロードしてインストールします

  5. 電話でアプリを起動します。IPアドレスをコンピューターに設定し、ポートをに設定します8000

PSあなたもチェックすることができ 、このWikiページを一般的なPulseaudioのネットワークストリーミングに関する情報、およびため、このWikiページ RTPストリーミングについて。生のオーディオをWiFi経由でストリーミングすることをあまり期待しないでください。膨大な帯域幅を必要とします。強力な信号を備えたハイエンドワイヤレスルーター/ APを使用しても、音声が途切れる以上のことはありません。おそらく、適切なメディアサーバー(Rygelなど、Pulseaudioと連携して動作する)をセットアップして、生のオーディオをMP3のようなものにトランスコードし、代わりにストリーミングすることをお勧めします。


7
これは、このAndroidアプリでも完全に機能します。SimpleProtocol Playerplay.google.com/store/apps/… ただし、このデフォルトはrate = 44100であるため、使用することをお勧めします。
ジャンヌ

1
明確にするために:の出力はpactl list sources short ソースパラメータの数を見つける方が良いです。
-wolfmanx

4
を使用pactl list | grep "Monitor Source"すると、より関連性の高いソースが表示されます。
markroxor

18

VLCを使用して、pulseaudioの出力のMP3ストリームをHTTP経由で提供できます。
主な利点は、リモートデバイスに特別なソフトウェアをインストールする必要がなく、Webブラウザー(または音楽プレーヤー)でストリームを再生できることです。欠点は、オーディオのみであり、数秒の遅延がビデオに役に立たないことです

  1. pulseaudioの出力名を見つけます:

    pactl list | grep "Monitor Source" 
    
  2. VLC httpサーバーを起動して、XXXXを出力名に置き換えます。

    cvlc -vvv pulse://XXXX --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
    
  3. 必要に応じて、ローカルIPアドレスを見つけます ifconfig

  4. リモートデバイスで、ブラウザ(またはオーディオストリーミングアプリ)で以下を指定します。

    http://your.local.ip.address:8888/pc.mp3
    

注:ストリームは、完全にミュートしない限り、サーバーに設定されたボリュームの影響を受けません。必要に応じて、レベルを0より少しだけ高くして、リモートデバイスのみを聞くことができます。


Polynomial_donutによって最初の2つのステップが1つに結合されました。

cvlc -vvv pulse://$(pactl list | grep "Monitor Source" | awk '{print $3}') --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'

1
驚くばかり!3秒の遅れがありますが、私はその小さなケーブルを見つけるまで、この小さなハックに満足しています。私はおそらく別のものを購入する必要があります...
Slabo

@Slaboの良い点は、何らかの理由で、OPが音楽のストリーミングのみを望んでいると誤って想定していたことです。私の答えを編集しました
ウィルクス

2
最初の2行の代わりに1行: cvlc -vvv pulse://$(pactl list | grep "Monitor Source" | awk '{print $3}') --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
多項式

ストリームは、私にとっての音量設定に直接影響されます。イヤホンを接続するだけで、ラップトップから音が聞こえなくなります。
ロルフ

ところで、ラグが30分ほど続くのを止めるにはどうすればいいですか?
ロルフ

9

Wi-Fiを介してAndroidフォンにオーディオ出力をストリーミングするには、PCにオーディオを送信するサーバーソフトウェアと、Androidデバイスのクライアントソフトウェアをインストールする必要があります。利用可能なオプションは

WiFiオーディオワイヤレススピーカー

WiFi Audio Androidアプリを実行し、スタートを押すと、Windows / Linuxアプリケーションを実行した後、モバイルデバイスのIPアドレスが下部に表示され、モバイルデバイスのIPアドレスがIPアドレスフィールドに入力され、PCアプリケーションでスタートが押されます。これで、PCから出力されるすべてのオーディオがモバイルデバイスに送信され、モバイルデバイスでオーディオが聞こえます。
ダウンロード

SoundWire

PCからAndroid携帯電話、タブレット、または他のPCに音楽や音声をワイヤレスで送信します
ホームページ も参照

その他の便利なリンク
XBMC android SE


1-2 SECによるSoundWireラグ
のGauravグプタ

@gauravguptaより小さなバッファサイズを選択した場合、遅れはありません。また、圧縮を使用してみてください。これは非常にうまくいきました。
レイサー

WiFi AudioのPCアプリケーションダウンロードリンクをここに配置できますか?
セイド

1
WiFi Audioワイヤレススピーカーはgithubから削除され、フォーラムでコンパイルされたバージョンはユーザーによってマルウェアであると報告されています。注意してください!Soundwireは、配信方法からも怪しげに見えます。
ジェノム

0

Soundwireを使用し、ラップトップまたはPCからwifiを送信する場合は、ifconfigを使用して正しいIPアドレスを使用してください。これは今日でも機能しますが、ほとんどのLinuxディストリビューションでは、wifiを送信するために2番目のwifiアダプタが必要であり、Androidが接続されているアダプタを使用する必要があります。インターネットを受信するものではありません。それを送信するもの。

すなわち、インターネットに接続するために「A」wifiアダプタを使用し、「A」からwifiを送信するために「B」を使用している場合、AndroidのSoundWireを「A」ではなく「B」に接続します。

Wifiを送信しないアダプターに接続した場合、SoundWireは接続またはストリーミングしないため、端末コマンドifconfigを適切に使用して、AndoroidアプリにIPアドレスを入力します。

はい、遅れはありますが、このアプリSoundWireは、最も単純な「IPに接続して忘れる」システムです。クレイジーなメニューはありません。そして、はい、それは複数の接続を受け入れます。先日2を使いました。接続されているデバイスの数を、送信を送信するデバイスのメインウィンドウに追加します。

これを今日の私の場所でマルチルーム/近距離無線LANシステムとして個人的に使用しています。

楽しい。


-4

うわー、これは古い...

とにかく、VLCを使用します。かなりきれいなGUI。

  • デスクトップでVLCを起動します。
  • ストリームをヒット、ファイルを選択(必要な数のファイルを追加)、ストリームをヒットします。
  • すべてが正しい場合は「次へ」。
  • [新しい宛先]で[http](または使用するもの)を選択します。ストリーミング元のマシンでも再生したい場合は、[ローカルで表示]を選択します。次のいくつかのダイアログはすべて自明です。

AndroidデバイスでVLCを起動します。検索ボタンの横にあるアイコン(ドットを指す矢印)を押します。http://<IP ADDRESS O OF THE MACHINE RUNNING VLC>:8080/私のためにこれを入力しましたhttp://xxx.ca:8080/

テスト済みで動作しています。さて、6月9日の古代にこれを行うことができますか?たぶん、しかし私はVLCのコミットログをチェックするのが面倒です;)


3
彼は音楽/ビデオストリーミングソリューションを探していません。
クリスティアンシウピトゥ14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.