v1.13.0

bluenviron/mediamtxv1.13.0Jul 6, 2025by github-actions[bot]

AI Summary

Adds encryption support for RTSP UDP streams and KLV metadata routing, along with a binary attestation system.

Key Highlights

  • Support encrypting UDP and UDP-multicast streams
  • Support routing KLV metadata
  • Add attestation system to protect binaries
  • Support encrypted streams with SRTP and MIKEY

New Features

  • RTSP UDP/UDP-multicast encryption
  • KLV metadata routing
  • Binary attestation system

Full Release Notes

## New major features

RTSP

* support encrypting UDP and UDP-multicast streams (https://github.com/bluenviron/mediamtx/issues/4690)

General

* support routing KLV metadata (https://github.com/bluenviron/mediamtx/issues/2693) (https://github.com/bluenviron/mediamtx/issues/4670)

## Fixes and improvements

General

* recorder, playback: support changing codec parameters without switching segment (https://github.com/bluenviron/mediamtx/issues/4262) (https://github.com/bluenviron/mediamtx/issues/4582)
* record: support storing timezone in recording segments (https://github.com/bluenviron/mediamtx/issues/3566) (https://github.com/bluenviron/mediamtx/issues/4597)
* support assigning paths to different configurations without closing stream (https://github.com/bluenviron/mediamtx/issues/4576)
* add attestation system to protect binaries (https://github.com/bluenviron/mediamtx/issues/4012) (https://github.com/bluenviron/mediamtx/issues/4629) this allows to prove that binaries were produced by GitHub Actions.
* fix crash when ConfWatcher fails to initialize (https://github.com/bluenviron/mediamtx/issues/4689)

RTSP

* support encrypted streams with SRTP and MIKEY (https://github.com/bluenviron/gortsplib/issues/520) (https://github.com/bluenviron/gortsplib/issues/809)
* make RTP packet size compatible with RTSP/SRTP (https://github.com/bluenviron/mediamtx/issues/4692) when RTSP encryption is enabled, maximum RTP packet size is slightly decreased to make room for SRTP.
* client: fix reading sources without server ports (https://github.com/bluenviron/mediamtx/issues/4253) (https://github.com/bluenviron/gortsplib/issues/796) RTCP packets were sent out to nil addresses, due to the lack of server ports, causing an error.
* client: prevent downgrading from RTSPS to RTSP during redirect (https://github.com/bluenviron/gortsplib/issues/816)
* client: when reading multicast streams, write unicast reports (https://github.com/bluenviron/gortsplib/issues/817) Previously, receiver reports were broadcasted to all connected clients. Now they are sent to the server only.
* client: when reading UDP streams, write reports to right IP (https://github.com/bluenviron/gortsplib/issues/818) source IPs sent by the server were not taken into consideration. This fixes the issue.
* set SSRC of outgoing packets (https://github.com/bluenviron/gortsplib/issues/803) In client and server, each format now has a fixed, unique, known in advance SSRC, that is applied to outgoing packets belonging to each format. This is needed to support SRTP/MIKEY, that require each format to have a fixed, unique, and known in advance SSRC.
* client: open firewall before sending PLAY request (https://github.com/bluenviron/gortsplib/issues/821) this prevents losing some initial packets.
* support KLV tracks (https://github.com/bluenviron/gortsplib/issues/808)

RTMP

* fix timeout when publishing with GLive T80 (https://github.com/bluenviron/mediamtx/issues/4002) (https://github.com/bluenviron/mediamtx/issues/4583)

HLS

* muxer: fix race condition when closing (https://github.com/bluenviron/gohlslib/issues/236)
* client: fix race condition with non-low-latency streams (https://github.com/bluenviron/gohlslib/issues/237)
* Support Verkada EXTINF Tags (https://github.com/bluenviron/gohlslib/issues/244)

WebRTC

* fix writing tracks to some clients (https://github.com/bluenviron/mediamtx/issues/4602) some clients require PayloadType to be unique among all tracks, not only among tracks of same kind.

RPI Camera

* fix RTP packet size (https://github.com/bluenviron/mediamtx/issues/4691) UDP max payload size was not applied.

Dependencies

* code.cloudfoundry.org/bytefmt updated from v0.40.0 to v0.43.0
* github.com/MicahParks/keyfunc/v3 updated from v3.3.11 to v3.4.0
* github.com/alecthomas/kong updated from v1.11.0 to v1.12.0
* github.com/bluenviron/gohlslib/v2 updated from v2.1.5 to v2.2.1
* github.com/bluenviron/gortsplib/v4 updated from v4.14.1 to v4.15.0
* github.com/bluenviron/mediacommon/v2 updated from v2.2.0 to v2.3.0
* github.com/go-git/go-git/v5 updated from v5.16.0 to v5.16.2
* github.com/matthewhartstonge/argon2 updated from v1.3.1 to v1.3.2
* github.com/pion/interceptor updated from v0.1.38 to v0.1.40
* github.com/pion/logging updated from v0.2.3 to v0.2.4
* github.com/pion/rtp updated from v1.8.16 to v1.8.20
* github.com/pion/sdp/v3 updated from v3.0.13 to v3.0.14
* golang.org/x/crypto updated from v0.38.0 to v0.39.0
* github.com/pion/srtp/v3 updated from v3.0.4 to v3.0.6
* golang.org/x/net updated from v0.40.0 to v0.41.0
* golang.org/x/text updated from v0.25.0 to v0.26.0
* github.com/bluenviron/mediamtx-rpicamera updated from v2.4.2 to v2.4.3
* hls.js updated from v1.6.2 to v1.6.6

## Security

Binaries have been produced by the [Release workflow](https://github.com/bluenviron/mediamtx/actions/workflows/release.yml) without human intervention.

You can verify that binaries have been produced by the workflow by using [GitHub Attestations](https://docs.github.com/en/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds):

```
ls mediamtx_* | xargs -L1 gh attestation verify --repo bluenviron/mediamtx
```

You can verify the binaries checksum by downloading `checksums.sha256` and running:

```
cat checksums.sha256 | grep "$(ls mediamtx_*)" | sha256sum --check
```