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> |
||
|---|---|---|
| .. | ||
| src | ||
| test | ||
| .env.example | ||
| .gitignore | ||
| Dockerfile | ||
| package-lock.json | ||
| package.json | ||