FEAT: Streaming WebRTC P2P — SIPSorcery + StreamingHub + coturn + liveView.js #3
Labels
No labels
bug
chore
design
dx:ci
dx:database
dx:dotnet
dx:infra
dx:security
dx:tests
dx:ui
etape-1
etape-2
etape-3
etape-4
etape-5
etape-6
etape-7
feature
priority-high
priority-low
priority-medium
security
spec
tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
nonobis/Heimdall#3
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🎯 Contexte
Aucun streaming vidéo : il n'y a pas de StreamingHub (remplacé par un ConfigHub), pas de SIPSorcery, pas de coturn dans le compose, pas de
liveView.jsni de page Live. La spec fait du streaming WebRTC une fonctionnalité centrale (Partie 6).📚 Référence spec (MASTER_SPECIFICATION.md v2.0)
D3 : TURN/Coturn obligatoire (pas optionnel) — CGNAT, pare-feu, Starlink
D6 : P2P uniquement en v1 (1 viewer/caméra max), SFU (MediaMTX) repoussé à v2
Phase 14 — StreamingHub :
RequestStream(cameraId)avec vérification site-scope (permissionCamera.Live), groupescamera-{id}/viewer-{id}, relay SDP/ICEPhase 15 : WebRTC P2P (SIPSorcery 10.0.12+, pas de decode→re-encode, H264 passthrough), coturn HMAC auth secret, credential lifetime 24h, latence < 500ms LAN
6.3 : module JS autonome
wwwroot/js/liveView.js— survit aux reconnexions Blazor,RTCPeerConnectioncôté browserTableau 5.1 : StreamingHub route
/hubs/streaming, auth JWT + API Key (+ Camera.Live)🔍 État actuel (vérifié dans le code)
Hubs actuels : ConfigHub, EventsHub, MonitoringHub, NotificationsHub, AdminHub.
wwwroot/js/contient seulementauth.js. docker-compose.prod.yml : aucun service coturn. Aucune page/cameras/{id}/live.🧩 À faire
StreamingHub(/hubs/streaming) : RequestStream avec vérification site-scope, RegisterSource, relay SDP/ICE, groupes viewer-/camera---use-auth-secretwwwroot/js/liveView.js(module autonome, automatic reconnect)/cameras/{id}/live(élément<video>natif, qualité, snapshot, timeline 30 min)🧪 Critères d'acceptation
📁 Fichiers concernés
src/Heimdall.Web/Hubs/StreamingHub.cs (nouveau), src/Heimdall.Web/wwwroot/js/liveView.js (nouveau), src/Heimdall.Agent/Services/WebRtcStreamingService.cs (nouveau), docker/docker-compose*.yml, src/Heimdall.Web/Components/Pages/CameraLive.razor (nouveau)