New major features
WebRTC
- support publishing multiple video/audio renditions (#5573) this allows to receive multiple video tracks from OBS Studio with the new WebRTC Simulcast feature introduced in v32.1.0.
API
- provide track details (#5307) (#5333) (#1726) (#5585)
- add user field to RTSP, RTMP, SRT, WebRTC conns and sessions (#5104) (#5565)
- add RTSP reported lost packets (#5198) (#5579) The new outboundRtpPacketsReportedLost property allows to track RTP packets that have been reported lost by readers. Furthermore, stats now have a "inbound" or "outbound" prefix to improve readability.
- rename WebRTC stats to match RTSP ones (#5581)
- add new stats (#5582) - RTSPSession.outboundRTPPacketsDiscarded - Path.inboundFramesInError - SRTConn.outboundFramesDiscarded - WebRTCSession.outboundFramesDiscarded - RTMPConn.outboundFramesDiscarded - HLSMuxer.outboundFramesDiscarded
Fixes and improvements
General
- avoid buffering HTTP response body in loggerWriter (#5552) loggerWriter was shadow-copying every response byte into a bytes.Buffer to report the body size, causing the entire response to be accumulated in memory for the lifetime of each request. Replace the buffer with a plain int counter since dump() only ever reported the byte count anyway.
- optionally validate JWT iss and aud claims (#5569)
- metrics: add two missing SRT stats (#5580)
API
- add deprecated fields to the OpenAPI definition (#5575)
- add missing enums and move all enums in dedicated components (#5576)
RTSP
- fix rtsps scheme not being used in requests (#5236) (#5544)
- support unwrapping MPEG-TS tracks (#5476) this allows to use MPEG-TS tracks with other protocols and with the recording system
- client: fix support for hostnames in source and dest headers (bluenviron/gortsplib#1009) (#5304) (bluenviron/gortsplib#1014)
- allocate a rtp sender for each server session (bluenviron/gortsplib#1021) this produces more realistic statistics and in the future will allow to implement per-session statistics and packet retransmission.
- store reported lost RTP packets in stats (#5198) (bluenviron/gortsplib#1023)
HLS
- muxer: support muxing KLS with MPEG-TS (bluenviron/gohlslib#327)
- client: fix deadlock when processing fMP4s (bluenviron/gohlslib#333) (bluenviron/gohlslib#334)
WebRTC
- fix panic with WHIP POST authentication failures (#5566)
Dependencies
- code.cloudfoundry.org/bytefmt updated from v0.64.0 to v0.67.0
- github.com/abema/go-mp4 updated from v1.4.1 to v1.5.0
- github.com/bluenviron/gohlslib/v2 updated from v2.2.8 to v2.2.9
- github.com/bluenviron/gortsplib/v5 updated from v5.4.0 to v5.5.0
- github.com/bluenviron/mediacommon/v2 updated from v2.8.2 to v2.8.3
- golang.org/x/crypto updated from v0.48.0 to v0.49.0
- golang.org/x/sys updated from v0.41.0 to v0.42.0
- golang.org/x/term updated from v0.40.0 to v0.41.0
- golang.org/x/net updated from v0.51.0 to v0.52.0
- golang.org/x/text updated from v0.34.0 to v0.35.0
Security
Binaries are compiled from source code by the Release workflow, 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, 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