New major features
RTMP
- support additional Enhanced-RTMP features (#3685) (#4088), including: support publishing Opus and AC-3 tracks, support publishing more than 2 tracks. This is compatible with OBS multitrack video and OBS VOD audio track.
API
- api, metrics: add additional RTSP statistics (#3312) (#4073)
- add 'session' field to RTSPConn (#3974) (#4074)
Fixes and improvements
General
- fix race condition when checking configuration (#4044). * simplify configuration parser. * fix race condition when checking configuration
- fix recording timestamp with some audio codecs (#3969) (#4041) (#4062). When a stream contained an Opus, MPEG-4 audio or AC3 track, timestamp in. the segment file name was increasing at twice the speed.
- fix MTX_CONN_TYPE value with RTSP connections (#3967) (#4075)
- warn users if deprecated parameters are being used (#4080)
- playback: allow filtering timespans by start and end date (#3637) (#3489) (#4085)
- accept durations expressed as days (i.e. '1d') (#4094)
- generate and show binary checksums in releases (#4012) (#4095)
- playback: improve /list response time (#3637) (#4096). Response times of the /list endpoint were slow because the duration of each segment was computed from scratch by summing the duration of each of its parts. This is improved by storing the duration of the overall segment in the header and using that, if available.
- playback: improve /list performance (#3663) (#4102). Segments are now parsed in parallel.
- h264: Fix AnnexB parser when NALUs end with a 0 byte (bluenviron/mediacommon#159)
- codecs/av1: rewrite LEB128 implementation (bluenviron/mediacommon#161). According to the specification, a LEB128 cannot be greater than 2^32.
- codecs/av1: support AMD hardware encoder (#3902) (bluenviron/mediacommon#162)
- mpegts: prevent wrong results in codec comparisons (bluenviron/mediacommon#167)
API
- api, metrics: fix RTC lowercase in webRTCSession and webRTCSource (#4076)
RTSP
- rename encryption, protocols, serverKey, serverCert into rtspEncryption, rtspProtocols, rtspServerKey, rtspServerCert (#4078)
- prevent decoders from emitting corrupted frames (bluenviron/gortsplib#638)
- Support relative Content-Base paths (bluenviron/gortsplib#636)
- reuse UDP buffers when possible (bluenviron/gortsplib#639)
- client: fix resetting time decoder (bluenviron/gortsplib#642)
- use new time decoder in place of deprecated one (bluenviron/gortsplib#643)
- rtph264: accept non-compliant single FU-A frames (bluenviron/gortsplib#649). Some IP cameras (e.g. CostarHD) have been observed to emit single. fragment RTP FU-A packets, with start and end bit both set, for. sufficiently small H.264 P-frames. Rather than emit an error,. workaround such non-compliant frames.
- server: fix crash with invalid SETUP request (#4025) (bluenviron/gortsplib#652)
- skip invalid bytes in connection read (bluenviron/gortsplib#653)
- client: fix BytesSent / BytesReceived computation (bluenviron/gortsplib#612) (bluenviron/gortsplib#654). When the TCP transport protocol is in use, BytesSent and BytesReceived. were increased twice.
- close connections in case of write errors (bluenviron/gortsplib#613) (bluenviron/gortsplib#655)
- use a single TCP outgoing buffer each client / session (bluenviron/gortsplib#665). this saves memory.
- server: always open firewall before sending messages (bluenviron/gortsplib#666)
- prevent RTPPacketsJitter from being NaN (bluenviron/gortsplib#670)
- server: fix panic during session closure (bluenviron/gortsplib#671)
- prevent wrong results in format comparisons or when formats are used as keys (bluenviron/gortsplib#673)
RTMP
HLS
- fix VLC compatibility (bluenviron/gohlslib#204)
- client: fix race condition when getting NTP (bluenviron/gohlslib#207)
SRT
Dependencies
- build(deps): bump github.com/bluenviron/gortsplib/v4 (#4007)
- build(deps): bump github.com/alecthomas/kong from 1.4.0 to 1.5.1 (#4008)
- build(deps): bump golang.org/x/term from 0.26.0 to 0.27.0 (#4016)
- build(deps): bump golang.org/x/crypto from 0.29.0 to 0.30.0 (#4019)
- build(deps): bump github.com/alecthomas/kong from 1.5.1 to 1.6.0 (#4029)
- build(deps): bump github.com/datarhei/gosrt from 0.7.0 to 0.8.0 (#3992)
- build(deps): bump github.com/bluenviron/gohlslib/v2 from 2.0.0 to 2.1.0 (#4033)
- build(deps): bump golang.org/x/crypto from 0.30.0 to 0.31.0 (#4034)
- build(deps): bump github.com/matthewhartstonge/argon2 (#4039)
- build(deps): bump github.com/pion/rtcp from 1.2.14 to 1.2.15 (#4048)
- build(deps): bump github.com/bluenviron/mediacommon (#4047)
- bump hls.js to v1.5.18 (#4052). Co-authored-by: mediamtx-bot bot@mediamtx
- build(deps): bump github.com/matthewhartstonge/argon2 (#4068)
- build(deps): bump github.com/matthewhartstonge/argon2 (#4070)
- build(deps): bump github.com/abema/go-mp4 from 1.2.0 to 1.3.0 (#4072)
- build(deps): bump github.com/gin-contrib/pprof from 1.5.1 to 1.5.2 (#4071)
- build(deps): bump github.com/go-git/go-git/v5 from 5.12.0 to 5.13.0 (#4091)
- build(deps): bump github.com/go-git/go-billy/v5 from 5.6.0 to 5.6.1 (#4090)
- build(deps): bump github.com/bluenviron/gohlslib/v2 from 2.1.0 to 2.1.1 (#4099)
- build(deps): bump github.com/bluenviron/gortsplib/v4 (#4097)
- build(deps): bump github.com/go-git/go-git/v5 from 5.13.0 to 5.13.1 (#4100)
Security
Binaries have been produced by the Release workflow without human intervention.
SHA256 checksums:
- mediamtx_v1.11.0_darwin_amd64.tar.gz 278eb585eb9121e16b5eb72e64f67f3614fba901c8365341b487f6bfee3da526
- mediamtx_v1.11.0_darwin_arm64.tar.gz 7ad7643f831e2dfc3463c24484e5038f69115eba9a861d3854392b3b77df1d22
- mediamtx_v1.11.0_linux_amd64.tar.gz c6c752d1fb0a8308d718f057a19b455485f5a8320ad4964afe927b592d8e170d
- mediamtx_v1.11.0_linux_arm64v8.tar.gz 12b438df60f6eb844b48887122c6c16335faa0ebfa1bf91a2363910e2732e7fb
- mediamtx_v1.11.0_linux_armv6.tar.gz 38d22b6c65ce52037bce66e07655eeeb0c8d844027f8a64c512bcc90ba467370
- mediamtx_v1.11.0_linux_armv7.tar.gz f284e20a80d01863985fc1e84f74f98aa3c67979af25a5e24a6cc4d382c265a4
- mediamtx_v1.11.0_windows_amd64.zip fa9335346f1e97d79eb658fd3579d9af0e71a1ee062b5b9b8000f6e90b966282