Skip to content

MPD Parser Incompleteness #2

@ogkloo

Description

@ogkloo

The project's MPD parser is incomplete. This is documented in the code but not in the readme, making it non-obvious and confusing when one tries to parse commonly used example mpd files (for instance this one used in DASH.js samples) and it crashes. Further, the code does not provide examples of manifests that do work, meaning users are forced to resort to guesswork. This limits the reach of the project, which is unfortunate because once I got around this issue I've really been enjoying it over working with the browser.

Possible solutions:

  1. The MPD parser does actually work, it just needs specially formatted manifests. Add a script which generates correctly formatted MPDs or provide advice on doing so. I've found the following MP4Box command adapted from @wld22145's BONES generates usable manifests:
$ MP4Box -dash $SEGMENT_TIME -frag $SEGMENT_TIME -rap -bs-switching no -profile dashavc264:live -url-template output_${bitrate1}k.mp4:id="0" output_${bitrate2}k.mp4:id="1" output_${bitrate3}k.mp4:id="2" output_${bitrate4}k.mp4:id="3" output_${bitrate5}k.mp4:id="4" output_${bitrate6}k.mp4:id="5" -segment-name '$RepresentationID$/segments_m4s/segment_$Number$' -out multi_resolution.mpd

Where SEGMENT_TIME is the desired segment time in ms and bitrateX are the desired bitrates in kbps.

Something as simple as adding a section in the readme saying "this project needs specifically formatted manifests, you can generate them with..." would be nice and allow people to get started with iStream Player easier in the future.

  1. Move the parser forward. I think this would require a lot of effort since afaik there are no feature-complete MPEG-DASH manifest parsers written in Python. There are few issues with the parser that stick out immediately, it needs integer Representation IDs and requires MIME types be specified as a representation attribute, while the DASH specification allows for string Representation IDs and the MIME type belonging to the Adaptation Set that the Representation belongs to. I'm by no means an expert on DASH manifests so there's probably more to be done.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions