Skip to main content

A module to parse, analyze and validate MPEG-DASH MPD

Project description

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:

  1. lxml is faster then minidom
  2. lxml mimics the ElementTree API which is a more pythonic approach to XMLs

mpegdash package has two distinct advantages over this package:

  1. it does not require third party libraries.
  2. 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

  1. tags
  2. attribute parsers
  3. 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

  1. finish working on periods and sub tags
    1. periods
    2. adapt-sets
    3. segment bases
    4. segment lists
    5. segment templates
    6. asset ids
    7. event streams
    8. subsets
  2. create package locally
  3. test it
  4. complete readme
    1. installation
    2. usage
    3. Benchmarks
    4. contributing
  5. push to github
  6. push package to pypi
  7. add github actions
    1. pylint
    2. pytest
    3. build package
    4. push package
  8. complete unit-tests
  9. refactor tags to multiple files
  10. Parsing:
    1. parsing from string
    2. parsing from file
    3. parsing from URL
  11. save mpd object:
    1. object to string
    2. object to file

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mpd_inspector-0.1.0.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

mpd_inspector-0.1.0-py3-none-any.whl (11.7 kB view details)

Uploaded Python 3

File details

Details for the file mpd_inspector-0.1.0.tar.gz.

File metadata

  • Download URL: mpd_inspector-0.1.0.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.7 Darwin/23.3.0

File hashes

Hashes for mpd_inspector-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a11ee7b94a3c9c595b0feb16d6547f4343a5f329d845fd095a76d540a5278f17
MD5 150ca603b0dde1dfb0639e04695c129b
BLAKE2b-256 96706b0c7ffd4dedd651487ae6973a6ebe65e2b6ba4cae1e48bd959c124d9931

See more details on using hashes here.

Provenance

File details

Details for the file mpd_inspector-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mpd_inspector-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.11.7 Darwin/23.3.0

File hashes

Hashes for mpd_inspector-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 40cc4b9f0207e204b64cbc895a6aee30e276e03d0fdbe020309b741721d81ebf
MD5 14ad880619e25b44e84742c463afa2c7
BLAKE2b-256 cb343a35659b838607da614e3d346081eee03bc87b3ae3a3377f2dc84b48daa1

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page