Best practices for ULL

Implement these best practices to get the most out of ultra low latency (ULL) streaming.

General

  • Ensure that you access an ultra low latency (ULL) stream using only /live-ull to achieve the best end-to-end latency.
  • If you access a ULL-optimized stream using both a ULL optimized player (using the /live-ull URL) and a regular player (using the /live URL), ensure that the regular player does not access the partial segment.
  • With a regular player and HLS streams, the player gets the playlist with segments that are fully uploaded to your origin.
  • With a regular player and DASH streams, the player is more conservative in fetching the newest segment, so that the newest segment is always fully available.

CMAF content-specific

Stable latency reduction with ULL-CMAF is only achieved if all of the following are in place.

  • The content in the CMAF segment needs to be chunked encoded.
  • The encoder adjusts its manifest or playlist production to accommodate and signal the usage of chunked encoding and early availability of the data.
  • The encoder pushes content to the origin using HTTP 1.1 chunked encoding transfer.
  • The CDN propagates this content all the way to the client using HTTP chunked encoding transfer at each step in the distribution chain.
  • Make sure the following apply with the player:
    • It needs to accurately time the request for the segment and request the segment within one segment duration of the live edge.
    • It needs to decode the bit stream as it's received and it can't wait for "end-of-segment." Browser-based HTML5 players need to use the Fetch rather than the XHR API. This is because Fetch can read the response body while the data is still being downloaded.
    • It uses a scheme to estimate throughput. This is because standard segment-timing techniques fail.
    • It has buffer and adaptation logic to cope with very low buffers.
    • It has a catch-up feature to support fluctuations in throughput.
  • Also, see Ultra-Low-Latency Streaming Using Chunked-Encoded and Chunked-Transferred CMAF for more best practice information regarding CMAF.