Commit Graph
44 Commits
Author SHA1 Message Date
MichaelandClaude Opus 5 f490e96448 feat(player): bouton plein écran et reconnexion du proxy live
Plein écran — le bouton n'existait que dans les contrôles VOD, sous une icône
aspect_ratio peu parlante, et les contrôles Live TV n'en avaient aucun. Ajout
du bouton côté Live TV et passage aux icônes fullscreen / fullscreen_exit.
L'état suit désormais l'évènement fullscreenchange du document : sortir par la
touche Échap laissait l'icône désynchronisée.

Proxy live — la route /api/live/<id>.ts relayait la source sans aucune reprise.
Les panneaux Xtream ferment régulièrement la connexion en cours de route, et le
MediaSource du navigateur recevait alors un sourceEnded : la lecture s'arrêtait
net au bout de quelques dizaines de secondes. Le proxy rouvre maintenant la
source tant que le client écoute, avec quatre tentatives et une seconde
d'attente entre chaque, le temps que le panneau libère le slot de connexion.
Le compteur repart de zéro dès qu'une connexion a tenu plus d'une minute.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 10:31:13 +02:00
MichaelandClaude Fable 5 9595afcc99 fix(streaming): stop streams dying mid-playback
- reaper no longer kills exited sessions immediately: a finished VOD
  transcode was reaped (segments deleted) while still being watched
- reuse completed VOD/recording sessions instead of re-transcoding
- live input: add -rw_timeout 30s and -reconnect_at_eof so a stalled
  upstream triggers reconnect instead of wedging ffmpeg forever
- reaper watchdog restarts live sessions whose playlist stopped updating
- waitForPlaylist fails fast on clean ffmpeg exit without output
- direct .ts proxy: close http.Client on stream end/error (socket leak)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 14:34:31 +02:00
MichaelandClaude Fable 5 92634dba13 perf: faster stream startup
- Stop sending no-store on vendored player libraries: hls.min.js and
  mpegts.min.js (~750 KB) were re-downloaded on every player open
- hls.js: start with 1 live segment instead of 3, lower buffer-first
  threshold 1.5s -> 0.8s, poll buffer every 100ms
- mpegts.js: initial stash 512KB -> 128KB, start at 0.5s buffered
- Live FFmpeg: -hls_init_time 1 closes the first segment after ~1s

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 11:23:32 +02:00
MichaelandClaude Fable 5 60d3f42901 feat: security hardening, streaming overhaul, design polish, tests
Security:
- Replace unsalted SHA-256 password hashing with bcrypt (lazy rehash on login)
- Add authenticated /api/xtream-api gateway: Xtream credentials are injected
  server-side and never sent to the frontend; /api/playlists no longer
  returns passwords
- Redact credentials from all logs (login body, proxy/FFmpeg/scheduler URLs)
- Add auth to recordings, EPG, season-passes and streaming routes
  (HttpOnly session cookie for hls.js; loopback bypass for local FFmpeg)
- Lock player postMessage to same-origin in both directions
- Vendor and pin hls.js 1.6.7 / mpegts.js 1.7.3 (drop CDN @latest)
- Fix rate limiter (client IP was never resolved), add login rate limit,
  restrict CORS, add CSP Report-Only, block private-IP SSRF targets,
  fix path traversal in recording log retrieval, chmod 777 -> 770
- Remove dead HiveService (seeded admin/admin into IndexedDB with SHA-256)
- Fix authMiddleware not populating 'user' context (getPlaylist ignored the
  logged-in user; admin purge always returned 403)

Streaming:
- New FfmpegSessionManager: process registry, idle reaper (4 min live /
  15 min VOD), orphan cleanup at startup, clean SIGTERM shutdown,
  fast-fail with stderr instead of 30 s timeout
- Quality selection (source/high/medium/low) for live and VOD; source mode
  streams with -c:v copy (zero transcoding); selector wired into the player
- Concurrent recordings (MAX_CONCURRENT_RECORDINGS, default 2); conflicts
  retry on the next tick instead of silently failing
- Lower live latency (HLS window 20 -> 10 segments, liveSync 10 -> 3)
- Fix recording log lookup (.mp4 vs .mkv mismatch)

Design:
- Replace hardcoded colors with AppColors tokens (12 files)
- web/theme.css syncs HTML players with the Flutter palette
- DPAD/keyboard navigation (arrow-key focus, player shortcuts)
- Tooltips on player icon buttons, Semantics on content cards
- Remove 7 dead widgets broken since the Stitch merge

Quality:
- bin/test/: 21 unit tests (bcrypt, redaction, traversal, SSRF, recording
  conflicts) plus a quality-selector widget test
- GitHub Actions CI (analyze + test + build web)
- Archive stale status docs into docs/archive/

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-06-10 10:07:18 +02:00
Michael 099d7da53f feat: implement streaming handler with FFmpeg-based HLS transcoding and GPU acceleration support 2026-04-02 07:43:23 +02:00
Michael ce695b7e43 feat: implement streaming handler with FFmpeg HLS transcoding and live TV proxying 2026-04-01 22:01:16 +02:00
Michael e641d04a3a feat: implement streaming handler with FFmpeg-based live and VOD HLS transcoding support 2026-04-01 21:35:25 +02:00
Michael f08fccc0d1 feat: implement HLS streaming handler with FFmpeg transcoding and add IPTV player screen UI 2026-04-01 21:28:47 +02:00
Michael e4301077b0 feat: implement HLS live streaming and VOD transcoding handler with FFmpeg and NVIDIA GPU support 2026-04-01 21:14:33 +02:00
Michael 36a7658cf9 feat: add mobile-optimized video player and streaming API handler 2026-03-29 11:47:09 +02:00
Michael fa6ae90d8d feat: add mobile-optimized IPTV player with HLS and MpegTS support 2026-03-29 10:19:36 +02:00
Michael a9a1127d6b fix(server): add direct .ts proxy route for recordings and fix Cascade fall-through 2026-03-11 07:31:42 +01:00
Michael 9f3c29f6dd feat: implement Xtream API service for managing live channels, VOD, and series with caching and dynamic backend URL handling. 2026-03-10 14:57:44 +01:00
Michael 33d0e0a80d fix(streaming): optimize quality, audio sync, and content update refresh
- Increased FFmpeg video quality to 8Mbps and audio to 192kbps.
- Added audio resync filters and better presets.
- Optimized HLS buffer settings for mobile players to reduce interruptions.
- Reduced API cache duration to 15m and added refresh support for faster content updates.
2026-03-10 10:26:24 +01:00
Michael c57273be2c feat: Implement GPU-accelerated live HLS streaming with FFmpeg, including iOS optimizations and IPTV redirect resolution. 2026-03-09 14:10:13 +01:00
Michael c9a212ec4f feat: implement live HLS streaming with FFmpeg transcoding, GPU acceleration, and HLS segment serving. 2026-03-09 13:52:46 +01:00
Michael 0b5aa3f9e4 feat: Implement initial streaming handler for live and VOD content using FFmpeg HLS transcoding with GPU acceleration support. 2026-03-09 13:46:56 +01:00
Michael bd7645922d feat: add Xtream API proxy with SSRF protection and streaming handler with FFmpeg integration. 2026-03-09 13:41:56 +01:00
Michael 5ad3ad9f9e fix(stream): validate streamId AFTER stripping extension 2026-01-07 09:23:37 +01:00
Michael d1933f7500 merge: resolve Dockerfile conflict (kept optimization + nvenc support) 2026-01-07 08:44:50 +01:00
Michael 8df9a37baa feat: security overhaul (proxy ssrf fix, streaming sanitization, docker optimization) 2026-01-07 08:43:33 +01:00
Michael 71630d75e8 feat: Install FFmpeg with NVIDIA NVENC/NVDEC support via apt-get instead of a static build. 2026-01-03 10:26:17 +01:00
Michael 33a331dce9 Fix GPU rollbacks v2 - aresample filter, copyts, larger buffers 2026-01-02 09:21:51 +01:00
Michael 8670e42cf8 Fix GPU Live TV rollbacks - add vsync cfr, async, smaller buffer, faster keyframes 2026-01-02 09:01:14 +01:00
Michael 409878e173 Fix VOD GPU transcoding - remove hwaccel_output_format, use CBR mode for HLS 2026-01-01 23:33:02 +01:00
Michael cd3a49ce63 Fix GPU transcoding timeout - use CBR mode, increase timeouts, add keyframe interval 2026-01-01 23:27:04 +01:00
Michael a00d5ae4da Force GPU transcoding (h264_nvenc) for Live TV when GPU toggle is enabled 2026-01-01 23:19:48 +01:00
Michael ce82b9e824 feat: Implement API handlers for live and VOD streaming and create database module. 2026-01-01 20:13:56 +01:00
Michael 478107f0a4 feat: Add streaming handlers for live and VOD content using FFmpeg. 2026-01-01 20:05:40 +01:00
Michael d955ab9523 fix(live): transcode audio to AAC for browser compatibility
- Keep video as direct copy (low CPU)
- Transcode audio to AAC (supports AC3/EAC3/DTS sources)
- Downmix to stereo for 5.1 surround streams
2026-01-01 15:48:49 +01:00
Michael 9da60f2141 fix(live): optimize FFmpeg streaming for faster start with reliable audio
- Add -fflags +nobuffer+fastseek+genpts for instant stream start
- Keep probesize at 5MB for reliable audio detection
- Set analyzeduration to 3s for balanced speed/reliability
2026-01-01 15:48:01 +01:00
Michael f5093e8d0e feat: Add streaming handlers for live TV (MPEG-TS proxy) and VOD (HLS transcoding) using FFmpeg. 2026-01-01 15:44:57 +01:00
Michael 88caf38c8f fix: remove unsupported max_reload FFmpeg option 2025-12-16 20:59:52 +01:00
Michael 04508c37af fix: let FFmpeg handle HTTP redirects natively - manual resolution consumed one-time tokens 2025-12-16 20:50:21 +01:00
Michael b10f3d2441 fix: add HTTP redirect resolution for IPTV streams that return 302 2025-12-16 20:31:26 +01:00
Michael 01d522613f fix: add Dart-pure PlaylistConfig for server and fix imports 2025-12-16 20:20:24 +01:00
Michael 57b7acbead feat: Implement streaming handlers for live MPEG-TS proxy and VOD HLS transcoding via FFmpeg, and add a release build script. 2025-12-16 07:39:33 +01:00
Michael 887bfad433 feat: add streaming handler for live MPEG-TS proxying and VOD HLS transcoding with FFmpeg. 2025-12-15 22:24:07 +01:00
Michael b9d6d715d7 feat: Add initial IPTV support with a dedicated player, series detail screen, Xtream API service, and a streaming API handler. 2025-12-15 22:09:21 +01:00
Michael 3f9a88c09a feat: Implement Xtream Codes IPTV streaming, VOD transcoding, and content browsing UI with a dedicated web player. 2025-12-15 21:18:36 +01:00
Michael 6d69617e40 feat: Add local Docker test environment setup with PowerShell script and Docker Compose. 2025-12-15 20:56:17 +01:00
Michael 01d0e97961 feat: add web-based streaming player with HLS/MPEG-TS support and streaming API handler 2025-12-15 17:00:55 +01:00
Michael 07ffb1b75f feat: Introduce backend server with live TV proxy, VOD HLS transcoding, and IPTV streaming settings UI. 2025-12-15 16:49:48 +01:00
Michael 2c0725590e feat: Add initial IPTV player with web-based playback and streaming API. 2025-12-15 13:01:24 +01:00