2011-10-24 48 views
1

我希望能夠在Linux上播放我在特定端口上收到的mp3音頻聲音緩衝區。這是一個持續的直播。我曾經看過pulseaudio,portaudio,mpg123等,但似乎無法知道該怎麼做。在Linux上播放mp3聲音緩衝區

從使用naudio和lame轉換的網絡上的另一臺計算機接收到mp3聲音。如果我在Windows PC上收到聲音,我可以使用naudio在C#中提供的dll來播放它。但我不確定如何在Linux中解決它。

任何建議將不勝感激。

由於提前,

回答

1

你有沒有看madplay

它可以讀取來自標準輸入的MP3數據。你可以用一個簡單的程序重定向到madplay這樣的標準輸入您從套接字讀取數據,或者即使有shell命令:

netcat <hostname> <portname> | madplay - -o wave:- | aplay 

,如果你在Linux中使用alsa以上會工作。

更確切地說,我的機器上,我能做到以下幾點:

  • 流通過TCP套接字MP3文件使用的netcat:

    cat ~/Music/Linkin\ Park/06\ Demos\,\ Unreleased\ \&\ Other/1997\ -\ Xero/04\ -\ Stick\ N\ Move.mp3 | netcat -l localhost -p 8899

  • 連接到端口並使用netcat讀取MP3數據並將流路由到madplay:

    netcat localhost 8899 | madplay - -o wave:- | aplay

+0

感謝信息。我會研究它,讓你知道我是否成功或需要進一步的幫助。你有沒有試過它在流緩衝區上工作,因爲我不是在傳輸mp3文件而是在其緩存的聲音數據? – Ali

+0

如果您正在傳輸流或文件,則無關緊要。據我所知,mp3數據是一堆帶有標題的「幀」,並且從哪個幀開始播放並不重要。 – 2011-10-25 17:56:56

1

您可以直接使用mpg321和nc(netcat)。

  • 發送您的流到特定端口的特定主機上: nc 192.168.1.55 4455 <example.mp3
  • 聽與NC端口和流重定向到mpg321播放直接流: nc -l 4455 | mpg321 -