Best Practice
This document defines Guidelines and Best Practices for large scale streaming based on Unified Origin.
Both live and on-demand streaming are covered.
Advanced technologies such as object-based cloud storage, live ingest, ad insertion, trick mode, seek preview, content protection, sub-titling and others are considered.
The guidelines are based on practical knowledge accumulated in the last two decades. Also, the guidelines are well aligned to other best industry practices.
By following these guidelines, one is able to implement effective content preparation, storage, scalable delivery, frame-accurate capture, effective archiving, low latency delivery, and other performance improvements.
- General Recommendations
- Should Fix: Specify
--[iss|hls|hds|mpd].minimum_fragment_length
for relevant output formats - Should Fix: Use (multiple of) framerate as timescale
- Should Fix: Use
--variant_set
to list ~2Mbit variant first (affects HLS only) - Should Fix: Configure
--variant_set
when offering stereo and multi-channel audio (affects HLS only) - Should Fix: Set
--hls.client_manifest_version
to '4' (affects HLS TS only) - Should Fix: Enable
--hls.no_multiplex
(affects HLS TS only) - Should Fix: Set
--mpd.segment_template
to 'time' (affects DASH only) - Should Fix: Enable
--mpd.inline_drm
when using DRM (affects DASH only) - Should Fix: Set
--iss.client_manifest_version
to '22' (affects Smooth only) - Must Fix: Deliver over HTTPS (especially when streaming DRM protected content)
- Should Fix: Enable gzip compression on HLS playlists
- Should Fix: Validate HLS streams with MediaStreamValidator
- Should Fix: Specify
- Recommendations for VOD
- Should Fix: use object-based cloud storage to store large content libraries
- Should Fix: enable Apache subrequests to access to remote storage
- Should Fix: put a caching proxy between remote storage and Origin
- Should Fix: secure access to your remote storage
- Must Fix: use your metrics to define how to scale
- Must Fix: set up load balancing across different origins
- Must Fix: differentiate between longtail and most popular containt
- VOD test streams
- Learn more
- Recommendations for Live
- Must Fix: use of Smooth Streaming or CMAF ingest
- Must Fix: use of UTC timestamps
- Must Fix: Live encoder pushes stream to publishing point using HTTP POST
- Must Fix: send End-Of-Stream (EOS) signal at end of stream
- Must Fix: use fast, local storage (remote storage is not supported for Live)
- Must Fix: Set up a publishing point (including configuration)
- Should Fix: Explicitly specify archiving and DVR window options
- Must Fix: Enable --restart_on_encoder_reconnect
- Should Fix: add Origin and encoder redundancy
- Must Fix: Ensure connection between Live encoder and Origin is secure
- CMAF ingest test streams
- Learn more