2014-04-30 4 views
4

Je pense donc à créer une application de noeud où les utilisateurs peuvent ajouter des chansons à une "file d'attente" et diffuser les chansons à tous les utilisateurs en temps réel, mais après avoir regardé, je ne sais pas comment faire.Comment créer une file d'attente de diffusion audio en temps réel?

L'article premier je l'ai lu était celui-ci: http://pedromtavares.wordpress.com/2012/12/28/streaming-audio-on-the-web-with-nodejs/

Il semble comme un serveur Icecast pourrait fonctionner très bien pour cela, mais est-il un moyen pour le nœud de pousser des chansons à une file d'attente pour être joué par le Icecast serveur? Si loin de ce que j'ai lu il semble que la seule façon de gérer les chansons jouées est de spécifier une playlist ou d'ajouter des chansons manuellement, et dire au serveur de ne rien jouer quand il n'y a pas de chansons dans la file d'attente semble aussi un problème potentiel.

Répondre

2

J'ai récemment travaillé sur un projet similaire. Ma solution était d'utiliser nodeshout (liaison de nœud pour libshout) pour envoyer des données audio du nœud à Icecast.

Consultez le streaming example. Vous pouvez l'utiliser comme ceci:

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() 

Cela créera une boucle et jouera la chanson après la chanson. Conseil: Augmentez le délai d'attente de source dans votre icecast.xml à ~ 30 secondes. Dans certains cas, avec la valeur par défaut, le flux prend fin, en raison de la présence de «pistes rapides» dans les morceaux, où le début de la chanson est moins rapide (pour commencer à jouer plus vite). J'ai fait un Gist avec un autre exemple: https://gist.github.com/Cretezy/3623fecb1418e21b5d1f77db50fc7e07

Questions connexes