hls-test/thoughts.md
2021-10-22 11:27:02 -07:00

2.1 KiB

"All-open" mode uses only open formats, forces Safari on iPhone and older desktops to use ogv.js fallback:

  • DASH manifest
    • WebM VP9 video segments
    • WebM Opus audio segments
    • WebM Vorbis audio segments (for Safari)
  • WebM VP8/Vorbis flat file fallback

"Open-forward" mode avoids ISO not-quite-open formats except in compatibility fallbacks. Multi-res capability for all modern desktops, but not iPhone or iPad which will load a single flat file natively.

  • DASH manifest
    • WebM VP9 video segments
    • WebM Opus audio segments
    • WebM Vorbis audio segments (for Safari)
  • WebM VP8/Vorbis flat file fallback (old Firefox/Chrome or JS off)
  • MP4 H.264/MP3 flat file fallback (for iOS and single-URL linking)

"HLS-forward" mode has full multi-res capability on newer iPhones and iPads, AND all modern desktops, but requires making multiple H.264 and MP3 files and using MP4 container.

  • HLS manifest

    • MP4 VP9 video segments
    • MP4 H.264 video segments (for Safari)
    • MP4 Opus audio segments
    • MP4 MP3 audio segments (for Safari)
  • WebM VP8/Vorbis flat file fallback

  • MP4 H.264/MP3 flat file fallback (for single-URL linking)

  • Chrome/Firefox: use MSE to handle HLS

  • Desktop Safari: use MSE to handle HLS

  • iPhone/iPad: use native HLS

  • old Firefox/Chrome: use WebM VP8 fallback

  • old IE/Edge/Safari: use MP4 H.264 fallback

"Split-ticket" mode works fully on VP9-supporting iPhones, iPads, and Macs but falls back to ogv.js for older ones, while modern desktops all get the multi-res magic. Requires using MP4 container and MP3 audio, which are not patented but the standards docs are paywalled. Note that desktop Safari with JS off won't see working video.

  • HLS manifest

    • MP4 VP9 video segments
    • MP4 Opus audio segments
    • MP4 MP3 audio segments (for Safari)
  • WebM VP8/Vorbis flat file fallback

  • Chrome/Firefox: use MSE to handle HLS

  • Desktop Safari w/ hw VP9: use MSE to handle HLS

  • Desktop Safari w/o hw VP9: HLS errors out; fall back to ogv.js

  • iPhone/iPad w/ hw VP9: use native HLS

  • iPhone/iPad w/o hw VP9: HLS errors out; fall back to ogv.js

  • old Firefox/Chrome: use WebM VP8 fallback