🎥 Video streaming via API

🎥 Video-Streaming über API

🎯 Zweck

Ermöglicht es Hardware-Geräten, Video von Bienenstockeingängen in die Cloud aufzunehmen und zu streamen für eine entfernte Überwachung und KI-Analyse.

🎭 Benutzerstory

  • Als Imker mit eigener Hardware oder begrenzten Rechenressourcen
  • möchte ich Video von meinem Bienenstockeingang in die Cloud streamen können
  • damit ich Cloud-basierte KI-Analyse und remote Überwachung nutzen kann, ohne leistungsstarke Vor-Ort-Bearbeitung zu erfordern

🚀 Hauptvorteile

  • Hardware-Flexibilität: Funktioniert mit Raspberry Pi, benutzerdefinierten PCs oder Jetson-Nano-Geräten
  • Cloud-Bearbeitung: Lagert KI-Analyse an Cloud-Infrastruktur für Geräte ohne GPU aus
  • Fernzugriff: Live und historische Video-Streams von überall ansehen
  • Einfache Integration: Einfache API-Token-Authentifizierung und Einrichtung

🔧 Technischer Überblick

Video-Aufnahme-System (src/uploader.py) nimmt verarbeitete Video-Chunks mit Erkennungsüberlagerungen auf und lädt sie über GraphQL-Mutationen auf video.gratheon.com hoch. Verwendet multipart/form-data-Kodierung sowohl für Videodateien als auch für Erkennungsmetadaten, unterstützt Stapelausladungen mit Bearer-Token-Authentifizierung.

📋 Akzeptanzkriterien

  • Unterstützt USB-Kamera-Videoaufnahme mit OpenCV (CAP_V4L2/CAP_AVFOUNDATION)
  • Kodiert Video mit AVC1/MP4V-Codecs für Kompatibilität
  • Lädt Video-Chunks mit Erkennungsüberlagerungen über GraphQL API hoch
  • Beinhaltet Erkennungsmetadaten-Datei neben Video-Ausladung
  • Verwendet Bearer-Token-Authentifizierung (API_TOKEN Umgebungsvariable)
  • Unterstützt konfigurierbare Video-Chunk-Länge (VIDEO_CHUNK_LENGTH_SEC)
  • Behandelt Netzwerkunterbrechungen mit threaded asynchrone Uploads

🚫 Nicht im Umfang

  • Echtzeit-Live Streaming (Batch-Ausladung verarbeiteter Chunks)
  • Audio-Streaming (nur Video)
  • Echtzeit-Zweiwege-Kommunikation
  • Speicher-Management über Standard-Retentionsrichtlinien hinaus

🏗️ Implementierungsansatz

  • Video-Kodierung: OpenCV VideoWriter mit AVC1/MP4V-Codecs
  • Upload-Protokoll: GraphQL-Mutation über HTTPS POST mit multipart/form-data
  • Authentifizierung: Bearer-Token im Authorization Header
  • Threading: Asynchrone Upload-Bearbeitung zur Vermeidung von Video-Capture-Blockaden
  • Integration: Verlinkt an SECTION_ID (Box-ID) und Zeitstempel-Metadaten
  • Fehlerbehandlung: Anständiger Fallback, wenn API-Anmeldeinformationen nicht konfiguriert sind

📊 Erfolgskriterien

  • Videokodierung mit korrekter Codec-Kompatibilität (AVC1 primär, MP4V Fallback)
  • Erfolgreiche GraphQL-Mutation-Ausladungen auf video.gratheon.com Endpunkt
  • Threaded asynchrone Verarbeitung ohne Blockieren der Hauptvideo-Pipeline
  • Richtige multipart-Kodierung mit Erkennungsmetadaten-Dateien
  • Bearer-Token-Authentifizierung und Box-ID-Assoziation

🔗 Verwandte Funktionen

📚 Ressourcen & Referenzen

💬 Hinweise

Eigentliche Implementierung unter Verwendung von GraphQL-Mutationen für die Video-Ausladung mit Erkennungsmetadaten. Ermöglicht eine Cloud-basierte Verarbeitung für Geräte ohne ausreichende lokale Rechenressourcen.