Apple provides HTTP Live Streaming Tools to help you set up an HTTP Live Streaming service. Media Stream Validator(mediastreamvalidator) is a tool to verify if your HLS has no compatibility issue or not. You can download it at https://developer.apple.com/documentation/http_live_streaming/about_apple_s_http_live_streaming_tools
We can use Apple’s mediastreamvalidator tool to validate our video streams. It checks that the playlist and the media segments conform to the HTTP Live Streaming specification and will report any problems it finds so we can fix them.
To check if a video stream is valid, call mediastreamvalidator with the URL of the playlist. If you run the following command, you should see something like this:
$ mediastreamvalidator http://hlsbook.net/wp-content/examples/sintel/sintel_index.m3u8 [...] Started root playlist download [...] Started media playlist download [...] All media files delivered and have end tag, stopping -------------------------------------------------------------------------------- http://hlsbook.net/wp-content/examples/sintel/sintel_index.m3u8 -------------------------------------------------------------------------------- Processed 7 out of 7 segments Average segment duration: 10.000000 Total segment bitrates (all discontinuties): average: 867.51 kb/s, max: 1199.59 kb/s Discontinuity: sequence: 0, parsed segment count: 7 of 7, duration: 70.000 sec, average: 867.51 kb/s, max: 1199.59 kb/s Track ID: 1 Video Codec: avc1 Video profile: High Video level: 3.1 Video resolution: 1024x436 Video average IDR interval: 3.646930, Standard deviation: 3.265633 Video frame rate: 24.000 Track ID: 2 Audio Codec: AAC-LC Audio sample rate: 48000 Hz Audio channel layout: Stereo (L R)
The latest version (1.1) of mediastreamvalidator
supports outputting the data to a file in JSON format. You can then pass this JSON file to another of Apple’s tools hlsreport
, which will generate a nicely formatted summary for you in an HTML page. Let’s look at the commands we need to run to do this:
$ mediastreamvalidator -O validation.json \ http://hlsbook.net/wp-content/examples/sintel/sintel_index.m3u8 $ hlsreport.py -o report.html validation.json