CentOS – Installer le module h264 streaming pour Lighttpd

Posted on 12/06/2012 · Posted in Linux

Nous allons commencer avec l’installation de lighttpd. Personnellement, j’utilise les repository EPEL pour le faire.

1
yum install lighttpd

Installation des outils et des headers.

1
yum install automake autoconf libtool bzip2-devel zlib-devel gcc make pcre-devel

Note: Avant de commencer, il est à noter que le lien donné par code-shop pour la compilation du module h264 avec Lighttpd 1.4.x ne contient pas les fichiers nécessaires à la compilation du module.
Voici donc la version que j’avais utilisé pour la compilation sous Debian avec Lighttpd 1.4.19. Cela fonctionne parfaitement sous CentOS6 avec Lighttpd 1.4.28.

Download de lighttpd-1.4.18_mod_h264_streaming-2.2.9.tar.gz

1
2
3
cd /tmp
curl -o "lighttpd-1.4.18_mod_h264_streaming-2.2.9.tar.gz" http://armetiz.info/wp-content/uploads/2012/06/lighttpd-1.4.18_mod_h264_streaming-2.2.9.tar1.gz
tar -xzvf lighttpd-1.4.18_mod_h264_streaming-2.2.9.tar.gz

Ensuite, nous allons telecharger les sources correspondant à la version précedement installé de Lighttpd.
Actuellement, sous CentOS 6 avec EPEL, il s’agit de Lighttp 1.4.28

1
2
3
cd /tmp
curl -o "lighttpd-1.4.28.tar.gz" http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.28.tar.gz
tar -xzvf lighttpd-1.4.28.tar.gz

Copie des modules h264 dans les sources de la 1.4.28

1
2
cd /tmp/lighttpd-1.4.18/src/
cp mod_h264_streaming.c mod_streaming_export.h moov.* mp4_io.* mp4_process.* mp4_reader.* mp4_writer.* output_bucket.* output_mp4.* /tmp/lighttpd-1.4.28/src/
1
2
cd /tmp/lighttpd-1.4.28/src/
vim Makefile.am

Vous pouvez rajouter les lignes suivantes après la définition du module mod_flv_streaming.

1
2
3
4
5
6
7
8
9
10
11
12
13
lib_LTLIBRARIES += mod_h264_streaming.la
mod_h264_streaming_la_SOURCES = mod_h264_streaming.c \
                                mod_streaming_export.h \
                                moov.c moov.h \
                                mp4_io.c mp4_io.h \
                                mp4_reader.c mp4_reader.h \
                                mp4_writer.c mp4_writer.h \
                                mp4_process.c mp4_process.h \
                                output_bucket.c output_bucket.h \
                                output_mp4.c output_mp4.h
mod_h264_streaming_la_CFLAGS = $(AM_CFLAGS) -DBUILDING_H264_STREAMING
mod_h264_streaming_la_LDFLAGS = -module -export-dynamic -avoid-version -no-undefined
mod_h264_streaming_la_LIBADD = $(common_libadd)

On va s’occuper de la compilation

1
2
3
4
cd /tmp/lighttpd-1.4.28/
./autogen.sh
./configure --prefix=/opt/lighttpd
make && make install

On va maintenant récupérer le .so que l’on vient de compiler et correspondant au module h264.

1
2
cd /opt/lighttpd/lib/
cp mod_h264_streaming.so /usr/lib64/lighttpd/

Alors que les étapes spécifiques aux binaires sont terminés,
Voici la partie configuration : /etc/lighttpd/conf.d/h264.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
## /etc/lighttpd/conf.d/h264.conf
#######################################################################
##
##  H264 Module
## ---------------
##
## see http://h264.code-shop.com/trac/wiki/Mod-H264-Streaming-Lighttpd-Version2
##

server.modules += ( "mod_h264_streaming" )

h264-streaming.extensions = ( ".mp4" )
#######################################################################

Dans le fichier /etc/lighttpd/modules.conf, nous allons ajouter le chargement du fichier de configuration précédemment créé.

Apres le scope concernant server.modules, nous ajoutons

1
2
3
4
5
## /etc/lighttpd/modules.conf
##
## mod_h264_streaming
##
include "conf.d/h264.conf"

Mise à jour

Attention, lorsque vous allez mettre à jour vos paquets via “yum update“, il est fort probable d’obtenir l’erreur suivante lors du démarrage de lighttpd.

(plugin.c.421) plugin-version doesn’t match lighttpd-version for h264_streaming
(server.c.926) Initialization of plugins failed. Going down.

En gros, le module h264 que vous avez compiler n’est plus valide pour la nouvelle version de lighttpd que vous avez récupéré suite à une mise à jour.

Dans un premier temps, désactiver le module h264 afin de pouvoir lancer lighttpd correctement :

1
2
3
4
5
## /etc/lighttpd/modules.conf
##
## mod_h264_streaming
##
#include "conf.d/h264.conf"

Une fois fait, vous pouvez démarrer lighttpd tranquillement et recommencer la compilation du module h264.
Pour cela, rien de plus simple: reprenez le tutoriel à son début en prenant soin de récuperer les sources de lighttpd correspondant à la version installée.