GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo configurar un servidor NGINX RTMP para transmisión

¿Tu transmisión en vivo se bloquea cada vez? Si es así, deberá encontrar una forma confiable de alojar su transmisión. Pero si no puede permitirse opciones costosas, ¡no se preocupe! NGINX RTMP salvará el día. NGINX RTMP es un módulo confiable de código abierto, así que ya sabe lo que eso significa:¡es GRATIS!

En este tutorial, aprenderá cómo configurar un servidor NGINX RTMP para que pueda configurar una transmisión en vivo confiable con su sitio web.

¿Listo? ¡Sigue leyendo y comienza a configurar una transmisión en vivo!

Requisitos

Este tutorial será una demostración práctica. Si desea seguirnos, asegúrese de tener lo siguiente:

  • Un servidor Linux:esta demostración usa Ubuntu 20.04 LTS, pero puede usar cualquier otra distribución de Linux con NGINX.
  • NGINX instalado en el servidor Linux.
  • Un usuario no root con privilegios sudo.
  • Recursos mínimos necesarios para ejecutar un servidor de transmisión en vivo:2 GB de RAM, 2 núcleos de CPU y 20 GB de disco duro.

Estos valores son solo sugerencias. Los valores exactos dependen de sus necesidades reales de tráfico. Cuanto más tráfico tenga, más servidores potentes necesitará para alojar y transmitir su video en vivo. En un entorno de desarrollo, un servidor NGINX RTMP con 2 CPU y 2 GB de RAM es suficiente para realizar la prueba.

Configurar un servidor RTMP

Ahora que los requisitos previos están fuera del camino, ahora puede continuar con la instalación y configuración de su servidor RTMP. Primero instalará un módulo NGINX para convertir su servidor NGINX en un servidor RTMP, luego configurará el archivo de configuración NGINX para permitir transmisiones en vivo para los usuarios.

1. Abre tu terminal y ejecuta el apt update comando para actualizar todos sus paquetes. Este comando sincroniza la base de datos de su paquete con la última base de datos de Ubuntu.

sudo apt update -y

2. A continuación, ejecute el siguiente comando para instalar un servidor RTMP en su servidor Linux.

El libnginx-mod-rtmp El módulo es un módulo NGINX que convierte su servidor NGINX en un servidor RTMP. Este módulo permite que NGINX se comunique con Adobe Flash Player para que pueda transmitir su video o audio en vivo, y cuenta con el respaldo oficial de su equipo de desarrollo.

sudo apt install libnginx-mod-rtmp -y

3. Abra el /etc/nginx/nginx.conf archivo en su editor favorito para configurar su programa RTMP en vivo. El nginx.conf es un archivo de configuración de NGINX, que contiene varias directivas o bloques para definir el comportamiento del servicio NGINX.

4. Finalmente, complete el nginx.conf archivo con el siguiente código, guarde los cambios y salga del editor.

El siguiente código le dice a NGINX que actúe como un servidor RTMP y habilita transmisiones en vivo para sus usuarios.

# This block of code tells NGINX to act as an RTMP server. 
rtmp {
		server {
		# Sets the port the server will listen on.
    listen 1935;
				# The size of each chunk of data that will be sent.
				# Flash Player will freeze if the chunk is too small, 
				# which can cause a buffer-underflow condition.
        chunk_size 4096;
				# The IP addresses are allowed to publish content to the server.
				# Allow only the localhost to publish content on NGINX RTMP.
				allow publish 127.0.0.1;
				# Deny publishing for everyone else.
				deny publish all;
				# Defines a named application called "live"
        application live {
				# Tells NGINX to enable live streams for your users.
						live on;
				# This line tells NGINX to disable recording. If this line is not included, 
				# NGINX will keep recording and save your stream forever to your disk.
						record off;
				}
		}
}

Asegurar la red configurando un cortafuegos

Ya ha configurado su servidor NGINX RTMP, pero deberá proteger su red y controlar el flujo de tráfico. ¿Cómo? Al configurar un firewall, Uncomplicated Firewall (UFW), que es el firewall predeterminado en Ubuntu.

Si coloca su servidor NGINX RTMP detrás de un firewall, deberá permitir que el puerto del servidor NGINX RTMP esté abierto. Dado que configuró su servidor NGINX RTMP para escuchar en el puerto 1935 , permitirá este puerto a través de su firewall.

1. Ejecute el siguiente comando para agregar una regla de firewall que abra el puerto 1935 en su cortafuegos. Esta regla de firewall permite que el puerto de su servidor NGINX RTMP 1935 ser accesible para todas las solicitudes entrantes y salientes.

sudo ufw allow 1935/tcp

2. Luego, ejecute el siguiente comando para deshabilitar y volver a habilitar su firewall. Este comando básicamente reinicia el firewall para que cualquier cambio en el firewall tenga efecto.

sudo ufw disable && sudo ufw enable

3. Finalmente, ejecute el siguiente comando para verificar el estado de su firewall y verificar si el puerto 1935 es accesible desde todas las direcciones IP (En cualquier lugar ).

sudo ufw status

Transmisión de video usando FFmpeg

Su servidor NFINX RTMP ahora está activo, por lo que es hora de usar FFmpeg para crear un video de ejemplo y transmitirlo a través de su servidor NGINX RTMP. FFmpeg es una solución completa para grabar, convertir y transmitir audio y video en muchas aplicaciones diferentes como VLC, OMXPlayer, VobSub, etc.

Estará probando la transmisión de video en su servidor y puede usar cualquier video que sea de tamaño pequeño para la transmisión.

1. Ejecute el apt install Comando a continuación para instalar las dependencias necesarias para que FFmpeg se ejecute correctamente.

El siguiente comando instala lo siguiente:

  • libpcre3 – Una biblioteca de expresiones regulares que utiliza el kit de herramientas ffmpeg para ayudar a analizar y compilar expresiones regulares.
  • libpcre3-dev – Este paquete contiene los encabezados de desarrollo del paquete libpcre3.
  • libssl-dev – La biblioteca criptográfica OpenSSL utilizada para crear conexiones SSL/TLS en su servidor RTMP.
  • zlib1g-dev :La biblioteca zlib es una biblioteca de compresión y descompresión que acelera la transferencia de archivos de audio y video a través de Internet.
sudo apt install -y libpcre3 libpcre3-dev libssl-dev zlib1g-dev

2. A continuación, ejecute el siguiente comando para instalar ffmpeg en su servidor.

 sudo apt install ffmpeg -y 

3. Por último, ejecuta el ffmpeg Comando para realizar lo siguiente y crear una nueva transmisión en vivo:

  • Leer entrada (re ) del archivo fuente (i ) a la velocidad de fotogramas original. Asegúrese de reemplazar video.mp4 con la ruta y el nombre de archivo de tu video.
  • Copie el formato de video palabra por palabra (c:v copy ), y codifique el audio en el códec AAC (c:a aac ).
  • Establezca la frecuencia de muestreo de audio en 44100 Hz (ar 44100 ). Si la frecuencia de muestreo de su video es inferior a este valor (44100 Hz), FFmpeg realiza una interpolación para aumentar la frecuencia de muestreo.
  • Configure los canales de audio en un canal (mono) (ac 1 ), y el formato de video que transmitirá FFmpeg (-f flv ).
  • Configure su programa en vivo RTMP (rtmp://localhost/live/streamname.flv ) que configuró en la sección "Configuración de un servidor RTMP" (paso cuatro). Puedes cambiar streamname.flv al nombre que prefieras.
ffmpeg -re -i "video.mp4" -c:v copy -c:a aac -ar 44100 -ac 1 -f flv rtmp://139.180.203.6:1935/live/streamname.flv 

Como puede ver a continuación, el ffmpeg el comando imprime el marco por segundo que detecta, la tasa de bits y los fps de la transmisión en vivo RTMP recién creada.

Conclusión

En este tutorial, aprendió cómo configurar su servidor NGINX RTMP y habilitar transmisiones en vivo en su servidor modificando el archivo de configuración de NGINX. También se refirió a la configuración de una transmisión de video en vivo usando la herramienta FFmpeg a través de su servidor NGINX RTMP.

Acaba de darse cuenta de que configurar una transmisión en vivo no tiene que costarle cada centavo. En este punto, ¿por qué no integrar su transmisión en su página web utilizando el elemento HTML5


Linux
  1. Cómo configurar el servidor de transmisión de medios usando Jellyfin en Linux

  2. Cómo configurar bloques de servidor Nginx en Ubuntu 18.04 LTS

  3. Cómo configurar Apache como proxy frontend para Node.js

  4. Cómo crear un servidor de streaming en FreeBSD

  5. ¿Cómo configurar el servidor NTP en CentOS?

Cómo configurar Nginx como proxy inverso para Apache en Ubuntu 18.04 VPS

Cómo configurar HAProxy en CentOS 8

Cómo configurar Nginx Cache en un servidor LAMP

Cómo configurar la caché de Nginx en el servidor LEMP

Cómo instalar NGINX como proxy inverso para Apache en Ubuntu 18.04

Cómo configurar Nginx como equilibrador de carga para Apache o Tomcat para HTTP/HTTPS