dragonflight/services/worker/src/workers
Zac Gaetano 8ea750f5df feat(playback): HLS VOD rendition for browser (supplements MP4 proxy)
Browser playback of recorded assets moves to HLS, retiring the MP4
range-stitching path for VOD. MP4 proxy is kept for the Premiere panel.

- worker/hls.js: remuxToHls() stream-copies the proxy MP4 → fMP4 HLS
  (playlist.m3u8 + init.mp4 + segment_*.m4s) via existing segmentToHls,
  uploads to hls/<id>/, sets assets.hls_s3_key. hlsWorker backfills from
  an existing proxy.
- proxy.js: generate HLS inline after the MP4 upload (local file, no
  re-download, no re-encode); best-effort/non-fatal.
- worker/index.js: register 'hls' worker wherever 'proxy' runs.
- mam-api: GET /assets/:id/hls/:file serves playlist/init/segments as
  whole-object GETs (no Range → sidesteps RustFS bug), strict filename
  validation. /stream prefers hls_s3_key (type:'hls'). reprocess?type=hls
  backfills. Migration 025 adds assets.hls_s3_key.
- Frontend unchanged: hls.js path already handles type:'hls'.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-29 16:18:15 -04:00
..
conform.js feat(worker): conform — queue proxy build for the conformed output 2026-05-28 15:49:01 -04:00
filmstrip.js feat: server-side filmstrip worker + fix scheduler crash + fix clip freeze 2026-05-26 16:39:44 +00:00
hls.js feat(playback): HLS VOD rendition for browser (supplements MP4 proxy) 2026-05-29 16:18:15 -04:00
promotion.js fix(promotion): singleton proxyQueue; await promote(); return shutdown fn (issue #94 bugs 3, 4) 2026-05-26 07:36:08 -04:00
proxy.js feat(playback): HLS VOD rendition for browser (supplements MP4 proxy) 2026-05-29 16:18:15 -04:00
thumbnail.js feat: server-side filmstrip worker + fix scheduler crash + fix clip freeze 2026-05-26 16:39:44 +00:00
trimWorker.js fix(trim): update jobs table status on complete/fail (issue #94 bug 2) 2026-05-26 07:35:28 -04:00
youtube-import.js fix(youtube-import): export proxyQueue singleton for clean SIGTERM shutdown (issue #94 bug 7) 2026-05-26 07:38:07 -04:00