Streaming de WebRTC en la nube en DigitalOcean


El famoso cloud hosting DigitalOcean ha adquirido recientemente su propia tienda con imágenes listas para usar, desde las cuales puede implementar rápidamente cualquier servidor de aplicaciones. Al igual que AWS, solo DO, para aquellos que ya usan los servicios de este proveedor. Veamos cómo, con una cuenta DO, implementar un servidor simple por $ 10 por mes para transmitir WebRTC basado en Flashphoner WebCallServer, y cómo dicho servidor puede ser útil.


Despliegue


Ingresamos a la cuenta en DO, seguimos el enlace a la imagen de Flashphoner WebCallServer y hacemos clic en el botón "Crear gota de Flashphoner Web Call Server"



Seleccionamos las características del norte y el plan tarifario. Por defecto, DO nos ofrecerá algo del segmento medio, pero estamos interesados ​​en el costo mínimo



Elija la región donde se encuentra el centro de datos, por ejemplo, Frankfurt



Elija un método de autenticación, por ejemplo, una contraseña de un solo uso



Indicamos el número de servidores (hasta ahora estamos interesados ​​en un servidor) y le damos un nombre a nuestro servidor. Este nombre se escribirá, incluido, en / etc / hostname



Haga clic en "Crear gota"



Después de la creación, el servidor se iniciará automáticamente. Puede conectarse a través de SSH y, si se seleccionó una contraseña de un solo uso como método de autenticación, cambie la contraseña. Se mostrará una breve descripción de Flashphoner WebCallServer con enlaces de documentación en la consola



"Esta es una prueba. ¿Puedo verte?"


Flashphoner WebCallServer se inicia completamente listo para el trabajo, una licencia de prueba de 30 días se activa automáticamente. Para probar todas las funciones básicas hay una interfaz web, nos limitamos a verificar la publicación y reproducción de la transmisión WebRTC.


Abra la página del navegador https: // droplet_ip: 8444 / admin / . De forma predeterminada, se proporciona un certificado autofirmado con el servidor, por lo que deberá confirmar la excepción de seguridad. En el futuro, puede reemplazar los certificados con los suyos. Ingrese nombre de usuario y contraseña ( demostración predeterminada)



Seleccione el ejemplo de transmisión bidireccional en la barra lateral, haga clic en el botón "Conectar" y luego "Publicar". Para reproducir la transmisión, haga clic en "Reproducir"



Por un puñado de dólares


¿De qué es capaz un servidor por $ 10 por mes capaz de ser una plataforma de hardware para la transmisión WebRTC? Veamos qué nos ofrece el procesador DigitalOcean


lscpu 


y de memoria


 free -h 


Al verificar el servidor con pruebas de carga, vemos que el servidor puede no ser tan pequeño.


Por ejemplo, publicaremos una instancia de transmisión y veremos cuántos suscriptores pueden perder simultáneamente esta transmisión, ocupando no más del 90% del procesador:


PermisoVelocidad de bits, KbpsNumero de publicacionesNumero de suscriptores
360p1300170
480p1800170
720p3000150

Con varias publicaciones simultáneas, el número máximo de transmisiones procesadas permanece en el mismo nivel: si publica 7 transmisiones, hasta 10 espectadores pueden suscribirse a cada una.


Digamos que necesitamos transcodificar la transmisión en el servidor para reducir la resolución o alinear el FPS. Para este caso, verifique el número máximo de publicaciones:


PermisoVelocidad de bits, KbpsNumero de hilos
360p13005 5
480p18003
720p30002

Por lo tanto, un servidor de costo mínimo en OD con parámetros de 1 núcleo de CPU, 2 Gb de RAM, 2 TB de tráfico por mes es adecuado no solo para probar la transmisión WebRTC, sino también para su uso en pequeños proyectos. Por ejemplo, puedes:


  • distribuya a través de WebRTC la transmisión desde la cámara IP para la videovigilancia corporativa más simple;
  • organizar un seminario web para empleados de una pequeña empresa
  • elevar su radio de Internet (la transmisión de audio requiere menos recursos de CPU)

Además, este servidor se puede considerar como una plataforma de referencia para los cálculos de escala, lo que continuaremos haciendo.


"¡Merezco más!"


Las reglas, en general, son muy simples: no hay muchos núcleos, al igual que la memoria. Dependiendo del número planificado de suscriptores, las recomendaciones del conjunto de configuraciones que ofrece DO serán las siguientes:


Numero de suscriptoresvCPURAM, GBTráfico, TBEjemplo de uso
hasta 2004 485 5Sistema de video vigilancia
hasta 5008166 6Seminarios web
hasta 100016649 9Video chat
hasta 2000209610Streaming de video HD

Si planea crecer aún más, tendrá que implementar una CDN a razón de 1 servidor Edge para 2000 suscriptores. Supongamos que necesitamos distribuir video HD, el número planeado de espectadores es de 10,000. En este caso, necesita 2 servidores Origin para publicar y 5 servidores Edge para ver.



Ejemplo de configuración:


  • Origen 1

 cdn_enabled=true cdn_ip=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin 

  • Origen 2

 cdn_enabled=true cdn_ip=origin2.flashponer.com cdn_point_of_entry=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin 

  • Edge 1 - Edge 5 (aquí solo se cdn_ip la dirección del servidor en el parámetro cdn_ip )

 cdn_enabled=true cdn_ip=edge1.flashphoner.com cdn_point_of_entry=origin1.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge 

Un CDN también puede ser útil si los suscriptores están distribuidos geográficamente, por ejemplo, nuestros potenciales espectadores viven en Europa y América.



Ejemplo de configuración:


  • Origen UE

 cdn_enabled=true cdn_ip=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=EU 

  • Origen de EE. UU.

 cdn_enabled=true cdn_ip=origin_us.flashponer.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=US 

  • Edge 1 EU

 cdn_enabled=true cdn_ip=edge1_eu.flashphoner.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=EU 

  • Edge 1 US

 cdn_enabled=true cdn_ip=edge1_us.flashphoner.com cdn_point_of_entry=origin_eu.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=US 

Cuantos más espectadores, mayor será la variedad de dispositivos de reproducción y canales para estos dispositivos. Para garantizar la calidad de la transmisión a varios dispositivos, lo más probable es que se requiera la transcodificación de video, que puede asignarse a servidores especiales de transcodificadores CDN.



Ejemplo de configuración:


  • Origen

 cdn_enabled=true cdn_ip=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=origin cdn_groups=default 

  • Transcodificador UE

 cdn_enabled=true cdn_ip=transcoder_eu.flashponer.com cdn_point_of_entry=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=transcoder cdn_groups=EU 

  • Edge 1 EU

 cdn_enabled=true cdn_ip=edge1_eu.flashphoner.com cdn_point_of_entry=origin.flashponer.com cdn_nodes_resolve_ip=false cdn_role=edge cdn_groups=EU 

Para la transcodificación, como descubrimos durante la prueba, la cantidad de núcleos de procesador es importante. Desde la línea de configuración optimizada para CPU, el más caro de 32 vCPU, 64 Gb RAM es el más adecuado. Al mismo tiempo, en otras líneas, las configuraciones con una gran cantidad de memoria cercana en el número de CPU pueden ser significativamente más caras. Desafortunadamente, guardar en transcodificadores no funcionará: dado que el video está codificado cuadro por cuadro, debería haber suficiente memoria para todas las imágenes y procesadores para procesar todas las transmisiones.


Al implementar una CDN, es útil crear varios servidores de la misma configuración al mismo tiempo. Sin embargo, para CDN distribuidos geográficamente, el mismo tipo de servidores Edge y Transcoder deberá ubicarse en diferentes centros de datos.


Conclusión


Entonces, implementamos y probamos un pequeño servidor para transmitir video WebRTC con baja latencia en DigitalOcean, nos aseguramos de que el servidor en la configuración mínima sea adecuado no solo para probar, sino también para usar en pequeños proyectos, recibimos datos para escalar dependiendo del número esperado de espectadores, y tocó el tema de la implementación de CDN, que en sí mismo merece un artículo separado. Quédate con nosotros, para continuar ...


Referencias


Flashphoner WebCallServer en DigitalOcean Marketplace es una imagen preconstruida de Web Call Server en DigitalOcean.


Baja transmisión de WebRTC de baja latencia CDN es una red de entrega de contenido basada en Web Call Server.

Source: https://habr.com/ru/post/476546/


All Articles