关于C#:在Linux上播放mp3声音缓冲区

play mp3 sound buffers on linux

我希望能够在特定端口接收的Linux上播放mp3音频声音缓冲区。这是连续不断的直播。我看过pulseaudio,portaudio,mpg123等等,但似乎不知道该怎么办。

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

任何建议将不胜感激。

预先感谢,


您看过madplay吗?

  • http://www.underbit.com/products/mad/
  • http://alcor.concordia.ca/manpages/sys1/madplay.1.html

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

1
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


您可以直接将mpg321与nc(netcat)一起使用。

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