Linux Streaming Server

Nous allons ici mettre ne place un serveur de Stream pour une distribution Centos 7.
Ouvrez un terminal sur la machine qui va etre le serveur

Tapez : su
Entrez : Votre mots de passe surper Admin

Telechargons ensuite les package necessaires pour compiler notre version de Nginx : yum -y install gcc gcc-c++ make zlib-devel pcre-devel openssl-devel git wget

Creation d’un repertoire source : mkdir /opt/source/

Deplacez vous dans ce nouveau repertoire : cd /opt/source/

Telechargez uneversion de Nginx : wget http://nginx.org/download/nginx-1.10.2.tar.gz

Decompressez l’archive quevous venez de telecharger : tar -xzf nginx-1.10.2.tar.gz

Recuperation du module RTMP pour Nginx : git clone https://github.com/arut/nginx-rtmp-module.git

Deplacez cous dans le repertoire suivant : cd /opt/source/nginx-1.10.2

Compilez votre version de Nginx avecl’ensemble des arguments suivant : ./configure --user=nginx --group=nginx --add-module=../nginx-rtmp-module/ --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6

Pour terminer la compilation faites successivement les deux commandes suivantes : make et make install

Creez un Unser Nginx : useradd -r nginx
Creez un repertoire temporaire pour ce nouvelle users : mkdir -p /var/cache/nginx/client_temp/
Donnez les droits a l’utilisateur en question : chown nginx. /var/cache/nginx/client_temp/

Configurons maintenant le service Nginx

cat > /lib/systemd/system/nginx.service << H2
Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP \$MAINPID
ExecStop=/bin/kill -s QUIT \$MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
H2

chmod a+rx /lib/systemd/system/nginx.service
Activez le service Nginx : systemctl enable nginx
Faites une copie du fichier de config d’origine de Ngnix : mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bk

Creez les deux dossiers suivants
mkdir -p /mnt/stream/hls/
mkdir -p /mnt/stream/vod/

Remplissez votre fichier de config avec les informations suivante : Nano /etc/ngnix/nginx.conf

user nginx;
worker_processes auto;
events {
worker_connections 1024;
}
# pid /var/run/nginx.pid;
# RTMP configuration
rtmp {
server {
listen 1935; # Listen on standard RTMP port
chunk_size 4096;
max_connections 2000;
application live {
live on;
# Turn on HLS
hls on;
hls_path /mnt/stream/hls/;
hls_fragment 2s;
hls_playlist_length 60;
hls_nested on;
# disable consuming the stream from nginx as rtmp
# deny play all;
}
# # Record
# record all;
# record_path /mnt/stream/vod/;
# record_suffix -%d-%b-%y-%T.flv;
}
}
http {
sendfile off;
tcp_nopush on;
aio on;
directio 512;
default_type application/octet-stream;
server {
listen 80;
access_log /var/log/nginx/access_log combined;
location / {
# Disable cache
add_header 'Cache-Control' 'no-cache';
# CORS setup
add_header 'Access-Control-Allow-Origin' '*' always;
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
add_header 'Access-Control-Allow-Headers' 'Range';
# allow CORS preflight requests
if (\$request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Headers' 'Range';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
types {
application/dash+xml mpd;
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /mnt/stream/;
}
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
root /mnt/stream/stat.xsl;
}
}
}

Démarrez votre serveur Nginx :
systemctl start nginx

Voici la configuration à mettre dans OBS dans Flux : rtmp://IPDEVOTRESERVER/live/VOTRECLE

Voici comment capter le flux avec VLC par exemple ou un autre lecteur Web compatible HLS : http://IPDEVOTRESERVER/hls/VOTRECLE/index.m3u8

Vous voilà maintenant avec un serveur de stream flambant neuf. Je vous laisse jouer à présent avec votre nouveau joujou.

enjoy

Laisser un commentaire