mp3 streaming via Apache et mod_flv
Le streaming de mp3 peut être réalisé en utilisant une application dédiée comme Icecast. Cependant, l’installation d’une telle application peut s’avérer contraignante sur un serveur web exploitant Apache.
Alors pourquoi ne pas utiliser directement Apache comme serveur de streaming?
Cette option est viable à deux conditions:
- se contenter d’un pseudo-streaming
gestion du timeshifting, soit possibilité d’écouter la fin d’un mp3 sans en avoir téléchargé le conten, mais aucune gestion de la bande passante - utiliser des fichiers flv
les mp3s devront être intégrés à un fichier flv (Adboe Flash Video Codec, ce qui peut allourdir le fichier audio d’environ 10%
Premièrement, il est nécessaire d’installer le module mod_flv pour Apache. La démarche d’installation est décrite dans un précédent article: Apache video streaming: flv et mp4 (H264) via modules open-source.
Une fois ce module fonctionnel, il est nécessaire d’installer les logiciels ffmpeg (encodage de vidéos) et yamdi (injection de metadata dans le fichiers flv). L’installation sous CentOS 5.2 avec Plesk se déroule selon les étapes suivantes :
- Configurer yum pour utiliser le repository DAG
- Exécuter la commande :
yum install ffmpeg - Télécharger les dernières sources de yamdi sur le site de yamdi (sourceforge) :
wget http://......../yamdi-1.6.tar.gz
- Décompresser et compiler yamdi :
tar xzf yamdi-1.6.tar.gz cd yamdi-1.6 gcc yamdi.c -o yamdi -O2 -Wall
Tous les outils nécessaire sont désormais installés.
L’étape suivante consiste à intégrer le fichier audio mp3 d’origine à un fichier flv ne présentant qu’une image noire comme contenu vidéo. ffmpeg est utilisé pour l’encodage et l’intégration du fichier source, et yamdi pour la création de keyframes afin de permettre le pseudo-streaming sur le fichier de sortie au format flv.
Afin de se simplifier la vie, il est recommandé de créer un script shell réalisant ce travail, comme décrit dans la marche à suivre suivante :
- Créer le script shell :
vi mp3toflv.sh
- Contenu du script (en téléchargement ici) :
#!/bin/sh ffmpeg -loop_input -f image2 -i black_video.png -r 1 -vcodec flv -i $1 -acodec copy -qscale 2 -g 5 -cmp 3 -subcmp 3 -mbd 2 $2 -shortest yamdi -i $2 -o $2-tmp rm $2mv $2-tmp $2
- Placer l’image black_video.png (en téléchargement ici) dans le même dossier que le script mp3toflv.sh.
- Donner les droits d’exécution au script:
chmod 755 mp3toflv.sh
L’appel à ce script se fait de la manière suivante:
./mp3toflv.sh /path/to/source.mp3 /path/to/output.flv
Une fois le fichier flv obtenu par cette méthode, il suffit de le lire avec un lecteur de mp3 en flash.
Par exemple, le lecteur JW Player qui peut être utilisé pour ne reproduire que du son.
Il est nécessaire de préciser dans la playlist xspf pour JW Player le mode de streaming par le biais d’une balise meta:
... <track>… <location>http://www.host.com/directory/file.flv</location> <meta rel=”provider”>http</meta> …</track> …
Cette méthode peut être testée par le biais de la radio SupaLame, qui utilise ce modèle pour offrir le streaming de sessions audios d’une durée supérieure à 4h stockées en un seul fichier.
Laisser un commentaire