-
Notifications
You must be signed in to change notification settings - Fork 5
Description
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:
- 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.mpdWhere 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.
- 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.