Releases: bluenviron/mediamtx
Releases · bluenviron/mediamtx
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)
v1.8.1
Fixes and improvements
General
- fix unexpected behavior of authInternalUsers or authHTTPExclude (#3316). when some subfields of authInternalUsers or authHTTPExclude were not set explicitly in the configuration file, default values were used in their place. This is caused by a strange behavior of Go (golang/go#21092)
- fix 'no segments found' error message (#3323)
- h264: support 4K videos encoded with tune=zerolatency (#2985) (bluenviron/mediacommon#120)
- vp9: fix crash when retrieving width / height / chroma and frame is not a key frame (bluenviron/mediacommon#123)
RTSP
- fix VP9 decoding on iOS (#3060) (bluenviron/gortsplib#553)
- various performance improvements (bluenviron/gortsplib#561)
RTMP
- fix error when reading metadata (#3302). some rtmp client will send set chunk size after publish stream
WebRTC
Dependencies
- build(deps): bump github.com/pion/rtp from 1.8.5 to 1.8.6 (#3288)