v1.20.0
dstotijn/hettyv1.20.0Aug 5, 2026by github-actions[bot]
AI Summary
This release introduces native stream forwarding for RTSP, RTMP, and SRT, alongside full support for native QUIC publishing and reading. It also includes fixes for AV1 streams, WebRTC track ordering, and HLS muxer stability, along with enhanced binary security verification.
Key Highlights
- Native stream forwarding support for RTSP, RTMP, and SRT protocols.
- Native QUIC support for publishing and reading media streams.
- Fix for AV1 streams in RTSP and improved WebRTC track ordering.
- Enhanced security with blockchain-verified binary checksums.
- Improved API and metrics for monitoring the forwarding system.
New Features
- Native stream forwarding to RTSP, RTMP, and SRT destinations.
- Native QUIC support (draft-16 and draft-17).
- OpenAPI definition for the Playback server.
- Deterministic track sorting in WebRTC for multi-track streams.
- Improved logging for SRT and multicast interfaces.
Full Release Notes
## New major features General * support forwarding streams natively (https://github.com/bluenviron/mediamtx/issues/5558) It is now possible to define forward destinations for each path configuration. For each destination, the server will create a client that will forward the stream to the intended destination. Supported protocols are RTSP, RTMP, SRT. API and metrics have also been improved to allow monitoring the new forwarding system. Documentation: https://mediamtx.org/docs/features/forward Media-Over-QUIC * support publishing and reading through native QUIC (https://github.com/bluenviron/mediamtx/issues/6039) * support draft-17 (https://github.com/bluenviron/mediamtx/issues/6040) * support draft-16 (https://github.com/bluenviron/mediamtx/issues/6045) ## Fixes and improvements General * docs: add missing MoQ ports (https://github.com/bluenviron/mediamtx/issues/5983) * Add OpenAPI definition of the Playback server (https://github.com/bluenviron/mediamtx/issues/5546) * fix support for regexp groups greater than 10 (https://github.com/bluenviron/mediamtx/issues/6033) Media-Over-QUIC * increase max namespace field count to 32 (https://github.com/bluenviron/mediamtx/issues/6043) * link primitives to draft-17 sections (https://github.com/bluenviron/mediamtx/issues/6044) RTSP * fix inability to read some AV1 streams with RTSP (https://github.com/bluenviron/mediamtx/issues/6001) (https://github.com/bluenviron/mediamtx/issues/6006) Since v1.16.0, temporal unit delimiters were not stripped from AV1 streams anymore. This has been restored, healing AV1 streams read with RTSP. * log write errors (https://github.com/bluenviron/mediamtx/issues/6023) * make multicast errors on single interfaces non-fatal (https://github.com/bluenviron/gortsplib/issues/1115) (https://github.com/bluenviron/mediamtx/issues/5574) When writing multicast packets to several interfaces at one, a write error to a single interface was fatal and prevented writing to the other ones. Fix this. RTMP * server: fix parsing URL from multitrack OBS (https://github.com/bluenviron/mediamtx/issues/6007) (https://github.com/bluenviron/gortmplib/issues/93) * client: change mapping between URL and tcURL, app, streamKey (https://github.com/bluenviron/gortmplib/issues/94) (https://github.com/bluenviron/mediamtx/issues/4676) URLs passed to clients are now mapped into RTMP-native fields (tcURL, app, streamKey) in this way: tcURL contains URL without credentials and without fragment, app contains path and query of tcURL, streamKey contains the fragment. * client: fix compatibility with YouTube (https://github.com/bluenviron/mediamtx/issues/5558) (https://github.com/bluenviron/gortmplib/issues/95) HLS * muxer: fix goroutine leak during part rotation (https://github.com/bluenviron/gohlslib/issues/372) (https://github.com/bluenviron/gohlslib/issues/373) * muxer: remove lower limit on AAC access unit count in MPEG-TS segments (https://github.com/bluenviron/gohlslib/issues/329) (https://github.com/bluenviron/gohlslib/issues/377) * muxer: recompute PTS of MPEG-TS AAC (https://github.com/bluenviron/gohlslib/issues/379) iOS requires a precise timestamp that is often not available in AAC streams. Recompute timestamp from scratch. WebRTC * sort tracks in a deterministic way (https://github.com/bluenviron/mediamtx/issues/5988) (https://github.com/bluenviron/mediamtx/issues/5989) When ingesting tracks with WebRTC, track order was randomized, preventing multi-track always-available streams from working reliably, since they require tracks to be ordered in a precise way. WebRTC tracks are not ordered by MID, RID, trackID and streamID respectively. * fix packet corruption when reading G722 (https://github.com/bluenviron/mediamtx/issues/6000) * reset recomputed audio PTS if it drifts too much (https://github.com/bluenviron/mediamtx/issues/6021) * fix "packet lost" error when routing streams from WebRTC (https://github.com/bluenviron/mediamtx/issues/6034) Chrome sometimes sends empty packets, that are discarded by the server, but the sequence number of following packets is not recomputed, leading downstream packet loss detectors to emit errors. This is fixed. SRT * improve log clarity (https://github.com/bluenviron/mediamtx/issues/5990) use message 'passphrase not provided by client' when clients do not provide passphrases. * show stream ID in logs (https://github.com/bluenviron/mediamtx/issues/6018) * close sources immediately when path is closed (https://github.com/bluenviron/mediamtx/issues/6038) Dependencies * code.cloudfoundry.org/bytefmt updated from v0.82.0 to v0.83.0 * github.com/MicahParks/jwkset updated from v0.11.0 to v0.11.3 * github.com/MicahParks/keyfunc/v3 updated from v3.8.0 to v3.8.1 * github.com/bluenviron/gohlslib/v2 updated from v2.4.1 to v2.4.2 * github.com/bluenviron/gortmplib updated from v0.4.1 to v1.0.0 * github.com/bluenviron/gortsplib/v5 updated from v5.6.2 to v5.6.3 * github.com/go-git/go-billy/v5 updated from v5.9.0 to v5.9.1 * github.com/go-git/go-git/v5 updated from v5.19.1 to v5.19.2 * github.com/pion/ice/v4 updated from v4.3.0 to v4.4.0 * github.com/pion/interceptor updated from v0.1.46 to v0.1.47 * github.com/pion/webrtc/v4 updated from v4.2.17 to v4.2.18 * github.com/quic-go/quic-go updated from v0.60.0 to v0.61.0 * github.com/quic-go/webtransport-go updated from v0.11.1 to v0.12.0 * github.com/pion/sctp updated from v1.11.0 to v1.11.1 * golang.org/x/time updated from v0.14.0 to v0.15.0 ## Security Binaries are compiled from source code by the [Release workflow](https://github.com/bluenviron/mediamtx/actions/workflows/release.yml), which is a fully-visible process that prevents any change or external interference in produced artifacts. Checksums of binaries are also published in a public blockchain by using [GitHub Attestations](https://docs.github.com/en/actions/concepts/security/artifact-attestations), and they can be verified by running: ``` ls mediamtx_* | xargs -L1 gh attestation verify --repo bluenviron/mediamtx ``` You can verify checksums of binaries by downloading `checksums.sha256` and running: ``` cat checksums.sha256 | grep "$(ls mediamtx_*)" | sha256sum --check ```