J'ai une application Ruby On Rails fonctionnant sur Nginx qui sert des MP3 en utilisant JW player. Je dois être en mesure de définir l'heure de début et la durée des éléments de la liste de lecture. D'après ce que je peux dire, pour faire cela, je dois diffuser les fichiers MP3. Comment puis-je configurer Nginx pour faire cela ?
Réponses
Trop de publicités?Nginx dispose d'un support intégré pour la diffusion de fichiers FLV par le biais de la fonction HttpFlvStreamModule . Vous devez spécifier le module lorsque vous compilez / recompilez Nginx.
# ./configure --with-http_flv_module ...SOME-OTHER-OPTS...
Vous pouvez ensuite configurer votre nginx.conf pour diffuser des fichiers FLV comme suit :
...
http {
...
server {
...
location ~ \.flv$ {
flv;
}
...
}
...
}
En quoi cela peut-il aider puisque la question initiale portait sur le streaming de fichiers MP3 ? Eh bien, vous pouvez utiliser FFMPEG pour convertir les MP3 en fichiers FLV comme ceci :
ffmpeg -y -i /home/song.mp3 -f flv -acodec mp3 -ab 64 -ac 1 /home/song.flv
AFAIK, Nginx est un serveur HTTP. Pour diffuser de l'audio, vous aurez besoin d'un logiciel comme Icecast : http://www.icecast.org/
Les différences techniques entre le streaming et le téléchargement se situent principalement au niveau du client et du serveur. Pour l'utilisateur final, le streaming signifie qu'il ne pourra probablement pas sauvegarder les médias sur son ordinateur. Avec le téléchargement, l'utilisateur final ne pourra peut-être pas commencer à le regarder tout de suite. Bien qu'en pratique, la plupart des données peuvent être visionnées dès que les premiers bits arrivent sur le client.
Ceci étant dit, êtes-vous sûr d'avoir besoin d'un serveur de streaming pour utiliser JWplayer ? Ne pouvez-vous pas simplement le faire pointer vers une URL et laisser JW aller la chercher ? Dans ce cas, Nginx peut très bien servir l'audio.
En fait, je suis presque sûr de l'avoir déjà fait avec Apache. La vidéo a commencé à être lue après un peu de mise en mémoire tampon - comme c'est le cas avec Youtube.