mirror of
https://github.com/NohamR/dashdrm-mp4ff.git
synced 2026-07-11 19:10:04 +00:00
Add a Streamlink plugin (plugin/dashdrm_mp4ff.py) to support DRM-protected MPEG-DASH streams with optional mp4ff-decrypt integration. Include README with usage and installation notes, an interactive helper (gen.py) that reads vault.json and prints Streamlink commands, a vault.json example, pyproject.toml (declares inquirerpy dependency), .python-version, and .gitignore. This provides the plugin, packaging metadata, and tooling needed to run and test DASH-DRM streams locally.
1.8 KiB
1.8 KiB
dashdrm-mp4ff
Custom Streamlink plugin for DRM-protected MPEG-DASH streams.
This project is based on titus-au/streamlink-plugin-dashdrm, which itself is based on Streamlink's dash.py.
Install mp4ff-decrypt
go install github.com/Eyevinn/mp4ff/cmd/mp4ff-decrypt@latest
Make sure the Go bin directory is in your PATH, then verify:
mp4ff-decrypt -h
If you do not want to use mp4ff-decrypt, you can still use the plugin without --dashdrm-mp4ff-use-mp4ff.
Usage
Run Streamlink with the local plugin directory:
streamlink --plugin-dirs "plugin" "dashdrm://https://example.com/live.mpd" best
With mp4ff-decrypt and kid:key pairs:
streamlink \
--plugin-dirs "plugin" \
--dashdrm-mp4ff-use-mp4ff \
--dashdrm-mp4ff-decryption-key "kid1:key1,kid2:key2,kid3:key3" \
"dashdrm://https://example.com/live.mpd" \
best
Notes:
- Keys can be provided as raw keys or as
kid:key. - When
kid:keypairs are provided, the plugin parses the manifest and matches each track with the correct key. - The plugin file is
plugin/dashdrm_mp4ff.py.
gen.py
gen.py is a small helper that reads channels from vault.json, lets you pick one interactively, and prints the full Streamlink command.
Install the helper dependency:
uv sync
Create your own vault.json from vault.json.example, then run:
python gen.py
The expected structure is:
{
"channels": [
{
"id": "channel-id",
"number": "1",
"name": "Channel name",
"mpd_url": "https://example.com/live.mpd",
"keys": [
"kid1:key1",
"kid2:key2"
]
}
]
}