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 :

  1. Configurer yum pour utiliser le repository DAG
  2. Exécuter la commande :
    yum install ffmpeg
  3. Télécharger les dernières sources de yamdi sur le site de yamdi (sourceforge):
    wget http://......../yamdi-1.6.tar.gz
  4. 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 :

  1. Créer le script shell :
    vi mp3toflv.sh
  2. 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
  3. Placer l’image black_video.png (en téléchargement ici) dans le même dossier que le script mp3toflv.sh.
  4. 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>
…