diff --git a/docs/playback-fallback.md b/docs/playback-fallback.md index 8c65802a..1295c068 100644 --- a/docs/playback-fallback.md +++ b/docs/playback-fallback.md @@ -94,8 +94,133 @@ sequenceDiagram end ``` +## HLS (.m3u8) sources + +Hosted sources whose path ends in `.m3u8` are HLS playlists and cannot be +assigned to `videoEl.src` on every browser. `js/services/hlsPlayback.js` owns +the decision and the hls.js lifecycle. + +**Engine choice.** hls.js (MSE) wins whenever `MediaSource` can back it; native +playback is used only when MSE is unavailable. Do NOT branch on `canPlayType` +alone — measured behavior differs sharply: + +| Browser | `canPlayType("application/vnd.apple.mpegurl")` | bare `