Releases: swvn-dispatch/dispatcharr-multiview
Releases · swvn-dispatch/dispatcharr-multiview
v0.2.3
Added
- Intel QSV (
h264_qsv) and VAAPI (h264_vaapi) hardware encoder options alongside the existing NVENC option. - EPG forward mode now emits all programme metadata from Dispatcharr's EPG data: categories, episode numbers (xmltv_ns, onscreen, and external IDs), ratings, poster icons, live/premiere/new flags, runtime, country, language, and more. Previously only title, subtitle, and description were forwarded.
- EPG forward mode appends the layout's channel list to each programme description.
- Dynamic Warnings section in plugin settings that surfaces common configuration issues: missing PyAV installation, audio copy stream profile that will silently drop multi-track audio, and software encoding (
libx264) with 4+ streams.
Fixed
- Audio desync after channel reconnects and live_proxy fallback resets.
- Audio track language codes for channels with mixed-case multi-word names (e.g. "Rogers TV" was producing an incorrect language tag).
- Reduced startup log noise: port race condition demoted to INFO level; warmup retry added for initial channel connections to reduce false error messages.
v0.2.2
Added
- Per-layout EPG source mode: each layout can now forward real EPG data from one of its source channels instead of showing a built-in placeholder entry. When "Forward from channel" is selected, a channel picker appears and the layout's EPG shows actual programme titles, subtitles, and descriptions. Falls back to placeholder if the selected channel has no EPG data.
Fixed
- Fixed an intermittent plugin load failure that occurred during Dispatcharr reload cycles. Relative
importlib.import_modulecalls would fail withKeyErrororModuleNotFoundErrorif the parent package was absent fromsys.modulesat reload time. Replaced with a file-path-based loader that bypasses the package registry lookup.
Dev Build (70140250)
Multiview dev build from the dev branch.
| Field | Value |
|---|---|
| Description | Tile multiple Dispatcharr channel streams into multi-view outputs using FFmpeg |
| Author | sethwv |
| License | MIT |
| Min Dispatcharr | v0.27.0 |
| Docs | https://github.com/swvn-dispatch/dispatcharr-multiview |
| Discord | https://discord.com/channels/1340492560220684331/1509200002407465001 |
v0.2.1
Added
- NVIDIA NVENC hardware encoding (
h264_nvenc) as an optional encoder, selectable in plugin settings. Requires an NVIDIA GPU with driver support. Startup exits with a clear error if NVENC is selected but unavailable. - Encoder preset selection for NVENC (p1-p7, default p4 balanced).
- Channel logos now load from HTTP URLs in addition to local file paths.
- Keepalive client: multiview registers a background connection with Dispatcharr's live_proxy so channels stay warm between viewer connections, preventing cold-start delays on reconnect.
- RSS memory usage logged in the worker heartbeat alongside per-channel frame rates. (Log level will be changed in a later release)
Changed
- Channel reconnect now uses exponential backoff (2s, 4s, 8s... up to 60s) instead of a fixed 2s delay. Channels give up after 12 consecutive failures (roughly 8 minutes total).
- Logo rendering preserves aspect ratio and correctly composites transparency over black. Previously logos were cropped to a square and transparent areas were not handled.
- Logo loading moved to a background thread so startup is not blocked waiting for logo decode.
Fixed
- Server returns 503 when a channel's live_proxy is not yet ready, instead of 200 with an empty body. This lets the compositor worker retry cleanly via its backoff rather than failing with a cryptic "Invalid data found" error.
- Audio resampler, audio write pipe FDs, and encoder output pipe FD are now properly closed on worker shutdown, eliminating file descriptor leaks.
v0.2.0
Added
- PyAV compositor worker: decoding, compositing, and encoding now run in a dedicated subprocess using PyAV (Python FFmpeg bindings). Each tile decodes in its own thread; the compositor blits the latest frame per tile onto a shared canvas and encodes it continuously. A slow or disconnected channel never stalls the grid.
- "Install PyAV" actions in plugin settings to download and install the PyAV media dependency at runtime, for both amd64/x86_64 and arm64/aarch64 hosts. Internet access is required for the one-time install.
- PyAV installation status indicator in plugin settings showing whether the media engine is installed and ready for this host's architecture.
- Configurable output frame rate: 24, 25, 30, 50, or 60 fps (default 30).
- CBR (constant bitrate) encoding: output bitrate is now a true constant-rate target, not a ceiling. The encoder pads with filler NAL units so the data rate stays flat regardless of content complexity, preventing IPTV player buffer drain and fast-forward on low-motion content.
- PTS rate limiter: the compositor paces output to 1x realtime using PTS timestamps, preventing fast-forward playback on fast machines where Dispatcharr's live proxy delivers frames faster than realtime.
Changed
- Minimum required Dispatcharr version raised from v0.22.0 to v0.27.0.
- M3U and EPG refresh after "Regenerate M3U" are now serialized (M3U first, then EPG) using a Celery task chain. Previously both tasks fired simultaneously, which caused a Dispatcharr DB collision.
- Output bitrate field label changed from "Max Output Bitrate" to "Output Bitrate" to reflect CBR behaviour.
Fixed
- A/V sync: audio is now PTS-aligned to video at stream startup. The audio buffer is also flushed on channel reconnect, preventing audio lag from accumulating.
- M3U + EPG simultaneous refresh could cause "INSERT 0 N" DB errors in Dispatcharr when both tasks hit the shared celery connection at the same time.
Removed
- Hardware encoder options (NVIDIA h264_nvenc, Intel QuickSync h264_qsv, AMD/Intel VA-API h264_vaapi) are temporarily removed while the compositor is rebuilt on PyAV. Only libx264 (software) is available in this release. Hardware encoders will return as an opt-in mode in a future update.
- CRF/CQ quality mode removed. Encoding is CBR-only in this release.
v0.1.0
- Tile Dispatcharr channel streams into a single MPEG-TS output using FFmpeg xstack; each layout appears as a standard M3U channel
- Three layout styles: Auto Grid (square-ish grid, last row centred), Featured (channel 1 large on the left, others stacked on the right), and Top Featured (channel 1 full-width on top, others in a row at the bottom)
- Classic channel selection via dropdowns and Regex selection - enter a pattern (e.g.
TSN\s*\d) to match channels by name automatically at stream time, sorted by channel number - Hardware encoder support: Software (libx264), NVIDIA (h264_nvenc), Intel QuickSync (h264_qsv), AMD/Intel VA-API (h264_vaapi)
- Multi-audio output: choose a single channel's audio or output one AC3 track per tile; players with multi-track support (VLC, Infuse, mpv) can switch between them. Duplicate track labels are auto-numbered (e.g.
ts1,ts2,ts3) - Startup placeholder: tiled black frames with channel logos and a "Starting up..." banner display immediately while FFmpeg initialises the real stream
- EPG support: generates a 14-day XMLTV feed per layout with configurable title, subtitle, and category tags; registered automatically as an EPGSource in Dispatcharr
- Configurable output resolution (1080p / 720p / 480p), max bitrate, encoder quality (CRF/CQ/global_quality), and encoder preset per global settings
- Auto-refresh interval setting to regenerate M3U and EPG on a schedule (default 24 h; 0 = manual only via Regenerate M3U button)
- Streams open through Dispatcharr's ProxyServer so connections appear in the stats view, respect stream profiles and fallback behaviour, and carry the user-agent
multiview-plugin - No FFmpeg processes run when nobody is watching; processes are spawned per request and killed on disconnect