HTTP Live Streaming (HLS)

  • Developed by Apple, HLS is one of the most widely used protocols for adaptive bitrate streaming.
  • How It Works:
    • The video is broken into small time-based segments (e.g., 5 seconds).
    • An M3U8 playlist (manifest) lists these segments and provides URLs for each bitrate.
    • The browser or player requests the playlist and then sequentially fetches video segments using HTTP.
  • Compatibility:
    • Supported natively on iOS, macOS, and many modern browsers via JavaScript-based players (e.g., Video.js).
  • Transport:
    • Delivered over HTTP/1.1 or HTTP/2 using TCP, and more recently over HTTP/3 using QUIC(UDP).

Dynamic Adaptive Stremaing over HTTP (DASH)

  • An open standard similar to HLS but more flexible.
  • How It Works:
    • Uses an MPD (Media Presentation Description) file as the manifest.
    • Like HLS, video segments are fetched using HTTP.
  • Transport:
    • Delivered over HTTP/1.1, HTTP/2, or even HTTP/3 (QUIC).

Progressive HTTP Streaming

  • Simpler than HLS or DASH, progressive streaming allows the client to fetch the entire video file incrementally.
  • How It Works:
    • The browser starts playing the video as soon as enough data is buffered.
    • Commonly used for short videos or static content.
  • Limitations:
    • Does not support adaptive bitrate or segmented delivery.

WebRTC

  • Used for low-latency, real-time video (e.g., video conferencing or live streaming).
  • How It Works:
    • WebRTC establishes peer-to-peer communication using UDP for minimal latency.
    • Requires a signaling server and STUN/TURN servers for connection setup.
  • Transport:
    • Runs over UDP with fallback to TCP if necessary.

Tip

QUIC is becoming relevant in the video streaming space