Skip to content

Command Line Interface

Daniel Silhavy edited this page Mar 6, 2023 · 11 revisions

The new version of the DASH-IF Conformance Tools offer a command-line interface that can directly be called via php. Note that because of relative paths linking to specific dependencies you need to call the command line interface from the Utils folder:

cd Utils
php Process_cli.php [options] <url> 

Possible options are:

  • -h, --help : Print help text
  • -c, --cmaf : Enable CMAF checking
  • -w, --ctawave: Enable CTA WAVE checking
  • -H, --hbtv: Enable HbbTV Checking
  • -D, --dvb: Enable DVB checking (2018 xsd)
  • --dvb_2019: Enable DVB checking (2019 xsd)
  • -l, --lowlatency : Enable DASH-IF IOP Low Latency checking
  • -i, --iop : Enable DASH-IF IOP checking
  • -o, --dolby : Enable Dolby checking
  • -s, --segments : Enable Segment validation
  • -C, --compact : Provide compact JSON output
  • --latest_xsd: Use the latest xsd files for verification
  • -S, --silent: Do not output JSON to stdout
  • -A, --autodetect: Automatically detect profiles
  • --disable_detailed_segment_output: Disables the detailed segment validation output to reduce the size of the final JSON

The results are provided as a JSON output that looks the following:

{
  "source": "https:\/\/dash.akamaized.net\/akamai\/bbb_30fps\/bbb_30fps.mpd",
  "entries": {
    "MPEG-DASH Common": {
      "verdict": "FAIL",
      "MPD": {
        "verdict": "FAIL",
        "info": [
          "Schematron output: 0XLink resolving successful\n\n\nMPD validation successful - DASH is valid!\n\n\n<svrl:failed-assert test=\"if((contains(@profiles, 'urn:hbbtv:dash:profile:isoff-live:2012') or (not(@profiles) and contains(ancestor::dash:MPD\/@profiles, 'urn:hbbtv:dash:profile:isoff-live:2012'))) and (@subsegmentAlignment = 'true')) then false() else true()\"\n                       location=\"\/*:MPD[namespace-uri()='urn:mpeg:dash:schema:mpd:2011'][1]\/*:Period[namespace-uri()='urn:mpeg:dash:schema:mpd:2011'][1]\/*:AdaptationSet[namespace-uri()='urn:mpeg:dash:schema:mpd:2011'][1]\">\n      <svrl:text>HbbTV-DVB DASH Validation Requirements check violated for HbbTV: Section 'MPD' - The MPD contains an attribute that is not part of the HbbTV profile', i.e., found 'subsegmentAlignment' as true<\/svrl:text>\n   <\/svrl:failed-assert>\n<svrl:failed-assert test=\"if((contains(@profiles, 'urn:hbbtv:dash:profile:isoff-live:2012') or (not(@profiles) and contains(ancestor::dash:MPD\/@profiles, 'urn:hbbtv:dash:profile:isoff-live:2012'))) and (@subsegmentStartsWithSAP = '1' or @subsegmentStartsWithSAP = '2')) then false() else true()\"\n                       location=\"\/*:MPD[namespace-uri()='urn:mpeg:dash:schema:mpd:2011'][1]\/*:Period[namespace-uri()='urn:mpeg:dash:schema:mpd:2011'][1]\/*:AdaptationSet[namespace-uri()='urn:mpeg:dash:schema:mpd:2011'][1]\">\n      <svrl:text>HbbTV-DVB DASH Validation Requirements check violated for HbbTV: Section 'MPD' - The MPD contains an attribute that is not part of the HbbTV profile', i.e., found 'subsegmentStartsWithSAP' as 1 or 2<\/svrl:text>\n   <\/svrl:failed-assert>\n<svrl:failed-assert test=\"if((contains(@profiles, 'urn:hbbtv:dash:profile:isoff-live:2012') or (not(@profiles) and contains(ancestor::dash:MPD\/@profiles, 'urn:hbbtv:dash:profile:isoff-live:2012'))) and (@subsegmentAlignment = 'true')) then false() else true()\"\n                       location=\"\/*:MPD[namespace-uri()='urn:mpeg:dash:schema:mpd:2011'][1]\/*:Period[namespace-uri()='urn:mpeg:dash:schema:mpd:2011'][1]\/*:AdaptationSet[namespace-uri()='urn:mpeg:dash:schema:mpd:2011'][2]\">\n      <svrl:text>HbbTV-DVB DASH Validation Requirements check violated for HbbTV: Section 'MPD' - The MPD contains an attribute that is not part of the HbbTV profile', i.e., found 'subsegmentAlignment' as true<\/svrl:text>\n   <\/svrl:failed-assert>\n<svrl:failed-assert test=\"if((contains(@profiles, 'urn:hbbtv:dash:profile:isoff-live:2012') or (not(@profiles) and contains(ancestor::dash:MPD\/@profiles, 'urn:hbbtv:dash:profile:isoff-live:2012'))) and (@subsegmentStartsWithSAP = '1' or @subsegmentStartsWithSAP = '2')) then false() else true()\"\n                       location=\"\/*:MPD[namespace-uri()='urn:mpeg:dash:schema:mpd:2011'][1]\/*:Period[namespace-uri()='urn:mpeg:dash:schema:mpd:2011'][1]\/*:AdaptationSet[namespace-uri()='urn:mpeg:dash:schema:mpd:2011'][2]\">\n      <svrl:text>HbbTV-DVB DASH Validation Requirements check violated for HbbTV: Section 'MPD' - The MPD contains an attribute that is not part of the HbbTV profile', i.e., found 'subsegmentStartsWithSAP' as 1 or 2<\/svrl:text>\n   <\/svrl:failed-assert>\nSchematron validation not successful - DASH is not valid!\n\n\n"
        ],
        "test": [
          {
            "spec": "MPEG-DASH",
            "section": "Commmon",
            "test": "Schematron Validation",
            "messages": [
              "XLink resolving succesful",
              "MPD validation succesful",
              "Schematron validation failed"
            ],
            "state": "FAIL"
          }
        ]
      }
    },
    "Stats": {
      "LastWritten": "2022-06-09 10:18:06"
    },
    "verdict": "FAIL"
  },
  "verdict": "FAIL",
  "enabled_modules": [
    {
      "name": "MPEG-DASH Common"
    }
  ]
}
Clone this wiki locally