Python package and command-line utilities for working with HLS (M3U8) playlists and MPEG-DASH Media Presentation Description (MPD) manifests.
uv tool install 'stream-parser @ git+https://github.com/ink-splatters/stream-parser'TODO: PyPI publication
- Load HLS playlists and DASH MPDs from files, stdin, and HTTP(S).
- Serialize parsed manifests and enumerate initialization and media URLs.
-
hlsanddashCLIs feature parity. - Download media or delegate to a download manager, with track/representation selection and byte-range handling.
- Assemble downloaded media with FFmpeg, handling initialization segments and separate audio/video tracks.
- Explore streaming server with configurable segment duration and optional
media processing, as a potential separate project, using
stream-parser
hls urls -f playlist.m3u8
dash urls -f manifest.mpd
dash dump -f manifest.mpd
cat manifest.mpd | dash urlsUse -u to fetch a manifest, and repeat -H to supply HTTP headers:
dash urls -u https://example.com/video/manifest.mpd \
-H 'Referer: https://example.com/watch' \
-H 'Authorization: Bearer token'
# contains url
pbpaste | hls urls -u -uv sync --locked --all-extras
uv run poe fix
uv run poe testUpdate all dependencies:
uv lock --upgradeUpdate GitHub actions:
bunx actions-up
# or
# npx actions-up