Snapshots Konflikt?

Hallo,

ich betreibe mehrere Android-Tablets, welche 24/7 laufen. Diese zeigen u.a. einen Snapshot meiner zwei 9008 Kameras an, der alle paar Sekunden (ca. 5s) erneuert wird.

In unregelmäßigen Abständen, jedoch mehrmals täglich, kommt es vor, daß eines der Bilder auf einem der Tablets weiß wird, also nicht mehr geladen werden kann. Starte ich den Client (Browser o.ä.) auf dem Tablet neu, so wird das Bild wieder angezeigt. Von selbst korrigiert sich das Problem nicht, auch nach den folgenden Requests bleibt das Bild in dem Fall weiß.

Kann sich jemand erklären, woran das liegt? Kann es sein, daß das leere Bild immer dann auftritt, wenn mehrere Tablets gleichzeitig einen Snapshot abrufen wollen? Alle Tablets benutzen den selben User auf der Kamera - ist das vielleicht ein Problem?

MfG

Hallo @150d,

wenn man die Bilder Dauerhaft (24/7) mit mehreren Klienten abgreift kann man einer Reihe von Flaschenhälsen begegnen (Browser Cache läuft voll, Überlastung durch gleichzeitige Zugriffe auf der Kamera oder im Netzwerk, usw.).

Der bislang beste Weg all diese Probleme zu lösen, den ich bislang finden konnte, ist das Programm MotionEye (bzw. das RaspberryPi Betriebsystem MotionEyeOS). Beide wurden hier im Forum mehrfach besprochen.

Hauptvorteile sind dabei, dass nur ein Klient (MotionEye) direkt auf die Kamera zugreift und die Bilder von dort an alle anderen Klienten verteilt. Dadurch entfällt die Limitierung der max. 3 zeitgleichen Zugriffe aufs Video. Und die Software scheint regelmäßig den Stream abzubrechen und neu aufzubauen. Man merkt nach ein paar Stunden, dass das Video ein paar Sekunden hinterherhinkt. Kurze Zeit später ist es aber wieder synchron.

Ja, darüber habe ich auch schon nachgedacht. Die Lösung hat aus meiner Sicht allerdings zwei Nachteile:

1.) Die 9008 sollte alles das, was MotionEye bietet, auch schon selbst können. Bewegungserkennung, Alarmauslösung, Bilder hochladen - all das kann die InStar-Software ja bereits von sich aus.

2.) So, wie ich die Funktion von MotionEye verstanden habe, würde ein permanenter Videostream von jeder Kamera an den Server laufen. Das bedeutet, daß nicht nur die Kamera durchgehend 100% arbeitet, sondern auch das Netzwerk laufend mit Videoströmen belastet ist. Hierzu kann ich dann nicht einmal die sparsamere LowRes-Variante wählen, weil ich im Alarmfall ja HiRes haben will und erst der Server entscheidet, ob aufgezeichnet wird oder nicht.

Rufe ich nur hin und wieder (direkt von der Kamera) einen Snapshot ab, so braucht die Kamera nicht dauernd arbeiten, und das Netzwerk bleibt so gut wie frei.

Deswegen habe ich mich zu MotionEye bisher nicht durchringen können.

MfG

Bei Snapshots kann ich mir eigentlich keine Überlastung vorstellen, eher eine Art Timeout, weil eine Anfrage von der Kamera nicht beantwortet wird und die Software stur auf das Bild wartet.

Aber warum funktioniert der nächste Abruf dann auch nicht mehr? Die Tablets zeigen kein Bild mehr, bis ich die App dort neu starte.

Ich kann mir nur vorstellen, daß es etwas mit der Authentifizierung zutun hat, welche die App nicht jedesmal neu ausführt, sondern zwischenspeichert. Erst beim Neustart wird der Login-Cache zurückgesetzt, ein neuer Handshake findet statt, und es kommt wieder ein Bild.

Aber warum? Kommt die Kamera vielleicht durcheinander, wenn sich zwei Clients mit dem selben User gleichzeitig anmelden?

MfG

Wenn die App kein Bild mehr zeigt, kannst Du per Browser und CGI versuchen, einen Snapshot zu erhalten. Dann weiss man schon mal, ob die App sich verschluckt hat.

Auf den Clients passiert das mit verschiedenen Apps, darunter sowohl mehrere generische Browser als auch dedizierte Apps. Ein Bug in der jeweiligen App dürfte also nicht vorliegen.

Wenn ich irgendetwas neu starte (die App auf dem Client; mit einer zweiten App zugreife, auf dem PC irgendetwas aufrufe) erhalte ich dort sofort ein Bild. Auf der „hängenden“ App aber nicht, bis ich diese neu starte.

MfG