Soy uno de los cofundadores de Mux, y nos dedicamos a la infraestructura de video en línea para desarrolladores. Una de nuestras características es una API para transmisión en vivo, y es ahí donde recibimos muchas preguntas de los desarrolladores sobre cómo ayudar a sus clientes a transmitir en vivo. Estamos en un mundo en el que quieren construir una aplicación en el navegador, permitir que el usuario inicie sesión y transmita en vivo de inmediato sin necesidad de descargar software de terceros como OBS o algo así para poder hacerlo. Tiene total sentido.
Pero hoy no estamos hablando solo de transmitir en vivo desde el navegador, estamos hablando de transmitir en vivo desde el navegador a través de otro navegador. Esto también probablemente no sea una buena idea para la mayoría de los casos de uso, pero cuando necesitas este tipo de cosas, puede ser un buen camino a seguir. Ya cubrimos algo similar, o otra forma de hacer esto, en la React Summit. Así que vamos a recapitular rápidamente algunos de estos conceptos de alto nivel, solo para estar en la misma página. Pero si quieres más información, también puedes ver esa charla. Puedes encontrarla en YouTube.
Un error común es pensar que la transmisión en vivo es lo mismo que el chat en vivo. En el chat en vivo, tienes dos navegadores que pueden comunicarse, o varios navegadores, que pueden comunicarse directamente entre sí, con una latencia inferior a 500 milisegundos para que puedan hablar de forma sincrónica. En cambio, la transmisión en vivo es de uno a muchos. Tienes una entrada de transmisión para muchos espectadores, y eso puede ser de 50 a un millón de espectadores. La latencia puede ser de 10 segundos o más, está bien, porque no hay realmente una expectativa de poder comunicarse de vuelta con ese transmisor. Debido a esas limitaciones, la misma tecnología no funciona muy bien para ambos casos. Para un chat en vivo, generalmente se utiliza tecnología de navegador como WebRTC o implementaciones propietarias que permiten comunicarse directamente entre los transmisores para tener la menor latencia posible. En cambio, la transmisión en vivo utiliza tecnologías como RTMP y HLS. RTMP es una implementación antigua de Flash que se ha convertido en el estándar de facto para poder ingresar contenido en vivo directamente en un servidor, que luego transcodificará ese contenido y lo transmitirá a través de HLS. No entraremos en los detalles de HLS, pero para nuestros propósitos, nos permite descargar video a través de solicitudes GET en el navegador, y puedes escalarlo como cualquier otra transferencia de archivos, lo cual es muy bueno.
Ok, entonces vamos a tomar WebRTC y convertirlo en RTMP en el navegador, es probablemente lo que estás pensando. Desafortunadamente, no, no podemos llegar lo suficientemente bajo en la pila de red en un navegador para poder hacerlo, así que incluso en nuestro mundo moderno actual de WASM y todas estas otras cosas buenas, simplemente no podemos llegar allí. Pero hablemos de las tecnologías a las que podemos acceder. Así que todo lo que estamos hablando aquí implica un servidor de alguna manera, pero la primera forma es tomar WebRTC y utilizar una implementación de WebRTC en el lado del servidor. Si me hubieras preguntado hace un año, habría dicho, Esto es una locura, ha mejorado mucho. Proyectos como Pyon han avanzado mucho. Es una implementación de hace un año. Así que esto ya no es tan loco, pero aún no es, ciertamente no es la forma más fácil de hacerlo. Y si quieres hacer algo interesante con el video en el lado del servidor, a través de tecnologías del lado del cliente, esto te dejaría un poco en la estacada.
Comments