Me emocioné cuando F5 anunció la compra de NGINX hace un año, porque como miembro veterano de F5, sabía que NGINX era la opción perfecta. Ese sentimiento se confirmó cuando, en una de nuestras primeras reuniones conjuntas, los empleados de NGINX discutieron algo profundamente importante para mí: su compromiso con la “comunidad”. Desde que me uní al equipo de NGINX como gerente de producto, tuve el placer de ver ese compromiso en acción y pude trabajar más profundamente con la comunidad.
Quienes trabajamos con código abierto normalmente utilizamos “comunidad” para describir a las personas que apoyan un proyecto de código abierto enviando código. Si bien son importantes, son solo una pequeña parte de la comunidad NGINX. ¿Quiénes son entonces los demás miembros de la comunidad? También valoramos a aquellos que:
En los últimos meses, los miembros de la comunidad NGINX se han unido verdaderamente para apoyarse mutuamente y a las numerosas organizaciones que luchan por mantener sus operaciones durante la pandemia de COVID-19. Muchos de ustedes han marcado sitios que podrían beneficiarse del software NGINX, o incluso han donado tiempo y experiencia sobre cómo ajustar NGINX para un rendimiento óptimo. En un esfuerzo por hacer nuestra parte, hemos publicado Recursos gratuitos para sitios web afectados por COVID-19 y nos entusiasmó ver a la comunidad unirse en torno a los nuevos usuarios de NGINX.
Como parte de nuestros esfuerzos por ayudar a las organizaciones a afrontar el aumento del tráfico y agregar nuevas funcionalidades, hemos estado proporcionando hasta cinco instancias gratuitas de NGINX Plus a las organizaciones que están en la primera línea de la pandemia. Eso ha incluido a proveedores médicos, oficinas gubernamentales y, lo más relevante para este blog, escuelas, universidades y organizaciones sin fines de lucro centradas en la educación. Hemos detectado un caso de uso de tendencia entre estas organizaciones que probablemente no te sorprenderá: ¡transmisión de video !
Con las escuelas de todo el mundo cerrando sus puertas e implementando rápidamente el aprendizaje a distancia, esperamos que el uso de transmisión de video aumente exponencialmente en las próximas semanas y meses. En el resto de este blog explico cómo puedes usar NGINX Open Source y NGINX Plus para permitir una transmisión de video estable, segura y escalable.
¡Un gran agradecimiento al arquitecto de soluciones técnicas de NGINX, James Jones, por grabar videos de demostración para acompañar este blog!
Nuestra solución para la transmisión de vídeo aprovecha el módulo del Protocolo de Mensajería en Tiempo Real (RTMP) para NGINX. En este vídeo, James explica el proceso paso a paso:
Para que no tengas que tomar notas mientras miras la demostración de James, hemos capturado todos los comandos y la configuración en las siguientes secciones.
Las configuraciones de NGINX presentadas en este blog no incluyen medidas de seguridad para restringir quién puede ver su transmisión de video. Hay una variedad de formas de proteger sus transmisiones con la aplicação front-end que sus espectadores usan para ver el video, como permitir el acceso solo desde ciertas direcciones IP o requerir que los espectadores se autentiquen.
Antes de compilar NGINX, necesita tener instaladas algunas herramientas de compilación básicas: autoconf
, gcc
, git
y make
. Para descargarlos e instalarlos, ejecute el comando correspondiente a su sistema operativo (si no está incluido aquí, consulte la documentación del proveedor del sistema operativo).
Para Debian y Ubuntu:
$ sudo apt update $ sudo apt install build-essential git
Para CentOS, Oracle Linux y RHEL:
$ sudo yum update $ sudo yum groupinstall "Herramientas de desarrollo" $ sudo yum install git
La compilación de NGINX también requiere varias dependencias: Expresiones regulares compatibles con Perl (PCRE), OpenSSL y zlib para compresión.
La forma más sencilla de descargar e instalar las dependencias es con un administrador de paquetes. Ejecute el comando para su sistema operativo (si no está incluido aquí, consulte la documentación del proveedor del sistema operativo).
Para Debian y Ubuntu:
$ sudo apt install libpcre3-dev libssl-dev zlib1g-dev
Para CentOS, Oracle Linux y RHEL:
$ sudo yum groupinstall pcre-devel zlib-devel openssl-devel
Si en cambio desea compilar e instalar las dependencias desde la fuente, consulte nuestras instrucciones .
Para completar la compilación, clona los repositorios de GitHub para RTMP y NGINX, ejecuta el comando de configuración de
NGINX y luego compila NGINX.
$ cd /ruta/al/directorio/de/compilación $ git clone https://github.com/arut/nginx-rtmp-module.git $ git clone https://github.com/nginx/nginx.git $ cd nginx $ ./auto/configure --add-module=../nginx-rtmp-module $ make $ sudo make install
Puede configurar NGINX para transmitir video utilizando uno o ambos protocolos HTTP Live Streaming (HLS) y Dynamic Adaptive Streaming over HTTP (DASH). Los protocolos proporcionan la misma funcionalidad, por lo que elegir entre ellos es realmente una cuestión de preferencia. Si no está familiarizado con ellos, consulte HLS vs DASH en el blog de Vidbeo.
Para HLS, la configuración es la siguiente. En la demostración (en el punto 5:10), James explica el propósito de estas directivas.
rtmp { servidor {
escuchar 1935;
aplicação en vivo {
vivir;
intercalar en;
hls encendido;
ruta_hls /tmp/hls;
fragmento hls_15s;
}
}
}
http {
aplicação de tipo predeterminado /octet-stream;
servidor {
escuchar 80;
ubicación /tv {
raíz /tmp/hls;
}
}
tipos {
aplicação/vnd.apple.mpegurl m3u8;
vídeo/mp2t ts;
texto/html html;
}
}
Para DASH, la configuración es la siguiente. En la demostración, James combina HLS y DASH en una sola configuración, ya que muchas directivas son las mismas para ambos protocolos.
rtmp { servidor {
escuchar 1935;
aplicação en vivo {
vivir;
correr adelante;
ruta_del_guión /tmp/guión;
fragmento de guión 15s;
}
}
}
http {
servidor {
escuchar 80;
ubicación /tv {
raíz /tmp/dash;
}
}
tipos {
texto/html html;
aplicação/dash+xml mpd;
}
}
Siempre es una buena idea validar la configuración de NGINX para asegurarse de que no haya errores sintácticos. Ejecute este comando:
$ sudo nginx -t nginx: la sintaxis del nombre de archivo del archivo de configuración es correcta nginx: la prueba del nombre de archivo del archivo de configuración es exitosa
Luego ejecute este comando para iniciar NGINX:
$ sudo nginx
Inicie su transmisión de vídeo. OBS Studio es una herramienta de código abierto de uso común que le permite transmitir en vivo desde su estación de trabajo a su servidor NGINX configurando un servidor RTMP personalizado. Configure OBS para transmitir a rtmp:// NGINX_server /tv/tv2 , donde NGINX_server es la dirección IP o el nombre de host de su servidor NGINX. No se requiere clave de transmisión.
James no usa OBS en la demostración porque está transmitiendo video desde un archivo en lugar de hacerlo en vivo. Inicia la transmisión de video (a las 9:30) ejecutando el script stream.sh , que tiene este contenido:
ffmpeg -re -I bbb_girasol_1080p_60fps_normal.mp4 -vcodec copia -bucle -1 -c:a aac -b:a 160k -ar 44100 -estricto -2 -f flv rtmp:192.168.1.138/live/bbb
El video que está transmitiendo (especificado con el argumento -I
) es el video de código abierto Big Buck Bunny de blender.org . Para obtener detalles sobre los otros argumentos, consulte la documentación de ffmpeg
.
Una vez que se esté transmitiendo el video, puedes probar que NGINX lo esté transmitiendo correctamente utilizando los protocolos que hayas configurado. James abre tres instancias del reproductor multimedia VLC y accede a la URL apropiada para cada método de reproducción. En las URL, NGINX_server es la dirección IP o el nombre de host de su servidor NGINX:
Si está creando una videoteca o un curso, es posible que necesite capacidades que vayan más allá de lo que es posible con NGINX Open Source. NGINX Plus incluye funciones ampliadas para mejorar el rendimiento y la experiencia del usuario final con módulos prediseñados. Puede:
Durante la pandemia de COVID-19, NGINX ofrece una licencia gratuita de un año para hasta cinco instancias de NGINX Plus a organizaciones de los sectores educativo, gubernamental y sin fines de lucro (sujeto a revisión y aprobación). Para obtener más detalles, consulte Recursos gratuitos para sitios web afectados por la COVID-19 .
Para incorporar el módulo RTMP a NGINX Plus, cárguelo dinámicamente. Consulte la Guía de administración de NGINX Plus .
En esta segunda demostración, James muestra lo fácil que es configurar NGINX Plus como balanceador de carga para tres servidores de video, usando Ansible y Terraform:
Para acceder a los archivos que James usa en la segunda demostración, consulte su repositorio de GitHub .
Si tiene problemas para implementar la transmisión de video o cualquier otro caso de uso, ¡estamos aquí para ayudarlo! Los empleados de NGINX y la comunidad están monitoreando el canal NGINX en Stack Overflow1 y responder a las preguntas y solicitudes lo más rápidamente posible.
Si trabaja para una organización en la primera línea de la pandemia y tiene necesidades avanzadas, puede calificar para las licencias NGINX Plus mencionadas anteriormente , así como para un nivel superior de F5 DNS Load Balancer Cloud Service. Consulte Recursos gratuitos para sitios web afectados por COVID-19 para obtener más detalles.
Consulte también ese blog para obtener un resumen de Formas sencillas de mejorar el rendimiento del sitio web con recursos gratuitos de NGINX y F5.
1Stack Overflow es un sitio web de terceros y no está afiliado con F5. Cª. F5 y sus afiliados no asumen ninguna responsabilidad por el contenido (incluida la información general y las soluciones propuestas a las preguntas) publicado en Stack Overflow o cualquier otro sitio web de terceros.
"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.