¿Cómo configurar crtmpserver para transmisión en vivo?

Esto es lo que me gustaría hacer.

  1. Una computadora portátil Linux tiene una cámara web conectada y captura video y audio en tiempo real
  2. La computadora portátil envía la transmisión de video y audio en vivo a otro servidor Linux que tiene una mejor conexión a Internet que la computadora portátil, a través de RTSP o RTMP o algo similar.
  3. Cualquier cliente que desee ver la transmisión se conecta al servidor Linux mediante algún software como VLC

Los pasos 1 y 3 no son un problema, creo que sé cómo hacerlos. Pero:

¿Cómo configuro el servidor Linux en el paso 2 para que acepte una entrada de flujo RTSP y la publique en alguna dirección como rtsp://my.ip.address/stream.mp4 por ejemplo, que se puede abrir en VLC por cualquier ¿computadora? ¿Es crtmpserver la herramienta adecuada para esto? y como lo configuro? He leído como diez páginas web diferentes que explican algunas configuraciones de ejemplo para crtmpserver pero realmente no he encontrado lo que estaba buscando.

Respuestas (5)

Estoy bastante seguro de que puede usar vlc para transmitir y volver a transmitir. Uso vlc para transmitir todos mis canales de televisión a todos mis dispositivos (rtsp, mp4, html5).

Busque la transmisión de vlc media player como

https://www.videolan.org/doc/streaming-howto/en/ch04.html

Si solo desea una transmisión RTMP simple, puede consultar el módulo nginx-rtmp , que parece bastante más fácil de configurar que crtmpserver.

Solo una sugerencia general: la compresión H.264 consume un poco de CPU, por lo que si su servidor es más poderoso que su computadora portátil y la conexión del servidor a la computadora portátil es buena, podría ser una idea transmitir solo "fotogramas simples" con casi sin codificar ni comprimir al servidor y dejar que se encargue del resto.

https://net7mma.codeplex.com tiene una implementación de servidor y cliente que es compatible con VLC y se creó exactamente para el escenario que cita. Desde el sitio web:

El objetivo de este proyecto es permitir que los desarrolladores entreguen medios a los clientes libremente en menos de 10 líneas de código utilizando implementaciones de protocolos de quejas estándar. También tiene como objetivo proporcionar un conjunto reutilizable de clases para trabajar con Rtsp y Rtp/Rtcp y Sdp.

Hay un nuevo enlace de descarga si desea probar este software: https://github.com/juliusfriedman/net7mma

Parece que no es particularmente trivial, sin embargo, crtmpserver tiene un tutorial en su wiki aquí . Parece que tienes que configurar un archivo lua y luego hacer un nuevo cmake del servidor. (Muy poco trivial.)

Como alternativa, hay otros servidores que pueden hacer esto por usted más fácilmente, como Red5 y también Adobe tiene una oferta gratuita mencionada en esta pregunta .

Una computadora portátil Linux tiene una cámara web conectada y captura video y audio en tiempo real

Estoy usando la versión N-80213-g9511a08 de ffmpeg y mi sistema es Ubuntu 15.10

ffmpeg -f video4linux2 -s 320x240 -i /dev/video0 -f flv -s qvga -b 750000 -ar 11025 -metadata streamName=aaa "tcp://server_ip:6666/live" 

La computadora portátil envía la transmisión de video y audio en vivo a otro servidor Linux que tiene una mejor conexión a Internet que la computadora portátil, a través de RTSP o RTMP o algo similar.

iniciar crtmpserver.lua

./crtmpserver/crtmpserver crtmpserver/crtmpserver.lua

después de ejecutar el comando anterior, mostrará la transmisión entrante como

/home/altanai/crtmpserver/sources/thelib/src/protocols/liveflv/inboundliveflvprotocol.cpp:51 _waitForMetadata: 1 /home/altanai/crtmpserver/sources/thelib/src/netio/epoll/iohandlermanager.cpp:119 Recuento de controladores cambiado : 11->12 IOHT_TCP_CARRIER /home/altanai/crtmpserver/sources/thelib/src/protocols/liveflv/baseliveflvappprotocolhandler.cpp:45 protocolo CTCP(16) <-> TCP(2) <-> [ILFL(3)] registrado a la aplicación flvplayback /home/altanai/crtmpserver/sources/thelib/src/application/baseclientapplication.cpp:251 Stream INLFLV(1) con el nombre 127.0.0.1_51036registrado en la aplicación flvplaybackdesde el protocolo ILFL(3) /home/altanai/crtmpserver/sources/thelib/ src/protocols/liveflv/inboundliveflvprotocol.cpp:184 Transmisión de metadatos: 0,000 Lavf57.37.101 0,000 30,000 240,000 2,000 732,422 320,000

Cualquier cliente que desee ver la transmisión se conecta al servidor Linux mediante algún software como VLC

ffplay -i rtmp://ip_servidor:1935/live/aaa