我希望能够在Linux上播放我在特定端口上收到的mp3音频声音缓冲区。这是一个连续的直播。我看过pulseaudio,portaudio,mpg123和其他许多人,但似乎不知道该怎么做。
mp3声音是从网络上的另一台计算机接收的,使用naudio和lame进行转换。如果我在Windows PC上收到声音,我可以使用C#中的naudio提供的dll来播放它。但我不确定如何在Linux中解决它。
任何建议都将不胜感激。
提前致谢,
答案 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 -l 4455 | mpg321 -