Création D'un Deb De Nginx-Rtmp

Avoir un serveur RTMP avec nginx c’est bien, pourrir sa distro avec des fichiers qui trainent un peu de partout, c’est moins bien.

Pour cela on va partir d’un tuto piqué à cette URL: https://wiki.debian.org/DhyanNataraj/RtmpVideoStreamingViaNginx

L’idée est de télécharger le paquet source de ubuntu/debian puis de recompiler nginx avec le module RTMP pour pouvoir faire de la vidéo.

Téléchargement des sources pour la compilation

La première étape consiste à créer un répertoire pour pouvoir travailler tranquillement. Le paquet debian crée pas mal de fichiers, cela évite de mette le souk dans votre dossier.

.. code-block:: console

$ mkdir nginx_rtmp
$ cd nginx_rtmp
# on récupére les tools pour la compilation, (ffmpeg pour debian)
$ sudo apt-get install build-essential devscripts libav-tools
# Dependances pour pouvoir construire NGINX
$ sudo apt-get build-dep nginx

Il est temps de DL les sources .deb de nginx. Il n’est pas nécessaire (ni recommandé) de le télécharger en sudo.

.. code-block:: console

$ apt-get source nginx

Il faut ensuite récupérer le dernier module pour nginx-rtmp à cette adresse -> https://github.com/arut/nginx-rtmp-module/releases (v1.1.6 à l’heure actuelle)

.. code-block:: console

$ wget https://github.com/arut/nginx-rtmp-module/archive/v1.1.6.tar.gz
$ tar xvf v1.1.6.tar.gz

Modification du fichier de création du deb

Commencez par créer un dossier pour le module RTMP dans les sources de nginx.

.. code-block:: console

$ mkdir nginx-1.4.6/debian/modules/nginx-rtmp-module
$ cp -r nginx-rtmp-module-1.1.6/*  nginx-1.4.6/debian/modules/nginx-rtmp-module

Il est temps de sortir son plus bel éditeur de texte pour pouvoir modifier le fichier de build et intégrer le module RTMP dans le process de build. Éditez le fichier: nginx-1.4.6/debian/rules

Trouvez la section config.status.full contenant ces lignes:

.. code-block:: bash

--add-module=$(MODULESDIR)/nginx-auth-pam \
--add-module=$(MODULESDIR)/nginx-echo \
--add-module=$(MODULESDIR)/nginx-upstream-fair \
--add-module=$(MODULESDIR)/nginx-dav-ext-module \

Et ajoutez à la fin:

.. code-block:: bash

--add-module=$(MODULESDIR)/nginx-rtmp-module \

Éditez ensuite le fichier nginx-1.4.6/debian/source/include-binaries et ajouter ces lignes:

.. code-block:: bash

debian/modules/nginx-rtmp-module/test/rtmp-publisher/RtmpPlayer.swf
debian/modules/nginx-rtmp-module/test/rtmp-publisher/RtmpPublisher.swf
debian/modules/nginx-rtmp-module/test/rtmp-publisher/RtmpPlayerLight.swf
debian/modules/nginx-rtmp-module/test/www/bg.jpg
debian/modules/nginx-rtmp-module/test/www/jwplayer_old/player.swf
debian/modules/nginx-rtmp-module/test/www/jwplayer/jwplayer.flash.swf

Ce fichier permet d’inclure des binaires dans le package deb.

La création du package se fait par: cd nginx-1.4.6; debuild. Si tout se déroule suivant le plan, dans le répertoire crée, vous devriez trouver des fichiers .deb de nginx. Pour les installer il suffit de taper:

.. code-block:: bash

$ sudo dpkg -i nginx-full_*.deb nginx-common_*.deb 

Il est recommandé de virer les anciens packages avant.

Configuration rapide

Éditez votre fichier /etc/nginx/nginx.conf, et ajoutez à la fin:

.. code-block:: nginx

rtmp {
    server {
            listen 1935;
            chunk_size 4000;
            application live {
                live on;
                record off;
            }   
        }       
}    

.. code-block:: console

$ sudo nginx -t        # Permet de tester le Configuration
$ sudo nginx -s reload # Relance nginx

Vous pouvez utiliser avconv/ffmpeg pour Streamer votre écran:

.. code-block:: console

$ avconv -f x11grab  -i :0.0 -s 1920x1080 -c:a libmp3lame -ab 96k -ar 22050 -threads 0 -f flv "rtmp://127.0.0.1/live/test"
$ vlc rtmp:///127.0.0.1/live/test