22 Stimmen

Browserübergreifende Lösung für die Anzeige von MJPEG-Streams

Gibt es eine einfache, kostenlose und zuverlässige Möglichkeit, MJPEG in einer browserübergreifenden Umgebung anzuzeigen? Ich versuche, einen MJPEG-Stream von einem Achse 2120 IP-Kamera auf einer Website, die ich entwickle, und ich habe festgestellt, dass dies in aktuellen Versionen von Firefox recht zuverlässig funktioniert. Nach einigen Tests habe ich jedoch festgestellt, dass IE, Opera und Chrome alle in unterschiedlichem Maße Probleme damit haben (ich habe keinen Zugriff auf den Mac, daher bin ich mir bei Safari nicht sicher). Der Internet Explorer hat keine Unterstützung für MJPEG und funktioniert überhaupt nicht. Opera braucht buchstäblich 10-15 Sekunden, um etwas anzuzeigen, nachdem der erste GET gesendet wurde. Chrome funktioniert perfekt, bis die <div> die die <img> Tag ausgeblendet und dann wieder eingeblendet wird.

Als Referenz verwende ich eine <img> Tag, um den Stream wie folgt anzuzeigen:

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

Ich habe in Erwägung gezogen, eine Re-Broadcasting-Server um den MJPEG-Stream zu sammeln und ihn on-the-fly zu transkodieren, aber diese Lösung scheint zu hässlich zu sein. Gibt es bessere Vorschläge da draußen?

11voto

defvol Punkte 12612

Ich habe erst vor ein paar Monaten eine Lösung gefunden. Sie ist plattformübergreifend und benötigt keine Plugins von Drittanbietern wie Flash oder Java.

Im Grunde ist es ein node.js-Proxy, der m-jpeg-Grenzen analysiert und Bilder in einem bestimmten Intervall liefert.

Fork it at https://github.com/rodowi/Paparazzo.js

6voto

Teddy Punkte 18047

Hier ist eine Java-Applet-basierte Lösung, die Sie für jeden Browser verwenden können (oder nur für diejenigen, die MJPEG nicht unterstützen): http://www.charliemouse.com/code/cambozola/

Was andere Fehler mit MJPEG angeht, so habe ich festgestellt, dass Sie das Attribut "src" des "img"-Tags auf etwas anderes als das MJPEG setzen sollten, bevor Sie versuchen, das "img"-Tag zu entfernen. Beispiel:

<img src="#" />

Wenn Sie das nicht tun, lädt Firefox weiterhin MJPEG-Streams herunter, obwohl er das nicht sollte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X