Skip to main content

0.21.0

0.21.0.0 (August 12, 2026)

OvenMediaEngine

[Compatibility]

  • Compatible with the Server.xml configuration 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/metrics endpoint 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 CUDAStreamPriority option under <Modules> in Server.xml to set the scheduling priority of the NVIDIA GPU transcoding stream.
  • Alert notifications now include a serverInfo block (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 timebase field, 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 PacketSilenceTimeoutMs being 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=tcp to transport=all.
  • Fixed the stream player reinitializing and interrupting playback when switching between tabs on the stream detail page.