v1.19.0

eisenzopf/rvoipv1.19.0Jun 2, 2026by github-actions[bot]

AI Summary

Introduces Media-over-QUIC streaming and FLAC codec support across RTMP and HLS protocols, alongside general improvements to hot reloading, RTSP timeouts, and WebRTC connectivity.

Key Highlights

  • Media-over-QUIC support for faster streaming with advanced data recovery
  • FLAC codec support added for reading and writing in RTMP and HLS
  • Added `--check-version` CLI flag to check for updates without upgrading
  • User agent field added to RTMP, RTSP, WebRTC, and HLS
  • Hot reloading fixes for SRT server and API server

New Features

  • Media-over-QUIC reading and publishing
  • FLAC reading and writing support
  • User agent tracking
  • CLI version checking
  • Hot reload fixes
  • RTSP TCP timeout logic improvements
  • RTMP FLAC fourCC support
  • HLS playlist mutex fixes
  • WebRTC connectivity fixes after network changes
  • RPI Camera timestamp overlay

Full Release Notes

## New major features

Media-over-QUIC

* support reading and publishing with Media-over-QUIC (https://github.com/bluenviron/mediamtx/issues/5815) Media-over-QUIC is a streaming protocol built upon cutting edge protocols (QUIC, HTTP3) and browser APIs (WebTransport, WebCodecs). It's slightly faster than WebRTC, has an advanced data recovery mechanism, it supports additional codecs (FLAC) and is less complicated to route. Check the [documentation](https://mediamtx.org/docs/publish/moq-clients) for instructions and details.

RTMP

* support reading and writing FLAC (https://github.com/bluenviron/mediamtx/issues/5778) (https://github.com/bluenviron/mediamtx/issues/5789)

HLS

* support reading and publishing FLAC (https://github.com/bluenviron/mediamtx/issues/5778) (https://github.com/bluenviron/mediamtx/issues/5791)

## Fixes and improvements

General

* Add user agent field to RTMP, RTSP, WebRTC, and HLS (https://github.com/bluenviron/mediamtx/issues/5753)
* add --check-version command line flag (https://github.com/bluenviron/mediamtx/issues/5786) this allows to check whether a new version is available without upgrading.
* use file name suffix for OS-specific code wherever possible (https://github.com/bluenviron/mediamtx/issues/5787)
* fix two hot reloading cases (https://github.com/bluenviron/mediamtx/issues/5817) * reload SRT server when metrics server is reloaded * reload API server when RTMPS server is reloaded

RTSP

* client: trigger TCP timeout only if nothing is received (https://github.com/bluenviron/gortsplib/issues/1002) (https://github.com/bluenviron/gortsplib/issues/968) (https://github.com/bluenviron/gortsplib/issues/1067) Previously, a data packet was required, now a keepalive response from the server is enough.
* sdp: support non-standard 'meta' media type (https://github.com/bluenviron/gortsplib/issues/1068)
* forbid H264 packetization mode zero (https://github.com/bluenviron/gortsplib/issues/1072) Packetization mode zero requires allowing inefficient and brittle fragmented UDP packets, which we are not.

RTMP

* client: add FLAC fourCC (https://github.com/bluenviron/gortmplib/issues/73)
* do not exit in case of undocumented Flash control messages (https://github.com/bluenviron/mediamtx/issues/5512) (https://github.com/bluenviron/gortmplib/issues/75)

HLS

* remove redundant JavaScript argument (https://github.com/bluenviron/mediamtx/issues/5806)
* muxer: fix race condition when generating playlist (https://github.com/bluenviron/gohlslib/issues/359) (https://github.com/bluenviron/gohlslib/issues/360) Max age of playlist depends on segments, so it needs to be covered by the segment mutex.
* muxer: use coherent version in all playlists (https://github.com/bluenviron/mediamtx/issues/5781) (https://github.com/bluenviron/gohlslib/issues/363)

WebRTC

* make JavaScript internal variables private (https://github.com/bluenviron/mediamtx/issues/5804)
* fix connectivity after network changes (https://github.com/bluenviron/mediamtx/issues/5097) (https://github.com/bluenviron/mediamtx/issues/5818)

RPI Camera

* use timestamp of frame in text overlay (https://github.com/bluenviron/mediamtx/issues/2733) (https://github.com/bluenviron/mediamtx-rpicamera/issues/103)

Dependencies

* code.cloudfoundry.org/bytefmt updated from v0.72.0 to v0.74.0
* github.com/abema/go-mp4 updated from v1.5.0 to v1.6.0
* github.com/bluenviron/gohlslib/v2 updated from v2.3.2 to v2.4.0
* github.com/bluenviron/gortmplib updated from v0.3.2 to v0.4.0
* github.com/bluenviron/gortsplib/v5 updated from v5.5.3 to v5.5.4
* github.com/bluenviron/mediacommon/v2 updated from v2.8.3 to v2.9.0
* github.com/go-git/go-git/v5 updated from v5.19.0 to v5.19.1
* github.com/matthewhartstonge/argon2 updated from v1.5.3 to v1.5.4
* github.com/pion/ice/v4 updated from v4.2.5 to v4.2.7
* github.com/pion/transport/v4 updated from v4.0.1 to v4.0.2
* github.com/pion/webrtc/v4 updated from v4.2.12 to v4.2.14
* golang.org/x/crypto updated from v0.51.0 to v0.52.0
* golang.org/x/net updated from v0.54.0 to v0.55.0
* golang.org/x/sys updated from v0.44.0 to v0.45.0
* github.com/pion/dtls/v3 updated from v3.1.2 to v3.1.3
* github.com/pion/sctp updated from v1.9.5 to v1.10.0
* github.com/pion/srtp/v3 updated from v3.0.10 to v3.0.11
* github.com/pion/stun/v3 updated from v3.1.2 to v3.1.4
* github.com/pion/turn/v5 updated from v5.0.3 to v5.0.7
* github.com/quic-go/webtransport-go v0.10.0 added
* golang.org/x/sync v0.20.0 added
* github.com/dunglas/httpsfv v1.1.0 added
* github.com/bluenviron/mediamtx-rpicamera updated from v2.5.7 to v2.6.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
```