Video · Clip abrufen

Clip auf Abruf. In Ihre Cloud liefern.

Sieben Service-Operationen decken den Lebenszyklus gespeicherter Medien ab. Stream-Copy-Clip-Extraktion — kein Decode, kein Re-Encode, ~1–2 s GOP-Slop pro Rand. SFTP-Upload mit Host-Key-Pinning, Pfad-Traversal-Schutz und mp4-reduce.

Wie es funktioniert

Sieben Service-Operationen. Ein Upload-Pfad.

GetSegments fragt den Segment-Index nach Objektiv und Zeitraum ab; ExtractClip führt Stream-Copy-Mux-only-Extraktion mit ~1–2 s GOP-Slop durch; Upload sendet per SFTP mit Host-Key-Pinning; mp4-reduce entfernt free/skip-Atome und patcht stco-Offsets. Snapshot (Keyframe zu JPEG ~50 ms) und Protect/Unprotect sind als gestrichelte Seitenpfade dargestellt.

flowchart LR
  G[GetSegments<br/>nach Objektiv + Zeitraum] --> X[ExtractClip<br/>nur Mux · ~1–2 s GOP-Slop]
  X --> U[Upload<br/>SFTP · Host-Key-gepinnt]
  U --> M[mp4-reduce<br/>free/skip entfernen · stco patchen]
  S[Snapshot<br/>Keyframe → JPEG ~50 ms] -.-> X
  P[Protect / Unprotect] -.-> G
GetSegments → ExtractClip (nur Mux) → Upload (SFTP) → mp4-reduce — Snapshot und Protect/Unprotect als Seitenpfade
mos-dashcam Service-Schnittstelle — Clip-Abruf und Medien-Lebenszyklus
Operation Eingabe Ausgabe
GetSegments Objektiv, start_ts, end_ts Liste von SegmentRow
ExtractClip segment_id, start_offset, end_offset Clip-Pfad auf Datenträger
Snapshot segment_id, keyframe_offset JPEG-Pfad
Protect segment_id — (idempotent)
Unprotect segment_id — (idempotent)
Remove segment_id — (löscht Datei + Zeile)
Upload Pfade, destination_uri, Optionen Upload-Status-Stream
7 Service-Operationen GetSegments · ExtractClip · Snapshot · Protect · Unprotect · Remove · Upload
~50 ms Keyframe→JPEG qtic2vdec · jpegenc · kein vollständiger Decode
~1–2 s GOP-Slop pro Rand Stream-Copy; kein Decode; kein Re-Encode
0 Re-Encode ExtractClip nur Mux · mp4-reduce nur Atom-Patch

Architecture

Was Sie nicht schreiben — die von MOS4 gelieferte Infrastruktur.

service mos-dashcam

Segment-Index (SQLite, In-Memory mit Snapshots), Retention-Enforcer und alle sieben Service-Operationen — GetSegments, ExtractClip, Snapshot, Protect, Unprotect, Remove, Upload. Gamma-Tier: produktionsreif auf internen Aufzeichnungspfaden.

Pipeline splitmuxsrc ! qtmux ! filesink

GStreamer-Mux-only-Pipeline für ExtractClip — splitmuxsrc liest das Quellsegment; qtmux re-muxt den Stream; filesink schreibt den Ausgabe-Clip. Kein Decode, kein Re-Encode, kein Pixel-Rundtrip.

Transport russh-sftp ring backend

SFTP-Upload-Transport — russh-sftp mit Ring-Backend, Host-Key-Pinning, Pfad-Traversal-Schutz und Kontext-Token-URL-Substitution. Integration liefert eine URI; der micro service übernimmt den SSH-Handshake und den Stream-Transfer.

Post-Upload mp4-reduce

Entfernt free- und skip-Atome aus dem MP4-Container, dann werden stco / co64 Chunk-Offset-Tabellen gepatcht, um die Datei gültig zu halten. Reduziert Upload-Nutzlast ohne einen einzigen Frame neu zu kodieren.

service dashcam-controller BETA

Whitelabel-Dashcam-Integration über Wi-Fi HTTP und TCP-Benachrichtigung. Warteschlange mit TTL überbrückt Verbindungslücken. Unterscheidet sich von mos-dashcam — dieser micro service steuert ein externes Hardware-Gerät, nicht die interne Aufzeichnungspipeline auf der MOS4-Box.

mos-dashcam vs. dashcam-controller

mos-dashcam (Gamma) ist der interne Rekorder: er läuft auf der MOS4-Box, besitzt das Segment-FIFO und stellt die sieben oben dokumentierten Service-Operationen bereit. dashcam-controller (BETA) steuert eine externe Whitelabel-Dashcam-Einheit über Wi-Fi HTTP und TCP-Benachrichtigung — separate Hardware, separater Lebenszyklus, dasselbe Fahrzeug. Beide können gleichzeitig laufen; sie teilen keinen Zustand.

FAQ

Häufig gestellte Fragen

  • Kann ich einen Clip aus einem bestimmten Zeitfenster anfordern?

    Ja — GetSegments(Objektiv, start_ts, end_ts) liefert die passenden Segmente; ExtractClip(segment_id, start_offset, end_offset) schreibt ein stream-kopiertes MP4 mit ~1–2 s GOP-Slop pro Rand.

  • Wie schnell ist ein Vorschaubild?

    ~50 ms Keyframe→JPEG auf QCS6490 über qtic2vdec und jpegenc — kein vollständiger Decode-Durchlauf, kein Re-Encode.

  • Wie überlebt der Upload Mobilfunk-Ausfälle?

    Der micro service stellt den Upload-Status über einen Service-Aufruf bereit; Retry-Logik in der Integrationsschicht behandelt Mobilfunk-Ausfälle. mp4-reduce verkleinert die Nutzlast vor dem Upload — kein Re-Encode, nur das Entfernen von free/skip-Atomen und stco-Offset-Patching.

  • Was ist der Unterschied zwischen mos-dashcam und dashcam-controller?

    mos-dashcam (Gamma) ist der interne Rekorder, der auf der MOS4-Box läuft — er besitzt den Segment-Index, den Retention-Enforcer und alle sieben Service-Operationen. dashcam-controller (BETA) steuert externe Whitelabel-Dashcam-Hardware über Wi-Fi HTTP und TCP-Benachrichtigung. Beide können auf demselben Fahrzeug gleichzeitig laufen.

  • Was, wenn ich interne Aufzeichnung UND eine verbundene externe Dashcam benötige?

    Sie lassen sich kombinieren. Interne Aufzeichnung verwendet mos-dashcam; die externe Dashcam wird von dashcam-controller (BETA) gesteuert — eine Warteschlange mit TTL überbrückt Verbindungslücken zwischen den beiden.

Bringen Sie Ihre Kameras und Ihre Aufgabe.

MIPI / GMSL / RTSP / WebRTC / SRT, interne Aufzeichnung, externe Whitelabel-Dashcam-Integration, Aufwecken bei Ereignis — wählen Sie Ihre Funktion und wir skizzieren die Pipeline.