Kachelvisu iPad – RTSP-Kamerastream benötigt 3–4 Sekunden für ICE-Verbindung

Hallo zusammen,

ich versuche aktuell, die Startzeit meiner Axis-Kamerastreams in der Kachelvisualisierung zu optimieren. Nach einigen Tests lässt sich die Verzögerung ziemlich eindeutig auf den ICE/WebRTC-Verbindungsaufbau in der iPad-Appeingrenzen.

System:

  • IP-Symcon 9.0, Rev. b9a34e92f86a

  • iPad Symcon-App 9.03, Rev. 093d4478e85

  • Symcon läuft auf einem Mac mini

  • Mac mini per Ethernet: 192.168.178.170

  • Axis M2036-LE

  • Kameras über ONVIF Media Stream eingebunden

  • H.264

  • Kachelvisualisierung

  • Image.I0.MPEG.H264.PSEnabled auf der Axis aktiviert

Verhalten:

Der RTSP-Stream selbst startet sehr schnell:

  • Stream-Vorschau in der Symcon-Konsole: < 1 Sekunde

  • Kachelvisu im Browser direkt auf dem Mac mini: < 1 Sekunde

  • Kachelvisu mit Safari auf demselben iPad über die lokale Symcon-Adresse: ca. 1 Sekunde

  • Kachelvisu über die Symcon-App auf demselben iPad: ursprünglich ca. 5–6 Sekunden

Während der Verzögerung zeigt die App praktisch die gesamte Zeit:

„Wird verbunden (ICE)…“

Sobald anschließend „Erfolgreich verbunden“ erscheint, ist das Kamerabild deutlich unter einer Sekunde später da.

Es scheint daher nicht am RTSP-/H.264-Stream selbst zu liegen, sondern am ICE-Verbindungsaufbau innerhalb der iPad-App.

Bisherige Tests:

Der Mac mini hatte ursprünglich zwei Interfaces:

  • Ethernet: 192.168.178.170

  • WLAN: 192.168.178.94

Mit dem Spezialschalter

ProxyInterface = 192.168.178.170

hat sich die Startzeit in der iPad-App von ca. 5–6 Sekunden auf ca. 3–4 Sekunden verbessert.

WLAN am Mac mini wurde anschließend deaktiviert. Da die automatische Serversuche der App den Server dann nicht mehr gefunden hat, habe ich in der App die lokale Adresse 192.168.178.170:3777 manuell eingetragen. Die Verbindung funktioniert damit, die Stream-Startzeit bleibt jedoch bei ca. 3–4 Sekunden.

Zusätzlich getestet:

  • IPv6 am Mac testweise auf Link-Local → keine Verbesserung

  • ProxyRTSPEnforceTCP getestet → keine merkliche Verbesserung

  • ProxySTUN / ProxyTURN testweise deaktiviert → keine Verbesserung bzw. Stream-Verbindung teilweise nicht möglich

  • Axis Dynamic GOP aus

  • Dynamic FPS aus

  • GOP/P-Frames verändert → keine relevante Verbesserung

  • RTSP-/Stream-Vorschau in Symcon weiterhin praktisch sofort

Bei einem einzelnen Kamerastream endet der ICE-Aufbau praktisch immer mit:

„Erfolgreich verbunden“

also offenbar ohne Relay.

Wenn ich drei Kamerastreams gleichzeitig öffne, kommt es gelegentlich vor, dass einer davon per Relay verbunden wird. Das passiert aber nicht reproduzierbar und bei einem einzelnen Stream praktisch nie.

Aktueller Stand mit ProxyInterface = 192.168.178.170:

iPad Safari lokal → ca. 1 Sekunde
iPad Symcon-App lokal → ca. 3–4 Sekunden

Die zusätzlichen 2–3 Sekunden werden nahezu vollständig bei „Wird verbunden (ICE)…“ verbracht.

Hat jemand eine Idee, warum der ICE-Aufbau innerhalb der Symcon-iOS/iPadOS-App deutlich länger dauert als mit Safari auf exakt demselben iPad und im selben lokalen Netzwerk?

Gibt es eventuell noch eine Möglichkeit, den ICE-Kandidatenaufbau bzw. die Kandidatenauswahl der App genauer zu debuggen oder zu beeinflussen?

Viele Grüße

Sven