Deliver video over HTTPS to make use of content distribution networks

  • Video content encoded in multiple chunks
    • Each chunk encodes ~10 seconds of video
    • Each chunk independently decodable
    • Each chunk made available in many different versions at different encoding rates
  • A manifest file provides an index for what chunks are available
  • Clients fetch manifest, download chunks in turn
    • Standard HTTPS downloads
    • But monitor download rate, and choose what encoding rate to fetch next – adaptive bitrate
    • Playout chunks in turn, as they download

DASH Latency

Multi-second playout latency common, due to:

  • Chunk duration
    • Must download complete chunk before starting playout
    • Download and decompress chunk n
    • Start playing chunk n and while playing download chunk n+1
    • No packets lost → latency equals chunk duration
  • Playout buffering
  • Encoding delays for live streaming
  • TCP
    • TCP retransmits after triple duplicate ack, which takes time and delays the download:
      • 4x packet transmission latency, + 1x network RTT
      • Reduced window
  • Chunks and Video Compression
    • Each chunk of video is independently decodable
      • Can’t compress based on previous chunk, because previous chunk depends on the network capacity → unpredictable
    • Each chunk therefore starts with an I-frame, followed by P-frames
      • I-frames are large: often 20× size of P-frames
      • If chunks are smaller duration → contain fewer P-frames compared to number of I-frames; video compression ratio goes down
    • Trade-off between chunk size and compression overhead
      • Large chunks require less data, but add latency
      • Small chunks reduce latency, but need more data
      • Overheads become excessive for chunk duration ≲2 seconds