Archive for the ‘Apache’ Category.

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 :

  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> …

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.

  • Share/Save/Bookmark

Apache video streaming: flv et mp4 (H264) via modules open-source

Note: cette installation s’est déroulée avec Apache 2.2.3  (Plesk 9.2) sous CentOS 5.2

Pour réaliser du pseudo streaming via HTTP avec le serveur web Apache, il suffit d’installer deux modules open-source:

L’installation…

  1. Installer APXS pour Apache
    yum install httpd-devel
  2. Télécharger la source du module mod_flv
    wget http://people.apache.org/%7Epquerna/modules/mod_flvx.c
  3. Compiler et installer mod_flv
    apxs -c -i ./mod_flvx.c
  4. Créer/Editer un fichier de configuration mod_flv pour Apache
    vi /etc/httpd/conf.d/mod_flvx.conf
    avec le contenu suivant:
    LoadModule flvx_module modules/mod_flvx.so
    AddHandler flv-stream .flv
  5. Redémarrer Apache pour être certain que l’installation de mod_flv s’est bien déroulée
    service httpd restart
  6. Télécharger et décompresser le module H264 Streaming
    wget http://h264.code-shop.com/download/apache_mod_h264_streaming-2.2.5.tar.gz
    tar -xvzf apache_mod_h264_streaming-2.2.5.tar.gz
  7. Compiler et installer le module H264 Streaming
    cd ./mod_h264_streaming-2.2.5
    ./configure
    make
    make install
  8. Créer/Editer un fichier de configuration mod_flv pour Apache
    vi /etc/httpd/conf.d/mod_h264_streaming.conf
    avec le contenu suivant:
    LoadModule flvx_module modules/mod_flvx.so
    AddHandler flv-stream .flv
  9. Redémarrer Apache
    service httpd restart

Des fichiers flv avec des keyframes…

  • les clés peuvent être ajoutées sur un fichier flv existant en utilisant flvtool2 (DAG repository):
    flvtool2 -U video.flv

Tester le streaming HTTP…

Sources:

  • Share/Save/Bookmark