FEAT: Screenshots de vérification des flux — GetScreenshotAsync réel + affichage popup #65

Closed
opened 2026-08-11 21:53:18 +02:00 by nonobis · 0 comments
Owner

Contexte

Strix capture un screenshot live pour chaque URL testée (ffmpeg pour RTSP/HTTP, HAP GetImage pour HomeKit) et l'affiche (pkg/tester/worker.go, worker_homekit.go). Heimdall : StreamTesterService.GetScreenshotAsync est un stub qui retourne null → aucune vérification visuelle du flux avant d'ajouter une caméra.

État actuel

  • StreamTesterService.GetScreenshotAsync : log warning + return null
  • La session de test collecte codecs/latence mais pas d'image
  • La popup de confirmation (DiscoveriesPage) affiche l'URL mais pas d'aperçu

À faire

  1. Capture côté agent (sur le LAN caméras) : 1 frame JPEG via ffmpeg (-frames:v 1 -f image2 ou -f mjpeg) pour les flux RTSP/HTTP vivants ; HAP GetImage (1920×1080) pour HomeKit (Strix worker_homekit.go)
  2. Stockage : ring buffer/session (TTL 10 min comme la session), poignée Screenshot par résultat
  3. Exposition : endpoint GET /api/discovery/test/{sessionId}/screenshot/{index} renvoie le JPEG (aujourd'hui stub dans DiscoveryController)
  4. UI : aperçu du screenshot dans la popup de confirmation avant l'ajout de la caméra (vérification visuelle du bon flux)
  5. Extraire width/height du JPEG (comme Strix jpegSize)

Critères d'acceptation

  • Un flux RTSP vivant produit un JPEG consultable dans la popup
  • HomeKit : snapshot HAP GetImage fonctionnel
  • Pas de crash si la caméra ne répond pas (screenshot absent, pas d'erreur)
  • Le screenshot n'est jamais persistant (mémoire + TTL)

Fichiers concernés

  • src/Heimdall.Infrastructure/Services/Discovery/StreamTesterService.cs
  • src/Heimdall.Web/Controllers/DiscoveryController.cs
  • src/Heimdall.Web/Components/Pages/DiscoveriesPage.razor
  • Agent : capture ffmpeg (l'agent a déjà ffmpeg dans son image)

Référence

  • Strix pkg/tester/worker.go (testURL + screenshot), worker_homekit.go (HAP GetImage), session.go (Screenshots [][]byte)
## Contexte Strix capture un **screenshot live** pour chaque URL testée (ffmpeg pour RTSP/HTTP, HAP GetImage pour HomeKit) et l'affiche (pkg/tester/worker.go, worker_homekit.go). Heimdall : `StreamTesterService.GetScreenshotAsync` est un **stub** qui retourne null → aucune vérification visuelle du flux avant d'ajouter une caméra. ## État actuel - `StreamTesterService.GetScreenshotAsync` : log warning + `return null` - La session de test collecte codecs/latence mais pas d'image - La popup de confirmation (DiscoveriesPage) affiche l'URL mais pas d'aperçu ## À faire 1. **Capture côté agent** (sur le LAN caméras) : 1 frame JPEG via ffmpeg (`-frames:v 1 -f image2` ou `-f mjpeg`) pour les flux RTSP/HTTP vivants ; **HAP GetImage** (1920×1080) pour HomeKit (Strix worker_homekit.go) 2. **Stockage** : ring buffer/session (TTL 10 min comme la session), poignée `Screenshot` par résultat 3. **Exposition** : endpoint `GET /api/discovery/test/{sessionId}/screenshot/{index}` renvoie le JPEG (aujourd'hui stub dans DiscoveryController) 4. **UI** : aperçu du screenshot dans la popup de confirmation avant l'ajout de la caméra (vérification visuelle du bon flux) 5. Extraire width/height du JPEG (comme Strix `jpegSize`) ## Critères d'acceptation - Un flux RTSP vivant produit un JPEG consultable dans la popup - HomeKit : snapshot HAP GetImage fonctionnel - Pas de crash si la caméra ne répond pas (screenshot absent, pas d'erreur) - Le screenshot n'est jamais persistant (mémoire + TTL) ## Fichiers concernés - `src/Heimdall.Infrastructure/Services/Discovery/StreamTesterService.cs` - `src/Heimdall.Web/Controllers/DiscoveryController.cs` - `src/Heimdall.Web/Components/Pages/DiscoveriesPage.razor` - Agent : capture ffmpeg (l'agent a déjà ffmpeg dans son image) ## Référence - Strix `pkg/tester/worker.go` (testURL + screenshot), `worker_homekit.go` (HAP GetImage), `session.go` (Screenshots [][]byte)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
nonobis/Heimdall#65
No description provided.