¿Cómo hacer una transmisión de video en vivo a través de un VPS?

He estado buscando en un millón de recursos y no puedo encontrar una respuesta definitiva a esto.

Estoy buscando hacer una transmisión de video en vivo de baja calidad a pequeña escala (máximo de 50 espectadores), con nada más que mi equipo existente (cámara mac y firewire), un ubuntu vps de gama baja y software gratuito. Transmita desde la mac y aloje la transmisión en un sitio web en el vps.

No quiero usar servicios como justin.tv o ustream porque la publicidad es muy intrusiva y también me gustaría aprender a hacerlo yo mismo. Tengo algunas habilidades de administrador de servidores, pero este es un mundo nuevo para mí, y no puedo entender cómo encajan todas las piezas. Pasé toda la noche leyendo sobre rtmp, rec5, wowza, ffmpeg y ahora no entiendo nada.

¿Alguien puede darme posibles flujos de trabajo para juntar las 3 partes? Es decir, transmisión desde una computadora local, recepción en vps, transmisión en el sitio web.

Si puede usar .net y no le importaría rtsp, consulte net7mma.codeplex.com

Respuestas (2)

Varía un poco de un servidor a otro, pero los componentes básicos son un codificador/cliente de transmisión en el cliente local que recibe información de la cámara y la convierte en una transmisión que se puede enviar al servidor de transmisión en el VPS.

El trabajo del servidor de transmisión (como Red5) es entonces proporcionar un punto de publicación que transmita la transmisión a los espectadores. El servidor de transmisión puede extraer del cliente o el cliente puede empujar a una ubicación de destino en el servidor de transmisión para proporcionar contenido al punto de publicación.

Luego, cada espectador se conecta a la transmisión RTMP publicada en el servidor de transmisión y recibe una copia de la transmisión que se está cargando. Tenga en cuenta que cada copia debe enviarse por separado a menos que esté en una red privada donde pueda usar multidifusión, por lo que las necesidades de ancho de banda aumentan rápidamente, aunque debería ser posible hacer transmisiones de 50 SD o de menor calidad desde un solo VPS siempre que tenga un Conexión confiable de 100 Mbps.

El sitio web simplemente contiene un visor que se conecta a la transmisión RTMP (o similar) y en realidad está operando del lado del cliente, no del lado del servidor.

Entonces, para recapitular rápidamente, el cliente carga en el back-end del servidor de transmisión, el servidor de transmisión se replica a cada espectador que solicita verlo y el servidor web simplemente brinda a los usuarios un visor del lado del cliente que se conecta a la transmisión de video.

Para acertar brevemente en qué consiste cada uno de los componentes que mencionaste.

  • RTMP es un protocolo de medios en tiempo real, que es un protocolo de transmisión común que se usa para transmitir el contenido de la transmisión de video.
  • Red5 es un software de servidor de transmisión de medios gratuito bastante popular que se utiliza para replicar RTMP y transmisiones de medios similares a los clientes.
  • Wowza es otro software de servidor de transmisión de medios, sin embargo, es un producto de software comercial y pago. Si está limitado al software gratuito, Wowza no es una opción.
  • FFMpeg es un popular codificador de video de código abierto. Se ejecuta en el cliente y se puede configurar para publicar una transmisión que se puede enviar a Red5 o un servidor de transmisión de medios similar.

Además, necesitará un visor de punto final capaz de consumir la transmisión. El software como Windows Media Player o Quicktime debería poder ver una transmisión, pero a menudo es mejor incluir un reproductor multiplataforma integrado en el sitio web al que las personas van para la transmisión. Hay muchas opciones para este componente con diferentes fortalezas y debilidades, pero cualquiera debería funcionar para sus propósitos.

Hay otra alternativa gratuita y más liviana a wowza y red5: el módulo nginx-rtmp, que lo libera de jugar con Java.

https://github.com/arut/nginx-rtmp-módulo/

y aquí hay una guía para configurarlo con el software Open Broadcaster gratuito (que desafortunadamente es solo para Windows) https://obsproject.com/forum/resources/how-to-set-up-your-own-private-rtmp-server -usando-nginx.50/

Para el usuario de streaming, la única solución gratuita decente que he encontrado para OSX es Adobe Flash Media Live Encoder.

Entonces, una canalización gratuita y relativamente liviana para la transmisión desde osx sería

Camtwist y Soundflower para capturar

Adobe Flash Media Live Encoder para transmitir RTMP al vps (o Open Broadcaster Software en Windows)

Un ubuntu vps que ejecuta nginx con el módulo nginx-rtmp (debe construirse desde la fuente)

Incruste la transmisión en un sitio web con algo como JWPlayer