Beta
📦 Target Containers
| Container Name | Tag |
|---|---|
| mhb | beta |
| api | beta |
| ui | beta |
| stream | beta |
| proxy | beta |
| receiver | beta |
✨ New Features
Node Editor (Beta)
Added Node Editor (Beta).
On a canvas, you can list and connect MediaConnect, MediaLive, MediaPackage, CloudFront, S3, MediaTailor, and MediaConvert resources on AWS with MediaHarbor sources. Create and delete resources, start and stop them, rewire connections, and run bulk Start/Stop on a multi-selection. Supports multiple regions and AWS accounts, on-premises equipment (Other / SW / HACOBE, etc.), protocol/port/bitrate labels on connection lines, cross-region cost warnings, and single-pipeline failure indicators for MediaLive STANDARD-class channels.
High-Quality Zoom Display
- Added the ability to zoom a source in high quality in the multiview.
- Under System Settings, “High-quality zoom display settings” lets you change the zoom bitrate and the number of concurrent zoom slots.
- Fixed display glitches and unintended zoom cancellations during zoom display, improving stability.
Multiview / Stream Information Bar
- Added the ability to set a display name for source name labels in the multiview separately from the source name.
- Added per-source Stream Information Bar settings (which badges to show, colors, and related display options). Patrol layouts respect the active item’s rules for name and bitrate overlays.
- The selected color setting is now preserved even when the information bar display is turned off.
Audio Track Selection
- Added the ability to select an audio track for sources with multiple audio tracks. Available from the source create/edit dialog, the stream information display, and the multiview right-click menu (defaults to the primary audio track when unspecified).
Video/Audio Monitoring (VAMon)
- Extended settings with loudness monitoring (presets and target LUFS), phase inversion, audio high/low level detection, and test tone detection (1 kHz / 400 Hz / 800 Hz). All of these are off by default.
Monitoring and Logs
- Added configurable log mask duration (0–60 seconds) at monitoring start and on patrol source switches.
- Made the recovery detection logic for monitoring logs more precise.
Color Bar Source
- Added a “Lip Sync Check” pattern option.
Server Load Display
- Added a bar graph showing server CPU and memory usage on the layout editing screen.
Browser Source
- Added the ability to change the delivery resolution from the settings screen.
- Added a bitrate setting (upper bound).
- Added the ability to choose the URL opened at startup, either “the last page that was open” or “a specified URL.”
Rendering Settings
- Added the ability to choose the rendering frame rate, 60fps or 30fps, from the “Rendering Settings” card in the admin screen.
CMAF-MMT Input
- Added support for CMAF-MMT (fMP4 over MMT) input carried directly over UDP. Just specify the receiving port from the admin screen to register it.
- You can select a video track (1st through 3rd video) and an audio track (1st or 2nd audio). The Stream Information Bar also shows an MMT protocol badge.
- This does not support TLV multiplexed terrestrial/BS broadcasts (Advanced BS / BS4K). Only CMAF-MMT carried directly over UDP is supported.
Audio Bar
- Added support for mono, stereo, and 5.1ch audio bar displays. 5.1ch is shown in two rows (L/R/C on top, LFE/Ls/Rs below) with channel labels.
NDI Input
- NDI input is now subject to license point management. If a point cannot be secured, receiving does not start; if points run out while running, receiving stops. If communication with the license server temporarily fails, receiving continues while retrying the check.
⚡ Improvements
- Changed the default rendering frame rate from 60fps to 30fps. Real-world source material (terrestrial digital, BS, browser sources, HLS, AES67) is all effectively 29.97p/30p, so no video information is lost at 30fps. This substantially reduces CPU usage and also fixes an issue where video generation could fall behind real time and play back fast-forwarded.
- 60fps is only needed when the upstream of a TS input is sending true 59.94p (59.94 frames per second) video. If that applies to you, switch back to 60fps from the “Rendering Settings” card in the admin screen.
- Migrated the delivery engine’s internal implementation to Rust, improving memory safety and maintainability.
- Reworked the compositing process for still image (Picture) elements, reducing CPU usage. This also fixes an issue where layouts with still images could fall behind real time and play back fast-forwarded.
- Also reworked compositing for information overlays (such as the Stream Information Bar) to skip processing transparent areas, further reducing CPU usage.
- Reduced CPU usage in environments with Video/Audio Monitoring (VAMon) enabled. There is little to no effect when VAMon is disabled.
- Reorganized System Settings into six groups: Input, Video, Output, Monitoring & Notifications, System, and Maintenance, with breadcrumb navigation between them.
- For input types without a TS component (NDI, Color Bar, browser sources, ST2110, AES67, JPEG XS, child MediaHarbor), TS monitoring and SCTE-35 analysis can no longer be selected.
- A layout containing a screen that is currently in use can no longer be deleted, since deleting it would stop that screen’s multiview output.
- The receive bitrate is no longer shown for sources that are not currently receiving; previously a stale value could remain displayed after receiving stopped.
- Aligned the button positions, labels, and column spacing of the Resources tab with the Input Sources tab.
- Freed the stale cached size when a still image (Picture) element is resized, reducing memory usage.
🐛 Bug Fixes
System and API
- Fixed an issue where tally signals ignored the specified screen ID and were sent to all screens.
- Fixed an issue where recreating a screen could cause its SRT output port to collide with another screen’s.
- Fixed an issue where the scaling algorithm selected in the rendering settings was never actually applied, and the system always rendered with the default algorithm instead. Also reduced the selectable options to the 9 algorithms that are actually available. In environments where a heavier algorithm than the default had been selected, CPU usage may increase now that the setting takes effect.
- Fixed an issue where audio would gradually drift out of sync with video during long HLS/SRT viewing sessions.
- Fixed a server crash that occurred when swapping the positions of a resource element (image/text, etc.) and a video element while editing a layout.
- Improved notification and re-synchronization timing for audio muting and recovery when video is lost.
- Reworked static file serving so that unintended configuration information could no longer be retrieved from the outside.
- Fixed several issues where requests to unknown API paths did not return a correct response (e.g., zero-byte or duplicate responses).
- Strengthened access control on the container list so it is retrieved and displayed only for administrators.
- Fixed an issue where a browser source was recreated on every page navigation, cutting the video for about 9 seconds each time.
- Fixed an issue where the HLS player could not recover on its own after a delivery interruption and required a page reload.
- Fixed an issue where the WebRTC player could not recover on its own after a delivery interruption and required a page reload.
- Fixed an issue where a newly created source could briefly appear as two duplicate rows in the source list.
- Fixed an issue where the browser back button stopped working on screens such as the log settings screen, requiring two presses to navigate away.
- Fixed several display glitches introduced by the React 19 / MUI v9 migration:
- The layout editing screen collapsing into a single column
- Action buttons disappearing from the input monitoring settings
- Mask settings items becoming top-aligned
- Card heading text size changing
- Fixed an issue where setting a resolution outside the valid range in the admin screen caused the displayed value and the actual behavior to disagree.
- Fixed an issue where deselecting and reselecting a muted tile did not restore its audio.
- Fixed an issue where, after adding a screen, that screen’s video and audio could fail to appear.
- Fixed an issue on the home screen’s credit point card where clicking it repeatedly could mirror the text on the front, and where the text on the back could appear blurred.
- Fixed an issue where a value in a source’s settings could be used to execute arbitrary commands inside the
apicontainer. - Updated dependencies to address security vulnerabilities (Next.js’s image optimization API, nodemailer, axios, and others).
- Fixed an issue where a cairo font conflict could occasionally cause mhbs to stop, briefly freezing and then recovering the entire display.
- Fixed an issue where deleting all layouts stopped the multiview entirely.
- Fixed an issue where editing a layout could mute or interrupt WebRTC audio.
- Fixed an issue where the audio meter’s peak hold indicator stuck at the top and never came back down.
- Fixed an issue where a very brief moment of audio could be dropped immediately after a video/audio resync.
- Fixed an issue where mask setting icons disappeared when crossing a date boundary.
- Fixed an issue where the HLS player could remain stopped after a server restart and fail to recover.
- Fixed an issue where the “CANNOT CONNECT” indicator did not clear.
- Fixed an issue where the number of displayed sources in a layout was not correctly reported to License Manager.
Receiving
- Fixed an issue where, for streams with many audio/video PIDs, the monitoring process could be repeatedly and incorrectly killed just before it finished processing.
- Fixed an issue where, when the audio channel configuration of a broadcast signal changed, audio could keep dropping out or the fallback display could take longer than necessary to recover.
- Fixed an issue where receiving a corrupted audio bitstream could cause CPU usage to keep climbing.
- Fixed an issue where CPU usage could keep climbing when the video and audio buffers stayed empty at the same time.
- Fixed an issue where, after a temporary disconnection or internal error, an incorrect exit code could unnecessarily delay reconnection.
- Fixed an issue where RTP multicast receiving could fail to recover automatically after going silent.
- Fixed an issue where a stream that was receiving normally could be incorrectly restarted.
- Fixed an issue where monitoring did not restart the receiving process after it was terminated by a signal.
- Fixed an issue where monitoring did not recover when the receiving process itself failed to start.
- Fixed an issue where, after a PCR re-synchronization of the video, the audio position could remain stale, causing A/V drift to accumulate.