Releases: bluenviron/mediamtx
Releases · bluenviron/mediamtx
v1.11.0
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
v1.10.0
New features
WebRTC
Fixes and improvements
General
- improve unsafe path handling (#3927)
- fix crash when recording a stream with unsupported tracks (#3978) (#3996) (#3978)
WebRTC
- include query parameters in session URL (#3920)
- move JavaScript reader and publisher into portable classes (#3921)
- restart ICE only on failed connection states (#3899)
RPI Camera
- increase default camera bitrate to 5 Mbps (#3896)
- ix restarting stream in case of disconnections or driver errors (#3988)
- ix restarting camera when component crashes (#3997)
- improve performance by using DMA buffers (bluenviron/mediamtx-rpicamera#29). this speeds up text drawing and software encoding.
- fix freeze when RAM is full or under pressure (bluenviron/mediamtx-rpicamera#33)
- emit error signal in case of driver errors (bluenviron/mediamtx-rpicamera#34)
- remove useless timestamp normalization (bluenviron/mediamtx-rpicamera#35)
- always free incoming commands from memory (bluenviron/mediamtx-rpicamera#36)
Dependencies
- build(deps): bump github.com/go-git/go-billy/v5 from 5.5.0 to 5.6.0 (#3900)
- build(deps): bump github.com/fsnotify/fsnotify from 1.7.0 to 1.8.0 (#3925)
- build(deps): bump github.com/alecthomas/kong from 1.2.1 to 1.3.0 (#3926)
- bump Golang to 1.23 (#3702)
- build(deps): bump github.com/alecthomas/kong from 1.3.0 to 1.4.0 (#3940)
- build(deps): bump golang.org/x/sys from 0.26.0 to 0.27.0 (#3948)
- build(deps): bump golang.org/x/crypto from 0.28.0 to 0.29.0 (#3946)
- build(deps): bump golang.org/x/term from 0.25.0 to 0.26.0 (#3947)
- build(deps): bump github.com/gin-contrib/pprof from 1.5.0 to 1.5.1 (#3955)
- build(deps): bump github.com/matthewhartstonge/argon2 (#3950)
- build(deps): bump github.com/stretchr/testify from 1.9.0 to 1.10.0 (#3979)
- bump mediamtx-rpicamera to v2.3.6 (#4004)
v1.9.3
Fixes and improvements
General
- fix version reporting with --version (#3846) (#3847)
- make better use of Gin middleware system (#3849)
- pprof: fix required authentication action (#3850)
- restore pprof service (#3848) (#3851)
- fix setting version in Arch Linux package (#3852)
- warn instead of exiting when it is not possible to get version from git (#3857)
- fix wrong -dirty prefix in version (#3869)
- h264: improve performance of SPS parser (bluenviron/mediacommon#152)
- h264: fix memory filling up in case of malicious SPS (bluenviron/mediacommon#153). When CpbCntMinus1 is set to unreasonably high values, the RAM fills up.
RTSP
- support H264 with payload type 35 from Bosh Cameras (bluenviron/gortsplib#632)
- server: fix error message (bluenviron/gortsplib#634). Return error 'can't setup medias with different protocols' when trying to use UDP and TCP in sequence.
RPI Camera
- fix using software encoder when frame stride is different from frame width (bluenviron/mediamtx-rpicamera#18)
- improve performance of H264 hardware encoder (bluenviron/mediamtx-rpicamera#25). Performance is increased by sharing structs between multiple API calls.
- improve performace of H264 hardware encoder (bluenviron/mediamtx-rpicamera#26). remove call to poll()
- fix segfault when using invalid ROI or AfWindow parameters (bluenviron/mediamtx-rpicamera#27)
Dependencies
- bump hls.js to v1.5.17 (#3885)
v1.9.2
Fixes and improvements
General
- fix memory leak in case of errors during initialization of a reader (#3831)
- log track ID when skipping tracks (#3798)
- support using JWT in Authorization header with API, Metrics, PProf (#3630) (#3795)
- show right server version when server is compiled from source (#3409)
- add Unity instructions (#3837)
- route original timestamps without converting to durations (#3839). This improves timestamp precision.
- add instructions about SELinux distributions (#3673)
RTSP
- fix generating media URL with leading slash in control attribute (#3517) (bluenviron/gortsplib#625)
- use native timestamps instead of time.Duration (bluenviron/gortsplib#627). this improves timestamp precision
HLS
- support generating streams with multiple audio tracks (#2728) (#3793) (bluenviron/gohlslib#181)
- muxer: put EXT-X-MEDIA before EXT-X-STREAM (bluenviron/gohlslib#183)
- muxer: prevent creating empty parts before switching segments (bluenviron/gohlslib#184)
- muxer: serve different tracks in different streams (bluenviron/gohlslib#180)
- muxer: keep TARGETDURATION constant to minimize iOS errors (bluenviron/gohlslib#187)
- use native timestamps instead of time.Duration (bluenviron/gohlslib#190)
- client: fix computing absolute timestamp with multiple renditions (bluenviron/gohlslib#192)
WebRTC
- fix crash in case of congestion (#3813) (#3815)
- fix connection timeout when webrtcAdditionalHosts is filled with existing IP (#3835).
Dependencies
- build(deps): bump github.com/MicahParks/jwkset from 0.5.19 to 0.5.20 (#3787)
- build(deps): bump github.com/pion/interceptor from 0.1.30 to 0.1.31 (#3825)
- build(deps): bump golang.org/x/term from 0.24.0 to 0.25.0 (#3827)
- build(deps): bump github.com/pion/interceptor from 0.1.31 to 0.1.32 (#3830)
- build(deps): bump golang.org/x/crypto from 0.27.0 to 0.28.0 (#3828)
- build(deps): bump github.com/pion/interceptor from 0.1.32 to 0.1.37 (#3840)
v1.9.1
Fixes and improvements
General
- fix cleaning of recordings in case of multiple recordDeleteAfter values (#3557) (#3741)
- prevent setting readTimeout / writeTimeout to zero (#3750)
- warn users about skipped tracks when reading or publishing (#3753)
- mpegts: allow interacting with streams with unsupported codecs (bluenviron/mediacommon#147)
RTSP
- client: omit mode from Transport header (bluenviron/gortsplib#611) (bluenviron/gortsplib#574) (bluenviron/gortsplib#614)
- fix reading from Wisenet NVR (#3583) (bluenviron/gortsplib#615)
- fix panic when checking pts = dts on H265 (#3754) (bluenviron/gortsplib#617)
- server: fix compatibility with rtspclientsink and query parameters (#3295) (bluenviron/gortsplib#619)
- server: use relative control attributes (bluenviron/gortsplib#620)
- server: fix SETUP in case of no track ID and query parameters (bluenviron/gortsplib#623)
RTMP
- support ingesting AV1, VP9, H265, MP3, PCM from other servers (#3751)
HLS
- fix playback speed on iOS (#3155) (#3731) (#3734)
- fix delay when window is minimized (#3759) (#3772)
RPI Camera
- throw an error when trying to run the 32-bit server on 64-bit os and vice-versa (#3721)
- fix compatibility with Raspberry Pi 5 and Camera Module 3 (#3715) (#3746)
Dependencies
- bump GitHub actions (#3699)
- build(deps): bump golang.org/x/term from 0.23.0 to 0.24.0 (#3735)
- build(deps): bump golang.org/x/crypto from 0.26.0 to 0.27.0 (#3744)
- build(deps): bump github.com/alecthomas/kong from 0.9.0 to 1.1.0 (#3757)
- build(deps): bump github.com/alecthomas/kong from 1.1.0 to 1.2.0 (#3760)
- build(deps): bump github.com/alecthomas/kong from 1.2.0 to 1.2.1 (#3763)
- build(deps): bump github.com/matthewhartstonge/argon2 (#3767)
- bump actions/setup-go (#3773)
- build(deps): bump github.com/MicahParks/keyfunc/v3 from 3.3.3 to 3.3.5 (#3775)
v1.9.0
New major features
Raspberry Pi Camera
- support Raspberry Pi OS Bookworm by embedding libcamera and libfreetype into the server. It's not necessary anymore to install or update libcamera (#2581) (#3665)
- support Raspberry Pi 5 by adding a H264 software encoder (#2581) (#3670)
Fixes and improvements
General
- simplify rpi / microphone instructions (#3650)
- raise error in case of duplicate params in the configuration (https://github.com/bluenviron/mediamtx/issues/3593) (#3651)
- playback: add "url" field to recording timespans in /list (#3619)
- allow to set the JWT claim key that contains permissions (#3560) (#3692)
- h264: Fix DTS Extractor when single SEI NALU is received (bluenviron/mediacommon#142) (#3614) by @gkubes
RTSP
- server: fix panic when recording with wrong transport header (#3677) (bluenviron/gortsplib#604)
- client: prevent switching protocol when protocol is fixed to UDP (bluenviron/gortsplib#607)
- mjpeg: fix decoding and encoding JPEG types 1-63 (bluenviron/gortsplib#605) by @kevmo314
WebRTC
RPI Camera
- update font and link it to IBM repository (#3647)
- add rpiCameraFlickerPeriod (#3463) (#3667)
- fix passing unsigned integers to component (#3672)
Dependencies
- build(deps): bump golang.org/x/term from 0.22.0 to 0.23.0 (#3626)
- build(deps): bump github.com/pion/interceptor from 0.1.29 to 0.1.30 (#3627)
- bump hls.js to v1.5.14 (#3624). Co-authored-by: mediamtx-bot bot@mediamtx
- build(deps): bump golang.org/x/sys from 0.23.0 to 0.24.0 (#3643)
- build(deps): bump golang.org/x/crypto from 0.25.0 to 0.26.0 (#3628)
- bump hls.js to v1.5.15 (#3681). Co-authored-by: mediamtx-bot bot@mediamtx
- build(deps): bump github.com/bluenviron/mediacommon (#3697)
- build(deps): bump github.com/bluenviron/gortsplib/v4 (#3698)
v1.8.5
Fixes and improvements
General
- record, hls: fix panic with MPEG-4 audio tracks without config (#3590) (#3594)
- automatically reload TLS certificates when they change (#3598) by @dbason
- mpeg4audio: fix panic when marshaling StreamMuxConfig (bluenviron/mediacommon#137)
- h265: fix panic when marshaling SPS (bluenviron/mediacommon#138)
- fmp4: prevent RAM exhaustion by limiting max sample count (bluenviron/mediacommon#140)
API
- apidocs: add missing authentication-related parameters (#3607)
- apidocs: add missing fields in /list and SRT connections (#3610)
RTSP
- fix panic in MPEG4Audio.GetConfig() (bluenviron/gortsplib#590). #3590
Dependencies
- bump hls.js to v1.5.13 (#3540). Co-authored-by: mediamtx-bot bot@mediamtx
- build(deps): bump github.com/datarhei/gosrt (#3559)
v1.8.4
Fixes and improvements
General
- allow using MTX_QUERY inside source (#3486). this allows to pass query parameters to sources
- fix support for HTTP preflight requests (#1792) (#3535)
- h264: fix DTS extraction of NVC4000 streams (bluenviron/mediacommon#136). (#3094)
RTSP
- support decoding M-JPEG streams with any quantization (bluenviron/gortsplib#566) (bluenviron/gortsplib#583)
RTMP
WebRTC
- support publishing H265 tracks (#3435) (#3492). IMPORTANT NOTE: this doesn't allow to read H265 tracks with WebRTC, just to publish them. The inability to read H265 tracks with WebRTC is not in any way related to the server but depends on browsers and on the fact that they are not legally entitled to embed a H265 decoder.
SRT
Dependencies
v1.8.3
Fixes and improvements
General
- fix error in timestamp of Opus packets coming from SRT / HLS / MPEG-TS (#3388)
- expose MTX_SEGMENT_DURATION to runOnRecordSegmentComplete (#3440) (#2983) (#3456)
- prevent mixing together legacy and current auth mechanism (https://github.com/bluenviron/mediamtx/issues/3258) (#3460)
- mpegts: fix compatibility with QuickTime (bluenviron/mediacommon#131) (#3206)
- mpegts: automatically strip AUD from H264 and H265 (bluenviron/mediacommon#132)
- h264: filter out invalid NALUs from Annex-B (bluenviron/mediacommon#133)
- h264: improve performance of AVCC unmarshaler (bluenviron/mediacommon#134)
- h265: support ScalingListDataPresentFlag (bluenviron/mediacommon#135)
API
- add CORS headers on non-existing pages too (#1792) (#3410)
- fix crash when itemsPerPage is zero and there are items (#3425)
RTMP
HLS
- propagate query parameters to media playlist, segments and parts (bluenviron/gohlslib#165) (#3275)
- support passing JWT through Authorization header (#3248) (#3458)
WebRTC
- support reading, publishing and proxying surround Opus (#3371) (#3375)
- support reading, publishing, proxying LPCM tracks (#3437)
- support reading, publishing and proxying stereo PCMU/PCMA tracks (#3402)
- support reading G711 16khz tracks (#2848) (#3445)
- in answer, include only codecs that are actually in use (#3374)
- allow configuring timeouts (#3404) (#3406)
- show error in case setRemoteDescription fails (#3416)
- show error when setLocalDescription or createOffer fail (#3417)
- fix proxying PCMU tracks (#3427)
- speed up gathering of incoming tracks (#3441)
- fix supported AV1 profiles (#3442)
- set fmtp of outgoing VP9 and multiopus tracks (#3446)
- on browsers, display error messages from server (#3448)
- fix error "Failed to setup RTCP mux" on some readers (#3381) (#3449)
- support passing JWT through Authorization header (#3248) (#3458)
- support passing username and password through Bearer Token (#3248) (#3459)
Dependencies
- bump hls.js to v1.5.9 (#3407). Co-authored-by: mediamtx-bot bot@mediamtx
- bump hls.js to v1.5.10 (#3421)
- build(deps): bump golang.org/x/term from 0.20.0 to 0.21.0 (#3424)
- build(deps): bump golang.org/x/crypto from 0.23.0 to 0.24.0 (#3423)
- bump hls.js to v1.5.11 (#3426)
- bump pion/webrtc and pion/ice (#3436)
- bump pion/webrtc (#3447)
- build(deps): bump github.com/gorilla/websocket from 1.5.1 to 1.5.2 (#3450)
v1.8.2
Fixes and improvements
General
- raise an error in case recordPath is incompatible with the playback server (#3356)
- support routing multichannel Opus between RTSP, SRT, HLS, UDP and recording in MPEG-TS and fMP4 (#3355) (#3368)
- bug(h264/h265): DTS may stay the same (bluenviron/mediacommon#119) by @xaionaro
- fix DTS extraction of QSV HEVC streams (#3285)
- h265: fix crash in DTS extractor (bluenviron/mediacommon#129)
API
- make replace paths idempotent (#3362). Don't return a 404 error if the path doesn't exist yet by @bouk
RTSP
- fix authentication when algorithm field is not supported (#3116) (#3314)
- avoid returning partial RTP-Info header, omit seq/rtptime if needed (bluenviron/gortsplib#568) by @Fusl
- fix authentication when algorithm field is not supported (bluenviron/gortsplib#558). (#3116)
- support multichannel Opus (#3355) (bluenviron/gortsplib#572)
HLS
- make closeAfterInactivity configurable (#3329) by @xjr20042
- Ignore LL-HLS requests for segments that have already expired (bluenviron/gohlslib#156) by @HyeockJinKim
WebRTC
- fix returning code 404 when a stream does not exist (#3369)
Dependencies
- build(deps): bump golang.org/x/crypto from 0.22.0 to 0.23.0 (#3330)
- build(deps): bump github.com/gin-gonic/gin from 1.9.1 to 1.10.0 (#3334)
- bump GitHub Actions OS (#3341)
- build(deps): bump github.com/MicahParks/jwkset from 0.5.17 to 0.5.18 (#3363)
- build(deps): bump github.com/MicahParks/keyfunc/v3 from 3.3.2 to 3.3.3 (#3364)