我希望能够在 Linux 上播放我在特定端口上接收到的 mp3 音频声音缓冲区。这是一个连续的直播。我看过 pulseaudio、portaudio、mpg123 等等,但似乎不知道该怎么做。
mp3 声音是从网络上的另一台计算机接收的,并使用 naudio 和 lame 进行转换。如果我在 Windows PC 上收到声音,我可以使用 C# 中提供的 naudio dll 简单地播放它。但我不确定如何在 Linux 中绕过它。
如有任何建议,我们将不胜感激。
提前致谢
最佳答案
你看过madplay
吗?
它可以从标准输入读取 MP3 数据。您可以使用一个简单的程序,甚至使用 shell 命令将从套接字读取的数据重定向到 madplay 的标准输入:
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 本地主机 8899 | madplay - -o wave:- |播放
关于c++ - 在 Linux 上播放 mp3 声音缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7874613/