mpd-parser
Installation
$ python -m pip install mpd-parser
Usage
Importing
from mpd_parser.parser import Parser
parse from string
with open("path/to/file.mpd", mode="r") as manifest_file:
mpd_string = manifest_file.read()
parsed_mpd = Parser.from_string(mpd_string)
parse from file
input_file = "path/to/file.mpd"
mpd = Parser.from_file(input_file)
convert back to string
mpd_as_xml_string = Parser.to_string(parsed_mpd)
Overview
A utility to parse mpeg dash mpd files quickly This package is heavily inspired by mpegdash package the main difference is that I choose to relay on lxml for parsing, and not the standard xml library.
The decision to implement it with lxml is for two reasons:
- lxml is faster then minidom
- lxml mimics the ElementTree API which is a more pythonic approach to XMLs
mpegdash package has two distinct advantages over this package:
- it does not require third party libraries.
- it uses the classic DOM approach to parsing XML files. it is a well known standard.
Benchmarks
TBA
Example manifests
Taken from https://ottverse.com/free-mpeg-dash-mpd-manifest-example-test-urls/ These are what I used to test and benchmark the package.
Missing unit-tests
- tags
- attribute parsers
- full manifest testing
Contributing
TBA
Build locally
python -m build
Run pylint locally
I try to keep the pylint score above 9.
python -m pylint ./mpd_parser/
TODO
-
finish working on periods and sub tagsperiodsadapt-setssegment basessegment listssegment templatesasset idsevent streamssubsets
create package locallytest it- complete readme
installationusage- Benchmarks
- contributing
push to githubpush package to pypi- add github actions
pylintpytestbuild packagepush package
- complete unit-tests
- refactor tags to multiple files
- Parsing:
parsing from stringparsing from file- parsing from URL
- save mpd object:
object to string- object to file