Hay miles de millones de foros e hilos sobre cómo deshacerse de una latencia de 5 segundos cuando se usa un Pi junto con una PI-Cam como cámara de vigilancia. Muchos tutoriales muestran cómo usar vlc para codificar y transmitir las imágenes usando el protocolo RTP que resulta en un retraso de ~ 5 segundos.
Según yo, la razón es que raspivid está codificando el flujo a H264, mientras que VLC tiene que decodificarlo nuevamente y volver a codificarlo en cualquier RTP. La línea de comando se ve así:
raspivid -w 640 -h 480 -o - -t 0 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264
La primera parte le dice a Raspivid que transmita video a la salida estándar:
raspivid -w 640 -h 480 -o - -t 0
La parte después de la tubería, le dice a VLC que lo recoja y lo decodifique usando h264:
cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264
¡Esta muxing y demuxing es una gran cantidad de recursos!
Encontré las fuentes de raspicam en github, y creo que se puede hacer algo en el método encoder_buffer_callback (actualmente en la línea 848) para omitir la codificación. Sin embargo, no soy bueno en c, y no estoy familiarizado con la codificación de video, así que no tengo idea de por dónde empezar.
En Github puedo ver 330 tenedores, pero no parecen ser específicamente para raspicam (más bien para todo el proyecto de usuario). Me perdí tratando de encontrar una bifurcación que eliminara la codificación o implementara algo más simple como mjpeg.
¿Podría alguien con conocimientos de códec c y video ayudarnos a mí y a los otros millones de usuarios a deshacernos de la latencia? Probablemente la solución ya esté disponible en uno de esos tenedores, pero he pasado horas buscándola sin suerte.
pd No estoy buscando una solución de navegador , pero finalmente quiero transmitirla a Synology, preferiblemente usando la transmisión mjpeg (pero no a través de una página web, sino una transmisión estándar mjpeg que viene integrada en la mayoría de las cámaras IP comerciales). El primer paso es deshacerse de h264.