About HLS Authoring
This document describes the requirements for live and VOD audio-video content delivery using HTTP Live Streaming (HLS) to Apple devices.
For a deeper discussion of the features available in HLS, please refer to Apple’s streaming resource page at http://developer.apple.com/streaming/, which contains pointers to the overview document, the HLS specification, technical notes, FAQs, presentations, and examples.
The HLS specification is a published RFC [RFC8216]. However, HLS continues to evolve, so there is an updated draft specification - draft-pantos-hls-rfc8216bis [HLS2]. This document always uses the most recent version of the draft standard.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", “SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
Testing Your Streams
Apple provides several command-line tools for HTTP Live Streaming. These can be obtained from https://developer.apple.com/download/more. (Once on that page, do a search for “http live streaming tools”.)
To assist in validating your streams use the command-line tools
hlsreport.py. While these tools are unable to check everything about your streams, the checks they do are fairly comprehensive and we continue to improve the tools.
You should check the video quality of your streams by visual inspection. The
mediastreamvalidator tool does not check video quality.
You should check playback of your streams under a variety of network conditions.
hlsreport.py is used to generate an HTML summary report from a JSON file that was generated by
mediastreamvalidator. The report includes several tables with details about variants, renditions, and I-frame variants. Each table entry has a unique ‘stream ID’ number. A list of issues is included, divided into 'Must Fix' and 'Should Fix' categories according to this specification. The issues cross-reference individual variants and renditions using the unique stream IDs.
The simplest way to call it is:
validation_data.json is the JSON file produced by
mediastreamvalidator. This will produce a file called
validation_data.html that is the report. You can change the name of the report file with the
hlsreport.py -o my_report.html validation_data.json
For further information, see the
hlsreport(1) man page.