Hola a todos, mi nombre es Matthew McClure. Soy uno de los cofundadores de Mux, y hacemos infraestructura de video en línea para desarrolladores. Así que una de nuestras características es una API para transmisión en vivo, y ahí es donde recibimos un montón de preguntas de los desarrolladores sobre cómo ayudar a sus clientes a transmitir en vivo. Están en un mundo donde quieren simplemente construir una aplicación en el navegador, permitir que el usuario simplemente inicie sesión e inmediatamente transmita en vivo sin necesidad de descargar software de terceros como OBS o algo así para poder hacerlo. Totalmente tiene 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 probablemente también sea una mala idea para la mayoría de los casos de uso, pero cuando necesitas este tipo de cosas, esto puede ser un gran camino a seguir. Así que cubrimos algo similar, u otro camino para hacer esto en 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 podrías querer ver esa charla. Puedes encontrarla en YouTube.
Una idea errónea común es que la transmisión en vivo es lo mismo que el chat en vivo. Así que en el chat en vivo, tienes dos navegadores que pueden comunicarse, o algunos navegadores, que pueden comunicarse directamente entre sí, con menos de 500 milisegundos de latencia para que puedan hablar sincrónicamente. La transmisión en vivo, por otro lado, es de uno a muchos. Así que tienes un flujo de entrada hacia 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 realmente no hay una expectativa de poder comunicarse de vuelta con ese transmisor. Así que debido a esas limitaciones, la misma tecnología realmente no funciona muy bien para ambos. Para un chat en vivo, generalmente está impulsado por tecnologías de navegador como WebRTC o implementaciones propietarias que te permiten comunicarte directamente entre los transmisores para que tengas la menor latencia posible. La transmisión en vivo, por otro lado, está impulsada por tecnologías como RTMP y HLS. RTMP es una especie de implementación antigua de flash que se ha convertido en el estándar de facto para poder ingerir 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, te permite descargar video a través de solicitudes git en el navegador, y puedes escalarlo como lo harías con cualquier otra transferencia de archivos, lo cual es realmente agradable.
Bien, así que simplemente tomemos WebRTC y luego convirtámoslo en RTMP en el navegador, probablemente es 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 qué tecnologías podemos acceder. Así que todo lo que estamos hablando aquí, involucra un servidor de alguna manera, pero la primera forma es que podemos tomar WebRTC y luego usar una implementación de WebRTC del lado del servidor. Así que si me hubieras preguntado hace un año, habría dicho, Esto es una locura, esto ha mejorado mucho. Proyectos como Pyon han avanzado mucho. Es una implementación de hace un año. Así que esto en realidad ya no es tan loco, pero aún no, ciertamente no es la forma más fácil de lograr esto. Y si quieres poder 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 el frío.
Comments