如何创build一个实时audiostream队列?

所以我正在考虑创build一个节点应用程序,在这个应用程序中,用户可以将歌曲添加到“队列”,并将歌曲实时播放给所有用户,但环顾四周后,我不太清楚如何完成此操作。

我读的主要文章是这个: http : //pedromtavares.wordpress.com/2012/12/28/streaming-audio-on-the-web-with-nodejs/

看起来icecast服务器可以很好地工作,但是有没有一种方法可以让节点将歌曲推送到由icecast服务器播放的队列中? 到目前为止,从我读过的东西看来,pipe理歌曲的唯一方法是指定播放列表或手动添加歌曲,并且在队列中没有歌曲时告诉服务器不播放任何内容,这似乎也是一个潜在的问题。

最近我一直在做类似的项目。 我的解决scheme是使用nodeshout ( libshout的节点绑定)将audio数据从Node发送到Icecast。

看看stream媒体的例子 。 你可以这样使用它:

function playSong(){ // Choose next song const nextSong = "./song.mp3"; const fileStream = new FileReadStream(nextSong, 65536); const shoutStream = fileStream.pipe(new ShoutStream(shout)); shoutStream.on('finish',playSong); } playSong() 

这将创build一个循环播放歌曲后的歌曲。

提示:将icecast.xml源超时icecast.xml秒。 在某些情况下,由于歌曲的“快速启动”,歌曲的开始位置较低(开始播放速度较快),所以在某些情况下,使用默认设置会导致歌曲stream结束。

我已经做了一个Gist进一步的例子: https : //gist.github.com/Cretezy/3623fec1414e21b5d1f77db50fc7e07