Plugins

Back to All Plugins

Dispatchwrapparr

Version: 1.7.2 Author: jordandalley Last Updated: Jun 06 2026, 02:42 UTC

An intelligent DRM/Clearkey capable stream profile for Dispatcharr

License: MIT Discord Repository

Dispatcharr min

Downloads

Latest Release

Checksums:

MD5:    443e3e3a5d0868e95e66e31d2a133c8f
SHA256: 00f5f8dad21427cbc317cc9c04d9442a5fe19ebfa6fbb9ebfc059e786dbf61ec

All Versions

Version Download Built Commit MD5 SHA256
1.7.2 Download Jun 06 2026, 02:42 UTC 0d3e0b5 443e3e3a5d0868e95e66e31d2a133c8f 00f5f8dad21427cbc317cc9c04d9442a5fe19ebfa6fbb9ebfc059e786dbf61ec
1.7.1 Download May 24 2026, 21:57 UTC 447eca9 39b03ca5cc4c809bc7e118e5258f2a52 5d56a759f1fb479dfb0c5f8ce525408510ad19598238c8f56dbca899e8e74f4a
1.7.0 Download May 22 2026, 04:46 UTC ef5e336 0b2a4e714d6541133b8a8dcf6849d9e0 93f3a833c585294fb396442172c399457413a1962607ac5bb01f69ffb3b70fd2
1.6.2 Download Apr 28 2026, 01:30 UTC 44fbc6b f33c4a46e9012498858ac1770370888c 49137d25684dfab53fd571aed6b94a2432fa2dcdfb6aa9629755b05bd0bcc02b
1.6.1 Download Apr 16 2026, 11:17 UTC 7ac9bb7 2fe71caf70f35c68caae8760cab65034 0ee0ff2e49b363ce83eef7db68420581e52514191762a1f490ad10cd33481fe7
1.6.0 Download Apr 02 2026, 13:11 UTC 2d4aba3 aa6727ebe8ce16bd23aa9f7f54e783f9 3e97ed6d1ab0e80c3cb4bb49980eb3dc001a5d7c20ba499dd0e1388fce3629f5

Maintainers: michaelmurfy Source: Browse Plugin

Metadata: View full manifest


Plugin README

Dispatchwrapparr - Super wrapper for Dispatcharr

Dispatchwrapparr Logo

šŸ¤ What does Dispatchwrapparr do?

āœ… Builtin DASH and HLS Clearkey/DRM Support — Either append a #clearkey=<clearkey> fragment to the end of the URL or include a clearkeys json file or URL for DRM decryption
āœ… High Performance — Uses streamlink API’s for segment dowloading which significantly improves channel start times
āœ… Highly Flexible — Can support standard HLS, Mpeg-DASH as well as DASH-DRM, Youtube, Twitch and other livestreaming services as channels
āœ… Proxy and Proxy Bypass Support — Full support for passing proxy servers to bypass geo restrictions. Also support for bypassing proxy for specific URL’s used in initial redirections or supply of clearkeys
āœ… Custom Header Support — Currently supports the ā€˜Referer’ and ā€˜Origin’ headers by appending #referer=<URL> or #origin=<URL> (or both) fragments to the end of the URL
āœ… Cookie Jar Support — Supports loading of cookie jar txt files in Netscape/Mozilla format
āœ… Extended Stream Type Detection — Fallback option that checks MIME type of stream URL for streamlink plugin selection
āœ… Streaming Radio Support with Song Information — Play streaming radio to your TV with song information displayed on your screen for ICY and HLS stream types
āœ… Automated Stream Variant Detection — Detects streams with no video or no audio and muxes in the missing components for compatibility with most players
āœ… Packed audio support for HLS streams — Automatically extracts timestamp data from Apple ID3 metadata in muxed HLS streams to ensure correct playback
āœ… Support for SSAI/DAI — Supports streams using SCTE-35 type discontinuities for Server-Side or Dynamic Ad Injection


šŸš€ Installation

Dispatchwrapparr can be installed through the official Dispatcharr plugin repository.

You can find this in Dispatcharr under ā€˜Plugins’ -> ā€˜Find Plugins’ and searching for ā€˜Dispatchwrapparr’.

Once the Dispatchwrapparr plugin is installed, configuring your first profile is easy!

image

Simply click ā€˜Settings’, complete the details in the form and then click ā€˜Save’. When finished, click the ā€˜Actions’ tab and then click the ā€˜Generate Stream Profile’ button.

Note: For the new stream profile to appear, you will need to refresh Dispatcharr from your browser.

Dispatchwrapparr has many more features than those available in the form. The below documentation contains an exhaustive list of the capabilities of the plugin including how to achieve DRM decryption of HLS and DASH streams using clearkey(s).

Loading of the Dispatchwrapparr plugin creates two directories inside your /config directory, and installs the following files automatically:

Updates to Dispatchwrapparr, including the files above are handled via the official Dispatcharr plugin system.


šŸ›ž URL Fragment Options

URL fragment options can be used to tell Dispatchwrapparr what to do with a specific stream.

Important: When using URL fragment options, it is recommended that you remove ā€œURLā€ from the ā€œM3U Hash Keyā€ option in Dispatcharr. This setting can be found in ā€˜Settings’ > ā€˜Stream Settings’.

Below is a list of fragment options and their specifc usage:

Fragment Type Example Usage Description
clearkey String #clearkey=7ff8541ab5771900c442f0ba5885745f Defines the DRM Clearkey for decryption of stream content
header String #header=Authorization:Bearer%20XYZ&header=Origin:https://example.com Adds one or more custom HTTP headers using repeated header=<Header-Name>:<Header-Value> fragments
referer String #referer=https://somesite.com/ Defines the ā€˜Referer’ header to use for the stream URL
origin String #origin=https://somesite.com/ Defines the ā€˜Origin’ header to use for the stream URL
stream String #stream=1080p_alt Override Dispatchwrapparr automatic stream selection with a manual selection for the stream URL
novariantcheck Bool #novariantcheck=true Do not automatically detect audio-only or video-only streams and mux in blank video or silent audio for compatibility purposes. Just pass through the stream as-is (without video or audio).
ffmpeg_nocopyts Bool #ffmpeg_nocopyts=true Do not copy timestamps during stream muxing. May help solve playability issues with some streams.
noaudio Bool #noaudio=true Disables variant checking (-novariantcheck) and manually specifies that the stream contains no audio. This instructs Dispatchwrapparr to mux in silent audio.
novideo Bool #novideo=true Disables variant checking (-novariantcheck) and manually specifies that the stream contains no video. This instructs Dispatchwrapparr to mux in blank video.

Important notes about fragment options:

šŸ§‘ā€šŸ’» Using the ā€˜clearkey’ URL fragment for DRM decryption

To use a clearkey for a particular stream using a URL fragment, simply create a custom m3u8 file that places the #clearkey= fragment at the end of the stream URL.

Below is an example that could be used for Channel 4 (UK):

#EXTM3U
#EXTINF:-1 group-title="United Kingdom" channel-id="Channel4London.uk" tvg-id="Channel4London.uk" tvg-logo="https://raw.githubusercontent.com/tv-logo/tv-logos/main/countries/united-kingdom/channel-4-uk.png", Channel 4
https://olsp.live.dash.c4assets.com/dash_iso_sp_tl/live/channel(c4)/manifest.mpd#clearkey=5ce85f1aa5771900b952f0ba58857d7a

You can also add the cleakey fragment to the end of a URL of a channel that you add manually into Dispatcharr.

More channels can be added to the same m3u8 file, and may also contain a mixture of DRM and non-DRM encrypted streams.

Simply upload your m3u8 file into Dispatcharr, select a Dispatchwrapparr stream profile, and it’ll do the rest.

ā–¶ļø Using the ā€˜stream’ URL fragment for manual stream variant/quality selection

The #stream fragment allows you to manually select a stream variant. Sometimes there may be occasions where you may want to manually select various stream variants depending on your preferences.

To find a list of available variants for a particular stream, simply run the following on the system running the dispatcharr docker container:

docker logs dispatcharr -f --since 0m | grep 'Available streams'

Once this command is running, play the stream and look at the output of the above command. It should show you a list of what variants are available.

Some examples of outputs are shown below:

[dispatchwrapparr] 2025-10-14 19:44:01,860 [info] Available streams: 270p_alt, 270p, 360p_alt, 360p, 480p_alt, 480p, 720p_alt2, 720p_alt, 720p, 1080p_alt, 1080p, worst, best

Once you have the stream you wish to use, eg. ā€˜1080p_alt’, then all you need to do is append the fragment to the end of the stream URL as follows: https://some.stream.com/playlist.m3u8#stream=1080p_alt

In instances where a stream variants contain special characters such as ā€˜+’ like in the second example above, you will need to ensure that the URL is encoded correctly. The ā€˜+’ character is ā€˜%2B’.

For example, to select the ā€˜720p+a128k_48k’ stream variant, then it would look like this: https://some.stream.com/playlist.m3u8#stream=720p%2Ba128k_48k


āš™ļø CLI Arguments

Argument Type Example Values Description
-i Required {streamUrl} Input stream URL from Dispatcharr.
-ua Required {userAgent} Input user-agent header from Dispatcharr.
-clearkeys Optional /path/to/clearkeys.json or https://url.to/clearkeys Supply a json file or URL containing URL -> Clearkey pairs.
-proxy Optional http://proxy.server:8080 Configure a proxy server. Supports HTTP and HTTPS proxies only.
-proxybypass Optional .domain.com,192.168.0.100:80 A comma delimited list of hostnames to bypass. Eg. ā€˜.local,192.168.0.44:90’. Do not use ā€œ*ā€, this is unsupported. Whole domains match with ā€˜.’
-cookies Optional cookies.txt or /path/to/cookies.txt Supply a cookies txt file in Mozilla/Netscape format for use with streams
-customheaders Optional '{"Authentication": "Bearer abc123", "Header": "Value"}' Supply a JSON string containing custom header values
-streamlink_plugins Optional /path/to/streamlink/plugins Specify a custom path for any Streamlink plugins that you wish to load
-stream Optional 1080p_alt or worst Override Dispatchwrapparr automatic stream selection with a manual selection for the stream URL
-ffmpeg Optional /path/to/ffmpeg Specify the location of an ffmpeg binary for use in stream muxing instead of auto detecting ffmpeg binaries in PATH or in the same directory as dispatchwrapparr.py
-ffmpeg_transcode_audio Optional copy, eac3, aac, ac3 Enables the ffmpeg option to transcode audio. By default, dispatchwrapparr just copies the audio.
-ffmpeg_nocopyts Optional Ā  Do not copy timestamps during stream muxing. May help solve playability issues with some streams.
-novariantcheck Optional Ā  Do not automatically detect audio-only or video-only streams and mux in blank video or silent audio for compatibility purposes. Just pass through the stream as-is (without video or audio).
-noaudio Optional Ā  Disables variant checking (-novariantcheck) and manually specifies that the stream contains no audio. This instructs Dispatchwrapparr to mux in silent audio.
-novideo Optional Ā  Disables variant checking (-novariantcheck) and manually specifies that the stream contains no video. This instructs Dispatchwrapparr to mux in blank video.
-nosonginfo Optional Ā  Disables the display of song information for radio streams. Only a blank video will be muxed
-loglevel Optional CRITICAL, ERROR, WARNING, INFO, DEBUG, NOTSET Sets the python and ffmpeg log levels. By default, the loglevel is set to ā€˜INFO’

Example: dispatchwrapparr.py -i {streamUrl} -ua {userAgent} -proxy http://your.proxy.server:3128 -proxybypass 192.168.0.55,.somesite.com -clearkeys clearkeys.json -loglevel INFO

šŸ’” Using the -clearkeys CLI argument for DRM decryption

The -clearkeys CLI argument is perfect for building custom API’s or supplying json files that contain or supply automatically rotated URL -> Clearkey pairs to Dispatchwrapparr for DRM decryption.

Below is an example of what Dispatchwrapparr expects in the json API response or file contents:

{
  "https://olsp.live.dash.c4assets.com/dash_iso_sp_tl/live/channel(c4)/manifest.mpd": "5ce85f1aa5771900b952f0ba58857d7a",
  "https://some.other.stream.com/somechannel/*.mpd": "7ff8541ab5771900c442f0ba5885745f"
}

For streams where the video and audio use different clearkeys, place them in a comma separated list. Eg:

{
  "https://olsp.live.dash.c4assets.com/dash_iso_sp_tl/live/channel(c4)/manifest.mpd": "5ce85f1aa5771900b952f0ba58857d7a,7ff8541ab5771900c442f0ba5885745f",
  "https://some.other.stream.com/somechannel/*.mpd": "7ff8541ab5771900c442f0ba5885745f"
}

You do not need to use Dispatchwrapparr in order to use the DASH and HLS DRM plugins. If you wish, you can use the dashdrm.py and hlsdrm.py plugins on their own with Streamlink.

Credit to titus-au whose work with DASH DRM and streamlink provided the basis by which the Dispatchwrapparr plugins are created.

ā€¼ļø Troubleshooting

Jellyfin IPTV streaming issues

In Jellyfin there are a number of settings related to m3u8 manifests.

Make sure that all options (ā€œAllow fMP4 transcoding containerā€, ā€œAllow stream sharingā€, ā€œAuto-loop live streamsā€, ā€œIgnore DTS (decoding timestamp)ā€, and ā€œRead input at native frame rateā€) are unticked/disabled.

My streams stop on ad breaks, why?

This is a technology called SCTE-35 (aka. SSAI or DAI) which injects ads/commercial breaks into streams based on parameters such as geolocation and demographics etc.

While dispatchwrapparr has had some success in dealing with these types of streams, due to the way that some broadcasters implement SCTE-35 it may not always be stable.

Yes, maybe, but it depends on if you need to pass any custom arguments to it. Pass the -streamlink_plugins option to Dispatchwrapparr, specifying a custom directory to look for plugins in. In some circumstances, plugins may require Chromium based browsers for session tokens, and/or require additional arguments which Dispatchwrapparr will not pass through. The best option here is to just use Streamlink directly.


ā¤ļø Shoutouts

This script was made possible thanks to many wonderful python libraries and open source projects.

āš–ļø License

This project is licensed under the MIT License.