Créer un serveur multistream RTMP pour streamer sur twitch, youtube etc...
Depuis peut, je stream sur plusieurs plateforme (twitch et theta.tv ) et il me fallait une solution pour envoyer mon flux vidéo rtmp sur les 2 plateformes en même temps. Il existe déjà des services qui propose ce systeme (restream.io par exemple), le souci c'est que c'est payant du moment que tu ajoute un serveur rtmp à la main (c'est le cas de theta.tv). Comme je suis un gros radin et que j'ai pas envi de payer, je me suis penché sur la question.
Il existe un module pour Nginx qui gere les flux rtmp, on va donc passer par la. Le principe de fonctionnement est que je vais envoyer mon flux vidéo sur le serveur qui ensuite va l'envoyer sur les 2 plateformes (ou plus ...) simultanément. La procédure ci-dessous a été effectué sur une VM sous Debian 10.
1. On installe les dépendances
Aller on attaque par apt comme d'hab.
# apt-get -y update # apt-get install build-essential libpcre3 libpcre3-dev libssl-dev zlibc zlib1g zlib1g-dev git
Ensuite, on télécharge Nginx (versions stable dans l'exemple)
# wget http://nginx.org/download/nginx-1.18.0.tar.gz
On le décompresse
# tar xvfz nginx-1.18.0.tar.gz
On rentre dans le répertoire
# cd nginx-1.18.0
Et on télécharge le module RTMP pour Nginx
# git clone https://github.com/arut/nginx-rtmp-module.git
2. On compile
On configure la compilation, compile et on installe
# ./configure --with-http_ssl_module --add-module=nginx-rtmp-module/ # make # make install
On lance Nginx pour test
# /usr/local/nginx/sbin/nginx
3. Serveur Multistream
On va dans le fichier de configuration de Nginx "/usr/local/nginx/conf/nginx.conf:" et on édite :
rtmp { server{ listen 1935; chunk_size 4096; #Enable live broadcast service application live { live on; record off; #Push, restream RTMP push rtmp://live.twitch.tv/app/YOUR_TWITCH_KEY; push rtmp://a.rtmp.youtube.com/live2/YOUR_YOUTUBE_KEY; } } }
Et on relance le serveur.
4. Open Broadcaster
Pour se connecter au serveur de stream, il suffit de renseigner l'url de votre serveur comme ceci : "rtmp://SERVER_IP/live/" et avec "stream_key" comme clé de stream.
Inspiré (carrément pompé...) sur : https://arstech.net/how-to-setup-nginx-rtmp-server/