miércoles, 12 de marzo de 2025

Nginx-Rtmp Servidor de video

Posted by q3it on miércoles, marzo 12, 2025 in ,

Hola qué tal, para continuar con nuestro Servidor de Medios hoy voy a instalar la herramienta FFmpeg y algunas librerías de Nginx para que funciones correctamente. Hay que recordar que en publicaciones pasadas instalé Nginx y por esa razón solo lo voy a configurar. Pero para empezar a entender como funciona un servidor de video streaming tenemos que tener claro que significa RTMP 'Real Time Messaging Protocol'. Éste es un protocolo de comunicación diseñado para transmitir medios en tiempo real y hace referencia a la versión clásica de la tecnología de streaming RTMP. Este protocolo puede adaptarse a la velocidad de Internet, la calidad del vídeo y otras variables. Un flujo RTMP divide un vídeo pregrabado en trozos más pequeños antes de enviarlo de un dispositivo a otro. El tamaño de cada fragmento más pequeño se establece en función de la conexión a Internet disponible en ambos extremos. Teniendo claro la función que cumple el protocolo ahora necesitamos una herramienta que transmita los medios audiovisuales y ahí entra en acción FFmpeg que es la solución ideal para para convertir y transmitir formatos multimedia por medio de línea de comandos.
 
Llegó la hora de ponernos manos a la obra, para empezar ejecutamos una actualización del sistema update && upgrade. Luego instalamos las librerías de Nginx que hacen referencia al protocolo RTMP. "apt install libnginx-mod-rtmp"
 
Luego configuramos el fichero de Nginx que se encuentra en la ruta /etc/nginx/nginx.conf y agregamos al final las siguientes líneas...
 
rtmp {
            server {
                        listen 1935;
                        chunk_size 4096;
                        allow publish 127.0.0.1;
                        deny publish all;
 
                        application live {
                                    live on;
                                    record off;
                        }
            }
}
 
 
Pero vamos a ver que es lo que hace cada cada una de ellas. 
  • listen 1935 --> Escucha por este puerto.
  • chunk_size 4096 --> Enviará bloques de 4 kB.
  • allow y deny publish --> Sólo se publicará desde el servidor y el resto lo deniega.
  • live on --> Habilita el modo en vivo.
  • record off --> Deshabilita que se pueda grabar.
Para estar seguros de que el servidor Nginx tome los cambios lo reiniciamos "systemctl restart nginx" y luego vemos su status.


Ahora, ¡Necesitaremos un video para transmitir!, para solucionar esto descargamos con la herramienta yt-dlp un  video de Youtube llamado 'Historia de la robótica', pero para hacerlo más manejable lo acortamos a robotica.mp4.
 
 
Verificamos que la herramienta ffmpeg esté instalada. 
 
 
Y ya estamos listos para transmitir, ahora ejecutamos la siguiente instrucción ffmpeg -re -i "robotica.mp4" -c:v copy -c:a aac -ar 44100 -ac 1 -f flv rtmp://localhost/live/ubuser.
  • -re --> Velocidad del video.
  • -i --> Input "medio a transmitir".
  • -c:v --> Copiar el formato del video descargado.
  • -c:a --> Copie el tipo de audio.
  • -ar --> Frecuencia en hercios.
  • -f --> Empaquetado flv.
  • rtmp --> Protocolo.
  • ://localhost/live/ --> Dirección de transmisión.
 

No saltó ningún error en la ejecución. Ahora, para ver esta transmisión abrimos la herramienta VLC y en Medios/Red ponemos la dirección de emisión.
 
Y con esto ya tenemos montado nuestro Servidor de Streaming, nos vemos en el próximo post. 👋😉