Source for MediaStreamValidator

I have run into several questions regarding mediastreamvalidator (see my other posts) but haven't been able to find anyone who can answer them. I think I could answer my own questions if I had the source code for the tool. Is it available? Seems like it would make sense to make it public to help support the HLS standard's adoption.


Thanks,

Phil

Replies

I have a lot of problems with this tool as well. It's extremely misleading and doesn't really help you align yourself any closer to the latest hls authoring guidelines. What I find even more annoying is that Apple's official examples, although, a bit contrived, all have "Must fix issues" and a handful of "Should fix issues". Apple's hls examples should not return any validation issues with their own tool. I mean what's up with their IDRs? Do they know something we don't know? They should really just pull this tool until their own streams can pass. It's great for pulling the metadata into a formatted table, but if they can't follow their own spec themselves this tool just sends developers down an unnecessary rabbit hole


It would be nice if they also added a bit more verbosity to their issues, even link back to their own guidelines doc.


Apple's official examples

https://developer.apple.com/streaming/examples/




HLS Validation Report

Stream type: VOD

https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_adv_example_hevc/master.m3u8

Variant Overview

Audio ID#Max Rate% Diff.Avg Rate% DiffResolutionIDR Int.FramerateCodecProfileLevelEncryption% Proc.
a113390.0%3040.0%416 x 2341.25330.000AVCHigh3.1-100%
25830.0%5330.0%480 x 2701.25330.000AVCHigh3.1-100%
310180.0%8910.0%640 x 3601.25330.000AVCHigh3.1-100%
414760.0%12780.0%768 x 4321.25330.000AVCHigh3.1-100%

5

25240.0%21910.0%960 x 5400.34260.000AVCHigh3.2-100%
636110.0%31840.0%1280 x 7200.34260.000AVCHigh3.2-100%
75328-1.7%4650-0.7%1920 x 10800.34060.000AVCHigh4.2-93%
86737-7.9%5971-2.6%1920 x 10800.34060.000AVCHigh4.2-78%
98686-12.0%7759-3.6%1920 x 10800.34060.000AVCHigh4.2-67%
a2105620.0%5260.0%416 x 2341.25330.000AVCHigh3.1-100%
118050.0%7560.0%480 x 2701.25330.000AVCHigh3.1-100%
1212400.0%11130.0%640 x 3601.25330.000AVCHigh3.1-100%
1316980.0%15000.0%768 x 4321.25330.000AVCHigh3.1-100%

14

27460.0%24130.0%960 x 5400.34260.000AVCHigh3.2-100%
1538340.0%34060.0%1280 x 7200.34260.000AVCHigh3.2-100%
165551-1.7%4873-0.6%1920 x 10800.34060.000AVCHigh4.2-93%
176960-7.7%6194-2.5%1920 x 10800.34060.000AVCHigh4.2-78%
188909-11.8%7982-3.5%1920 x 10800.34060.000AVCHigh4.2-67%
a3193700.0%3340.0%416 x 2341.25330.000AVCHigh3.1-100%
206130.0%5640.0%480 x 2701.25330.000AVCHigh3.1-100%
2110480.0%9210.0%640 x 3601.25330.000AVCHigh3.1-100%
2215060.0%13080.0%768 x 4321.25330.000AVCHigh3.1-100%

23

25540.0%22210.0%960 x 5400.34260.000AVCHigh3.2-100%
2436420.0%32140.0%1280 x 7200.34260.000AVCHigh3.2-100%
255359-1.7%4681-0.7%1920 x 10800.34060.000AVCHigh4.2-93%
266768-7.9%6002-2.6%1920 x 10800.34060.000AVCHigh4.2-78%
278717-12.0%7790-3.6%1920 x 10800.34060.000AVCHigh4.2-67%
a1283410.0%3150.0%416 x 2342.50530.000HEVCMain 104.1-100%
295490.0%5220.0%480 x 2702.50530.000HEVCMain 104.1-100%
309020.0%8290.0%640 x 3602.50530.000HEVCMain 104.1-100%
3112260.0%11390.0%768 x 4322.50530.000HEVCMain 104.1-100%
3221640.0%19660.0%960 x 5402.62960.000HEVCMain 104.1-100%
3327650.0%26360.0%1280 x 7202.62960.000HEVCMain 104.1-100%
3440800.0%34410.0%1920 x 10802.62960.000HEVCMain 104.1-100%
355192-4.3%4773-0.6%1920 x 10802.62760.000HEVCMain 104.1-92%
3666640.0%61270.4%1920 x 10802.62760.000HEVCMain 104.1-79%
a2375630.0%5370.0%416 x 2342.50530.000HEVCMain 104.1-100%
387710.0%7450.0%480 x 2702.50530.000HEVCMain 104.1-100%
3911240.0%10520.0%640 x 3602.50530.000HEVCMain 104.1-100%
4014490.0%13610.0%768 x 4322.50530.000HEVCMain 104.1-100%
4123870.0%21890.0%960 x 5402.62960.000HEVCMain 104.1-100%
4229870.0%28580.0%1280 x 7202.62960.000HEVCMain 104.1-100%
4343020.0%36640.0%1920 x 10802.62960.000HEVCMain 104.1-100%
445414-4.2%4995-0.6%1920 x 10802.62760.000HEVCMain 104.1-92%
4568870.0%63500.4%1920 x 10802.62760.000HEVCMain 104.1-79%
a3463710.0%3450.0%416 x 2342.50530.000HEVCMain 104.1-100%
475790.0%5530.0%480 x 2702.50530.000HEVCMain 104.1-100%
489320.0%8600.0%640 x 3602.50530.000HEVCMain 104.1-100%
4912570.0%11690.0%768 x 4322.50530.000HEVCMain 104.1-100%
5021950.0%19970.0%960 x 5402.62960.000HEVCMain 104.1-100%
5127950.0%26660.0%1280 x 7202.62960.000HEVCMain 104.1-100%
5241100.0%34720.0%1920 x 10802.62960.000HEVCMain 104.1-100%
535222-4.3%4803-0.6%1920 x 10802.62760.000HEVCMain 104.1-92%
5466950.0%61580.4%1920 x 10802.62760.000HEVCMain 104.1-79%

Average duration processed: 0:10:00

Rendition Overview

Group ID#Max RateAvg RateTypeNameInstreamIDCodecAudioChannelsSample RateLang.Encryption% Proc.
a155162162AudioEnglish--AAC-LCStereo48000en-US-100%
a256384384AudioEnglish--AC-35.148000en-US-100%
a357192192AudioEnglish--EC-35.148000en-US-100%
cc58--CCEnglishCC1----en-N/A
sub15900SubtitleEnglish-WebVTT---en-100%

Average duration processed: 0:10:00

I-Frame Variant Overview

Video ID#Max Rate% Diff.Avg Rate% DiffScaled AvgMult.ResolutionIDR Int.IDR Std Dev.CodecProfileLevelEncryption% Proc.
6094-1.8%91-0.1%3634x480 x 2700.5000.000AVCHigh3.1-14%
61187-0.1%1770.0%7084x640 x 3600.5000.000AVCHigh3.1-14%
62520-0.1%5090.0%20364x960 x 5400.5000.000AVCHigh3.1-14%
637600.0%7320.0%29274x1280 x 7200.5000.000AVCHigh3.1-14%
6410160.0%9280.0%37124x1920 x 10800.5000.000AVCHigh4-14%
6552-0.1%510.0%4048x480 x 2701.0000.000HEVCMain 104.1-29%
6693-0.1%910.0%7278x640 x 3601.0000.000HEVCMain 104.1-29%
67159-0.1%154-0.1%12318x960 x 5401.0000.000HEVCMain 104.1-29%
68226-0.1%2170.0%17328x1280 x 7201.0000.000HEVCMain 104.1-29%
69328-0.1%287-0.1%22958x1920 x 10801.0000.000HEVCMain 104.1-29%

Average duration processed: 0:10:00

Checked against HLS Authoring Specification for Apple Devices

Must Fix Issues

1. The server MUST deliver playlists using gzip content-encoding

  • Master Playlist
  • Variant #1
  • Variant #5
  • Variant #9
  • Variant #10
  • Variant #14
  • Variant #18
  • Variant #19
  • Variant #23
  • Variant #27
  • Variant #36
  • Variant #45
  • Variant #54
  • Rendition #55
  • Rendition #59

2. Measured peak bitrate compared to master playlist declared value exceeds error tolerance

  • Master Playlist Stream Definition for Variant #9
  • Master Playlist Stream Definition for Variant #18
  • Master Playlist Stream Definition for Variant #27

Should Fix Issues

3. Target durations SHOULD be 6 seconds.

  • All Variants
  • Rendition #55
  • Rendition #56
  • Rendition #57

4. Content protection SHOULD follow the FairPlay Streaming (FPS) specification

  • All Variants
  • All I-Frame Variants
  • Rendition #55
  • Rendition #56
  • Rendition #57

5. You SHOULD support stream failover

  • All Variants
  • All I-Frame Variants

6. Key frames (IDRs) SHOULD be present every two seconds

  • Variant #28
  • Variant #29
  • Variant #30
  • Variant #31
  • Variant #32
  • Variant #33
  • Variant #34
  • Variant #35
  • Variant #36
  • Variant #37
  • Variant #38
  • Variant #39
  • Variant #40
  • Variant #41
  • Variant #42
  • Variant #43
  • Variant #44
  • Variant #45
  • Variant #46
  • Variant #47
  • Variant #48
  • Variant #49
  • Variant #50
  • Variant #51
  • Variant #52
  • Variant #53
  • Variant #54

Report Information

MediaStreamValidator version:Version 1.2 (373.7-180828)
Report generator version:1.2 (373.7-180828)
Report generation date:11/07/18 10:40:11
JSON format version:1.1
JSON data timestamp:11/07/18 10:39:51

Thanks for the feedback, but the most effective place to give feeedback is via a radar or a support incident.


Concerning medaistreamvalidtor source. Nope, not available. Not likely to made available either.


As far as the samples having issues, there are several reasons for that:

- Samples may have passed the validator when the were put up, and the validator got more strict or modified rules later. (But yes, we should probably regen them to be more in line with the current version.)

- The issue of GZIP encoding is really only for production strreams which the sample is not.

- "Should fix" errors are things that you can violate. For example, no stream failover, or not using FPS.