streaming mjpeg ip-camera multiple-browsers

streaming - Solución de navegador cruzado para mostrar la transmisión MJPEG



ip-camera multiple-browsers (2)

Acabo de salir con una solución hace un par de meses. Es multiplataforma y no necesita complementos de terceros como Flash o Java.

Básicamente, es un proxy node.js que analiza los límites de m-jpeg y entrega imágenes en un intervalo definido.

Bifurque en https://github.com/rodowi/Paparazzo.js

¿Existe una forma liviana, gratuita y confiable de mostrar MJPEG en un entorno de navegador cruzado? Estoy intentando mostrar una transmisión MJPEG desde una cámara IP Axis 2120 en un sitio que estoy desarrollando, y he descubierto que esto es bastante confiable en las versiones actuales de Firefox. Sin embargo, después de algunas pruebas, descubrí que IE, Opera y Chrome tienen diferentes grados de problemas para hacer esto (sin acceso a Mac, así que no estoy seguro acerca de Safari). Internet Explorer no tiene soporte para MJPEG y no funciona en absoluto. Opera toma literalmente 10-15 segundos para mostrar cualquier cosa después de que se envió el GET inicial. Chrome funciona perfectamente hasta que el <div> que contiene la etiqueta <img> se oculta y luego se muestra de nuevo.

Para referencia, estoy usando una etiqueta <img> para mostrar el flujo de esta manera:

<img src="http://my.ip.addr/axis-cgi/mjpg/video.cgi/?resolution=352x240" alt="real-time video feed" />

He considerado usar un servidor de retransmisión para recopilar la transmisión MJPEG y transcodificarla sobre la marcha, pero esta solución parece demasiado fea. ¿Hay mejores sugerencias por ahí?


Aquí hay una solución basada en applet de Java que puede usar para cualquier navegador (o solo para aquellos que no son compatibles con MJPEG): http://www.charliemouse.com/code/cambozola/

En lo que respecta a otros errores relacionados con MJPEG, he descubierto que debe establecer el atributo ''src'' de la etiqueta ''img'' en algo además de MJPEG antes de intentar eliminar la etiqueta ''img''. Ejemplo:

<img src="#" />

Si no lo haces, Firefox continuará descargando la transmisión MJPEG aunque no debería hacerlo.