題 如何通過WI-FI將我的GNU / Linux音頻輸出流式傳輸到Android設備?


我想通過網絡(Wi-Fi)將音頻輸出流式傳輸到我的Android設備。我不是在尋找音樂/視頻流媒體解決方案,但我會將我的GNU / Linux桌面的任何音頻輸出流式傳輸到我的Android工作,就像藍牙耳機一樣。

我的GNU / Linux桌面是Debian Wheezy,聲音由pulseaudio提供。

我已經嘗試過Pulseaudio的raop模塊(並在paprefs上啟用它)+ Android的AirBuddle應用程序,但音頻沒有流式傳輸(pulseaudio seens連接到AirBuddle,但聲音沒有重現,某些軟件中的連接失敗,有些其他軟件聲音被卡住了)。


29
2018-06-09 01:20


起源




答案:


有一個非常簡單的解決方案,因為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

附:你也可以檢查一下 這個維基頁面 有關Pulseaudio網絡流的一般信息,以及 這個維基頁面 關於RTP流媒體。不要期望通過WiFi傳輸原始音頻太多;它需要大量的帶寬。即使使用具有強大信號的高端無線路由器/ AP,我也無法獲得超過它的口吃音頻。您最好的選擇可能是設置一個合適的媒體服務器(如Rygel,它與Pulseaudio配合使用)將原始音頻轉碼為類似MP3的內容,然後將其轉換為流媒體服務器。


20
2018-05-06 11:57



這也適用於這個Android應用程序:簡單協議播放器 play.google.com/store/apps/...  請注意,這默認為rate = 44100,因此您可能希望使用它。 - Jannes
只是為了澄清:輸出 pactl list sources short  最好找到源參數的編號。 - wolfmanx
運用 pactl list | grep "Monitor Source" 顯示更多相關來源。 - markroxor


您可以使用 VLC 通過HTTP提供pulseaudio輸出的MP3流。
主要優點是您無需在遠程設備上安裝任何特殊軟件,只需要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以上,只能聽到遠程設備。


9
2018-01-04 22:29



真棒!有一個3秒的滯後,但我很高興這個小黑客,直到我找到該死的電纜。我可能要買另一個...... - Slabo
@Slabo好點,由於某種原因,我錯誤地認為OP只想流音樂。編輯我的回答 - wilks
單行代替前兩行: 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}' - polynomial_donut


要通過wifi將音頻輸出流式傳輸到Android手機,您需要在Android設備上的PC和客戶端軟件上安裝發送音頻的服務器軟件。可用選項是

WiFi音頻無線音箱

運行WiFi Audio Android App並按開始,您將在底部看到移動設備的IP地址 之後運行Windows / Linux應用程序並將移動設備的IP地址放在IP地址字段中,然後在PC應用程序上按啟動鍵。現在,所有從PC發出的音頻都將發送到移動設備,您將在移動設備上聽到音頻。
下載 

SoundWire

從您的PC無線傳輸任何音樂或音頻到您的Android手機,平板電腦或其他PC
主頁  另見 

其他有用的鏈接
XBMC  android SE


8
2018-05-02 03:50



SoundWire滯後1-2秒 - Gaurav Gupta
@gauravgupta如果您選擇較小的緩衝區大小,則不會延遲。也嘗試使用壓縮。這對我很有用。 - raacer
你能把WiFi音頻的PC應用程序下載鏈接放在這裡嗎? - seyed
WiFi音頻無線揚聲器已從github中刪除,論壇中的編譯版本被用戶報告為惡意軟件。小心! Soundwire從它的分佈方式看起來也很腥。 - Genom


對於那些使用Soundwire並從筆記本電腦或PC發送wifi的人,使用ifconfig確保您使用正確的IP地址。 這仍然適用於今天,但大多數Linux發行版需要第二個wifi適配器發送wifi,你必須使用Android連接的那個。不是一個接收互聯網。發送它的那個。

即 - >如果您使用“A”wifi適配器連接到互聯網而“B”從“A”發送wifi,則將Android上的SoundWire連接到“B”而不是“A”。

如果您連接到不發送wifi的適配器,SoundWire將不會連接或流式傳輸,因此請相應地使用終端命令ifconfig將您的IP地址輸入到您的Andoroid應用程序中。

是的,有延遲,但這個應用程序,SoundWire,是最簡單的“多連接到IP和忘記”系統。沒有瘋狂的菜單可以通過。是的,它確實接受了多個連接。前幾天我用了2。它會在發送傳輸的設備的主窗口中附加連接到它的設備數量。

直到今天,在我的地方使用這個作為多房間/短距離無線電廣播系統。

請享用。


0
2017-12-29 01:30





哇老了...

無論如何,使用VLC。漂亮的GUI一路走來。

  • 啟動桌面上的VLC。
  • 點擊流,選擇文件(添加你想要的文件),點擊流。
  • '下一步'如果一切正確的話。
  • 對於新目的地,請選擇“http”(或您想要使用的任何內容)。 如果要在本機上播放,請選擇本地顯示 你也來自於。 接下來的幾個對話都是不言自明的。

在您的Android設備上啟動VLC。點擊搜索按鈕旁邊的圖標(指向點的箭頭)。輸入 http://<IP ADDRESS O OF THE MACHINE RUNNING VLC>:8080/ 對我來說這是 http://xxx.ca:8080/

經過測試和工作。現在,可以在2013年6月9日的古代時期做到這一點嗎?也許吧,但是我太懶了,無法檢查VLC的提交日誌;)


-4
2018-04-24 18:26



他不是在尋找音樂/視頻流媒體解決方案。 - Cristian Ciupitu