Estos son los pasos para instalar un servidor rtmp usando nginx en Linux Mint 19.
Si instalamos el paquete Nginx desde los repositorios de Mint, este no manejará por defecto el protocolo rtmp, así que más bien debemos construir un nginx que incorpore un módulo para rtmp. Luego usaremos ffmpeg (Mint lo trae por defecto) para enviar un streaming udp al server, sin modificar el stream original.
Todo esto se hace desde terminal.
1- Instalar las utilidades que se requieren para constuir:
sudo apt-get install build-essential libpcre3 libpcre3-dev libssl-dev git zlib1g-dev -y
2- Ubicarnos en el home y crear un directorio donde poner y construir nginx con su módulo rtmp:
sudo mkdir ~/build && cd ~/build
3- Descargar y desempaquetar el módulo rtmp:
sudo git clone git://github.com/arut/nginx-rtmp-module.git
4- Descargar y desempaquetar nginx, luego entrar a su directorio:
sudo wget http://nginx.org/download/nginx-1.14.1.tar.gz
sudo tar xzf nginx-1.14.1.tar.gz
cd nginx-1.14.1
5- Construir nginx incorporando el módulo rtmp:
sudo ./configure --with-http_ssl_module --add-module=../nginx-rtmp-module
sudo make
sudo make install
6- Arrancar y detener el server:
sudo /usr/local/nginx/sbin/nginx
sudo /usr/local/nginx/sbin/nginx -s stop
7- Para hacer un stream en vivo con rtmp hay que agregar una sección rtmp en el archivo de configuración, que puede editarse con nano:
sudo nano /usr/local/nginx/conf/nginx.conf
8- Y debe quedar así:
#user nobody;
worker_processes 1;
error_log logs/error.log debug;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 8080;
server_name localhost;
# rtmp stadísticas
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
location /stat.xsl {
# ruta de módulo rtmp
root /home/directoriohome/build/nginx-rtmp-module;
}
# rtmp control
location /control {
rtmp_control all;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
rtmp {
server {
listen 1935;
ping 30s;
notify_method get;
application myapp {
live on;
}
}
}
9. Como ejemplo, enviamos udp al server sin conversión alguna:
ffmpeg -re -i udp://127.0.0.1:1234 -c copy -f flv rtmp://localhost:1935/myapp/mystream
10. Ruta para reproducir en localhost (si es en otra máquina usar su IP en vez de locahost):
rtmp://localhost:1935/myapp/mystream
Si todo resultó bien, se puede ver las estadísticas en http://locahost:8080/stat