0.21.0
0.21.0.0 (August 12, 2026)
OvenMediaEngine
[Compatibility]
- Compatible with the
Server.xmlconfiguration format used in version 0.12.6 or later. - Compatible with Origin and Edge versions 0.21.0.0 or later.
[Added]
- Added AV1 video ingest to the Enhanced RTMP (E-RTMP) provider.
- Added AV1 software encoding and decoding support (libAOM) for WebRTC, LLHLS, and file recording outputs.
- Added AV1 hardware encoding and decoding support via NVIDIA GPU (NVENC/NVDEC) on Ada/RTX 40-series or newer cards.
- Added AV1 video support to the LLHLS publisher (AV1 is not available in TS-based HLS).
- Added hardware transcoding support for NETINT Quadra VPU (H.264, H.265, AV1).
- Added AVIF thumbnail support.
- Added Microsoft PlayReady DRM support for LLHLS streams, alongside the existing Widevine and FairPlay systems.
- Added LLHLS DRM key rotation, allowing content keys to change automatically on a configured period without interrupting playback or inserting a discontinuity.
- Added H.265 (HEVC) support for LLHLS DRM encryption.
- Added an OpenMetrics (Prometheus-compatible)
/v2/metricsendpoint for integration with external monitoring systems. - Added HLS (TS) discontinuity signaling so that track configuration changes during a scheduled channel item switch are signaled correctly in the HLS playlist.
- Added LLHLS discontinuity signaling so that track configuration changes during a scheduled channel item switch are handled seamlessly.
- Added an experimental
CUDAStreamPriorityoption under<Modules>in Server.xml to set the scheduling priority of the NVIDIA GPU transcoding stream. - Alert notifications now include a
serverInfoblock (server ID, name, hostname, and IP addresses) so operators can identify the source server when multiple OME instances report to the same notification endpoint.
[Fixed]
- Fixed unbounded GPU memory growth and out-of-memory crashes in the transcoder that occurred when encoder load caused frame backpressure.
- Fixed alert notifications not being sent when a decoder could not be recreated after a track configuration change.
- Fixed video segment durations drifting from the configured value and keyframe cadence shifting when a scheduled channel switched between items with different resolutions.
- Fixed ad markers being incorrectly rejected and insertion lead growing excessively when using time-mode GOP on a scheduled channel.
- Fixed a crash that occurred when image overlay was enabled with a GPU (NVENC) transcoding profile.
- Fixed the Get Stream Info API never returning the
timebasefield, and updated the API spec (ome.yml) and documentation to match the actual response format. - Fixed the Multiplex provider stalling and consuming unbounded memory when one source stopped, and removed a spurious queue overflow warning that appeared at channel startup.
- Removed the repeated 'Exceeded' warning log that appeared every time a managed queue exceeded its threshold while in exceed-and-wait mode.
- Fixed LLHLS playback returning 404 errors when the Thumbnail and LLHLS publishers shared the same port with HTTP/2 enabled.
- Fixed LLHLS playback stalling or disconnecting in a loop on iOS Safari and other clients when HTTP/2 and ETag were both enabled.
- Fixed a thumbnail request for an unconfigured codec causing a multi-second stall on all sockets sharing the same port.
- Fixed a crash that could occur during concurrent file recording sessions on the same stream.
- Fixed RTMP, SRT, and MPEG-TS ingest channels being deleted after 3 seconds of silence before the stream published, even when no timeout was configured.
- Fixed
PacketSilenceTimeoutMsbeing ignored for RTMP, SRT, and MPEG-TS providers during the pre-publish window, causing streams to be dropped prematurely. - Fixed the Whisper STT
<PreloadModel><Devices>configuration pointing to the wrong GPU on hosts where CUDA and OME enumerate devices in different order.
[Improved]
- OVT edges now receive and apply runtime track configuration changes (resolution, audio format, codec parameters) from the origin without protocol errors.
- Improved the automatic SkipFrames algorithm to account for encoder wait time, so the frame-drop level now reacts correctly when the encoder is the bottleneck rather than the filter.
- Track configuration changes are now propagated in-line with media packets, ensuring all publishers see the change at exactly the right packet boundary.
- jemalloc memory purge now runs on a dedicated background thread by default, reducing latency on high-traffic paths. Configure via
<Jemalloc><BackgroundPurge>in Server.xml. - The internal queue monitoring API now includes the latest dwell-time statistics for more precise latency visibility.
Web Console
[Fixed]
- Fixed WebRTC playback failing in the stream player when the server did not have a TCP ICE candidate configured, by changing the playback URL parameter from
transport=tcptotransport=all. - Fixed the stream player reinitializing and interrupting playback when switching between tabs on the stream detail page.