Skip to content

v1.16.0

Latest

Choose a tag to compare

@github-actions github-actions released this 31 Jan 15:38
· 1 commit to main since this release
74eaa11

New major features

General

  • add always available streams (#5335) When the publisher or source of a stream is offline, the server can be configured to fill gaps in the stream with a video that is played on repeat until a publisher comes back online. This allows readers to stay connected regardless of the state of the stream. The offline video and any future online stream are concatenated without decoding or re-encoding packets, using the original codec.

API

  • add available, availableTime, online, onlineTime properties (#5391) these replace ready and readyTime and allow to monitor the new "always-available" feature.

WebRTC

  • support reading KLV tracks (#4722)

Fixes and improvements

General

  • move away from balenalib Docker images (#5313)
  • print OS and Arch in first log line (#5315)
  • print last decode error (#5319) decode errors are still grouped together, but the last one is now printed.
  • print last processing error (#5323)
  • use the same filtering process for every codec (#5324) this allows to apply features that were previously implemented for single codecs (like RTP packet resizing), to any codec, and simplifies future development.
  • prevent several configuration errors (#5368)
  • fix typos in documentation (#5370)
  • fix overriding default user with environment variables (#5371) MTX_AUTHINTERNALUSERS_0_USER and MTX_AUTHINTERNALUSERS_0_PASS are now working even when the configuration file is present.
  • prevent setting empty usernames with environment variables (#5373)
  • fix panic with environment variables (#5374) this happened when loading deprecated slices of structs with environment variables.
  • prevent setting slices to null (#5375) In Golang, slices can be set to nil, while in most other languages they cannot. This causes compatibility issues, especially because the OpenAPI definition of the API does not allow slices to be nil. This prevents slices from being set to nil through JSON/YAML, and also sets default slices to an empty list instead of nil.
  • Update hlsEncryption documentation on Low-Latency HLS requirements (#5379)
  • fix race condition when closing HTTP servers (#5390) when a HTTP server is closed, open connections are now immediately closed and open routines are waited before the server is considered closed.
  • deprecate fallback (#5388) The fallback feature worked with RTSP only and did not allow readers to resume the original stream. It has been replaced by alwaysAvailable.
  • mpegts: add E-AC-3 (Dolby Digital Plus) codec support (bluenviron/mediacommon#272)
  • mpeg4audio: support channel_config=0 (bluenviron/mediacommon#273)
  • mpeg4audio: in ASC, prefer marshaling legacy ChannelConfig when available (bluenviron/mediacommon#280)
  • pmp4: increase compatibility (bluenviron/mediacommon#293)
  • pmp4: support MP4s with data before track definitions (bluenviron/mediacommon#294)

API

  • improve OpenAPI definition (#5380) add uint64, uint, uuid, move WebRTCICEServer into dedicated schema

RTSP

  • fix log labels of RTSPS listeners (#5367) use "TCP/RTSPS", "UDP/SRTP", "UDP/SRTCP" to refer to secure listeners
  • add rtspUDPSourcePortRange param (#5363) (#5397)

HLS

  • fix playback starting point for VOD streams without EXT-X-PLAYLIST-TYPE (bluenviron/gohlslib#308)
  • client: return every unit before an error (bluenviron/gohlslib#314) In case of an error, downloaded unit that were not processed yet were discarded. Now they are returned before the client exits.

WebRTC

  • print incoming data channel messages (#5357)

RPI Camera

Dependencies

  • code.cloudfoundry.org/bytefmt updated from v0.59.0 to v0.62.0
  • github.com/bluenviron/gohlslib/v2 updated from v2.2.4 to v2.2.5
  • github.com/bluenviron/gortmplib updated from v0.2.0 to v0.2.1
  • github.com/bluenviron/gortsplib/v5 updated from v5.2.2 to v5.3.0
  • github.com/bluenviron/mediacommon/v2 updated from v2.6.0 to v2.7.0
  • github.com/golang-jwt/jwt/v5 updated from v5.3.0 to v5.3.1
  • github.com/matthewhartstonge/argon2 updated from v1.4.4 to v1.4.5
  • github.com/pion/ice/v4 updated from v4.1.0 to v4.2.0
  • github.com/pion/interceptor updated from v0.1.42 to v0.1.43
  • github.com/pion/rtp updated from v1.9.0 to v1.10.0
  • github.com/pion/transport/v3 removed
  • github.com/pion/webrtc/v4 updated from v4.2.1 to v4.2.3
  • golang.org/x/crypto updated from v0.46.0 to v0.47.0
  • golang.org/x/sys updated from v0.39.0 to v0.40.0
  • golang.org/x/term updated from v0.38.0 to v0.39.0
  • github.com/pion/datachannel updated from v1.5.10 to v1.6.0
  • github.com/pion/dtls/v3 updated from v3.0.9 to v3.0.10
  • github.com/pion/sctp updated from v1.9.0 to v1.9.2
  • github.com/pion/srtp/v3 updated from v3.0.9 to v3.0.10
  • github.com/pion/stun/v3 updated from v3.0.2 to v3.1.1
  • github.com/pion/turn/v4 updated from v4.1.3 to v4.1.4
  • golang.org/x/net updated from v0.48.0 to v0.49.0
  • golang.org/x/text updated from v0.32.0 to v0.33.0
  • github.com/pion/transport/v4 v4.0.1 added
  • github.com/bluenviron/mediamtx-rpicamera updated from v2.5.1 to v2.5.2

Security

Binaries are compiled from source through the Release workflow without human intervention, preventing any external interference.

You can verify that binaries have been produced by the workflow by using GitHub Attestations:

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