Unified Player
Web player uses ReactPlayer with conditional HLS:
- Force HLS for
.m3u8except on WebKit (native HLS) - Force audio for direct MP3/HTTP(S) URLs
playsInline,crossOriginfor mobile and CORS- Fallback chain for R2: HLS → MP4 → raw object (
<hash>/index)