在linux上播放mp3声音缓冲区

时间:2011-10-24 11:02:54

标签: c++ linux audio network-programming mp3

我希望能够在Linux上播放我在特定端口上收到的mp3音频声音缓冲区。这是一个连续的直播。我看过pulseaudio,portaudio,mpg123和其他许多人,但似乎不知道该怎么做。

mp3声音是从网络上的另一台计算机接收的,使用naudio和lame进行转换。如果我在Windows PC上收到声音,我可以使用C#中的naudio提供的dll来播放它。但我不确定如何在Linux中解决它。

任何建议都将不胜感激。

提前致谢,

2 个答案:

答案 0 :(得分:1)

你看过madplay了吗?

它可以从标准输入读取MP3数据。您可以使用简单的程序将您从套接字读取的数据重定向到madplay的标准输入,甚至使用shell命令:

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

如果你在linux盒子上使用alsa,上面的代码就可以了。

更准确地说,在我的机器上我能够做到以下几点:

  • 使用netcat:

    通过TCP套接字流式传输mp3文件

    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

答案 1 :(得分:1)

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

  • 将您的信息流发送到特定主机上的特定端口: nc 192.168.1.55 4455 <example.mp3
  • 使用nc监听端口并将流重定向到直接播放流的mpg321: nc -l 4455 | mpg321 -