Releases: bluenviron/mediamtx
Releases · bluenviron/mediamtx
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)
v1.8.0
New features
- support HTTPS, Allow-Origin and trusted proxies in API, playback server, metrics server and pprof server (#2658) (#2491) (#3235) (#3280)
Fixes and improvements
General
- playback: improve precision when splitting fMP4 parts (#3250)
- record: increase default part duration to 1s (#3264)
- fix support for JWT authentication in API, metrics, playback, pprof (#3253). Co-authored-by: Rafael Scheidt rafaelscheidt@Rafaels-MacBook-Air.local. Co-authored-by: aler9 46489434+aler9@users.noreply.github.com
API
- fix crash when changing settings of an on-demand source that is idle (#3246) (#3249)
- fix crash when calling config/paths/patch on an empty path config (#3265)
RTSP
- fix SDP error with AXIS 221 (#2708) (bluenviron/gortsplib#547)
HLS
- fix population of runOnDemand's MTX_QUERY (#3255)
WebRTC
- improve layout of publish page; add 'ideal' label to width, height and framerate (#2845) (#3254)
- fix setting bitrate when 'optimize for voice' is off (#3262)
- fix loading default video and devices from query (#3260)
- in publish page, prevent same device from appearing multiple times (#3261)
- detect stereo tracks published with the web page (#2902) (#3263)
- support charset in Content-Type of WHIP offer responses (#3274)
- support WHIP/WHEP endpoints without PATCH support (#3273) (#3277)
Dependencies
v1.7.0
New features
- playback: support serving streams in standard MP4 format (#3213). This provides an alternative stream format that offers greater compatibility with some players.
Fixes and improvements
General
- do not switch to legacy authentication system when readUser, readPass, publishUser, publishPass are present but are empty (#3113)
- playback: do not concatenate segments with different tracks (#3197)
- playback: fix concatenation of segments with multiple tracks (#3198). the duration of segments was computed erroneously, since it was taking. into consideration the last track only. Now the duration of a segment. corresponds to the maximum duration among all tracks.
- playback: decrease concatenation tolerance to 0.5 secs (#3199)
- playback: increase sequence number of fMP4 parts (#3200)
- playback: adjust speed to compensate discrepancies between NTP and DTS (#3202)
- playaback: use a fixed fMP4 part duration (#3203)
- playback: improve performance when reading big segments (#3209)
- playback: fix bug that messed up duration of last sample of each track (#3210)
- playback: support serving tracks with any time scale (#3211)
- record: use original timescale of track instead of 90khz (#3212)
- deprecate path.playback parameter (#3217). this has become useless after the introduction of the new. authentication system, that already allows to select which paths are. available for playback
- formats/fmp4: improve unmarshaler performance (bluenviron/mediacommon#112)
RTMP
- fix streaming errors by handling AMF0 strict arrays (#3188) (#3189). * add amf0 strict array decode. * add amf0 long string decode. * support amf0 types undefined, unsupported, xmldocument and date. * fix error and add tests. * modify tests to follow original way to test. * do not skip markerUnsupported / markerUndefined. * implement StrictArray marshaling; remove handling of long strings, XML documents, date. ---------. Co-authored-by: aler9 46489434+aler9@users.noreply.github.com
HLS
- decrease number of idle connections kept open after a reconnection (#3128)
- fix freeze in case of muxing errors (#3135) (#3150)
- fix directory creation when using hlsDirectory (#3135) (#3151)
- store init.mp4 exclusively on RAM (bluenviron/gohlslib#143)
- webrtc, hls: use absolute paths in Location header (#3195) (#3177) (#3240)
WebRTC
- fix deadlock when a WHEP source fails (#3062) (#3108) (#3110). Co-authored-by: Jonathan Martin jonathan.martin@marss.com. Co-authored-by: aler9 46489434+aler9@users.noreply.github.com
- fix memory leak when WHEP track gathering fails and decrease count of idle HTTP connections (#3124). * fix: whep gathering failure leaks peer connections. * fix: failure to create whep client leaks. when read fails, client is not closed. * fix: close idle connection with whip client. * fix: no link check on early whip client close. * move http.Client.CloseIdleConnections() outside WHIPClient. * automatically call WHEPClient.Close() in case of errors during WHEPClient.Read() or WHEPClient.Publish(). ---------. Co-authored-by: Jonathan Martin jonathan.martin@marss.com. Co-authored-by: aler9 46489434+aler9@users.noreply.github.com
- fix crash when marshaling ICE fragments (#3231)
- return 404 in case a WHIP PATCH or WHIP DELETE request fails (#3232)
- webrtc, hls: use absolute paths in Location header (#3195) (#3177) (#3240)
- Add option for ICE servers to be client only (#3164). * Add option for ICE servers to be client only. * add clientOnly to configuration file and API docs. ---------. Co-authored-by: aler9
API
- Fix API version in docs (#3180)
Dependencies
- build(deps): bump golang.org/x/sys from 0.17.0 to 0.18.0 (#3099)
- build(deps): bump golang.org/x/term from 0.17.0 to 0.18.0 (#3098)
- build(deps): bump github.com/pion/sdp/v3 (#3102)
- build(deps): bump github.com/golang-jwt/jwt/v5 from 5.2.0 to 5.2.1 (#3104)
- build(deps): bump github.com/MicahParks/keyfunc/v3 from 3.2.5 to 3.2.7 (#3105)
- build(deps): bump golang.org/x/crypto from 0.20.0 to 0.21.0 (#3103)
- build(deps): bump github.com/pion/sdp/v3 from 3.0.7 to 3.0.8 (#3120)
- build(deps): bump github.com/MicahParks/keyfunc/v3 from 3.2.7 to 3.2.8 (#3132)
- build(deps): bump github.com/MicahParks/keyfunc/v3 from 3.2.8 to 3.2.9 (#3136)
- build(deps): bump github.com/alecthomas/kong from 0.8.1 to 0.9.0 (#3133)
- build(deps): bump google.golang.org/protobuf from 1.30.0 to 1.33.0 (#3139)
- build(deps): bump github.com/pion/rtp from 1.8.3 to 1.8.4 (#3153)
- build(deps): bump github.com/datarhei/gosrt from 0.5.7 to 0.6.0 (#3154)
- build(deps): bump github.com/pion/interceptor from 0.1.25 to 0.1.27 (#3171)
- build(deps): bump github.com/pion/rtp from 1.8.4 to 1.8.5 (#3178)
- build(deps): bump github.com/MicahParks/keyfunc/v3 from 3.2.9 to 3.3.2 (#3168)
- build(deps): bump github.com/pion/sdp/v3 from 3.0.8 to 3.0.9 (#3179)
- build(deps): bump golang.org/x/term from 0.18.0 to 0.19.0 (#3191)
- build(deps): bump golang.org/x/crypto from 0.21.0 to 0.22.0 (#3192)
- bump hls.js to v1.5.8 (#3222). Co-authored-by: mediamtx-bot bot@mediamtx
- build(deps): bump github.com/pion/interceptor from 0.1.27 to 0.1.28 (#3228)
v1.6.0
New major features
- New authentication system (#1341) (#1992) (#2205) (#3081). This is a new authentication system that covers all the features exposed by the server, including playback, API, metrics and PPROF, improves internal authentication by adding permissions, improves HTTP-based authentication by adding the ability to exclude certain actions from being authenticated, adds an additional method (JWT-based authentication).
Fixes and improvements
General
- stop logging HTTP requests twice (#2993)
- remove hls.js from the repository and restore plain MIT license (#3008)
- fix compilation with Windows and git autocrlf (#3010) (#3011)
- fix double 'v' in automatic hls.js bump commits (#3020)
- remove double 'v' from hls.js bump messages (#3040)
- in hooks, allow replacing placeholders with environment (#3044)
- when stopping hooks, stop all their subprocesses too (#3004) (#3087)
- mpegts: emit decode error instead of exiting in case of parse errors (bluenviron/mediacommon#110)
RTSP
- add random value to timestamp of tracks from other protocols (#3071)
- fix infinite loop when parsing specially-crafted headers (bluenviron/gortsplib#521)
- add fuzz tests to all headers (bluenviron/gortsplib#522)
- split headers.Authenticate and headers.Authorization (bluenviron/gortsplib#523)
- support authenticating with SHA-256 digest (bluenviron/gortsplib#524)
- change rtptime.Encoder signature and initialize time to a random value (bluenviron/gortsplib#525)
RTMP
- add new AMF0 encoder and encoder (#3069). This improves performance, security and removes a dependency.
HLS
- in logs, store both ip and port of incoming requests (#3013)
- when alwaysRemux is true, prevent clients from creating muxers (#3015)
- fix crash when muxer is being recreated, improve performance (#3017)
- stop spamming 'stream doesn't contain any supported codec' when hlsAlwaysRemux is true (#3018)
- client: fix race condition when decoding time of MPEG-TS streams (bluenviron/gohlslib#141)
- client: fix race condition when reading absolute time (bluenviron/gohlslib#142)
WebRTC
- return an error when proxying stream with no tracks (#3042)
SRT
- add additional metrics (#2962) by @nerdbaggy
Dependencies
- build(deps): bump golang.org/x/crypto from 0.18.0 to 0.19.0 (#3002)
- bump hls-js to v1.5.4 (#2999). Co-authored-by: mediamtx-bot bot@mediamtx
- bump hls-js to vv1.5.5 (#3019). Co-authored-by: mediamtx-bot bot@mediamtx
- build(deps): bump github.com/bluenviron/mediacommon from 1.9.1 to 1.9.2 (#3030)
- bump hls.js to v1.5.6 (#3038). Co-authored-by: mediamtx-bot bot@mediamtx
- bump hls.js to v1.5.7 (#3072). Co-authored-by: mediamtx-bot bot@mediamtx
- build(deps): bump golang.org/x/crypto from 0.19.0 to 0.20.0 (#3078)
- build(deps): bump github.com/stretchr/testify from 1.8.4 to 1.9.0 (#3090)
- build(deps): bump github.com/pion/rtcp from 1.2.13 to 1.2.14 (#3089)
v1.5.1
Fixes and improvements
General
- playback: add /list endpoint to list available timespans (#2978)
- playback: accept durations written in seconds (#2979)
- playback: make 'format' parameter optional (#2980)
- prevent multiple crashes when reloading the configuration (#2945)
HLS
- fix infinite loop in web client when reading incompatible codecs (#2956). . when a player received a stream with incompatible codecs, it started. polling the server for index.m3u8 in an infinite loop. This was caused. by #2631
- hls, webrtc: in the web page, show connection errors to users (#2957)
- hls, webrtc: in web page, prevent video from overflowing (#2958)
- hls, webrtc: in web page, add shadow to messages (#2959)
- fix crash in case of disk write errors (bluenviron/gohlslib#136) (bluenviron/gohlslib#137)
WebRTC
- hls, webrtc: in the web page, show connection errors to users (#2957)
- hls, webrtc: in web page, prevent video from overflowing (#2958)
- hls, webrtc: in web page, add shadow to messages (#2959)
API
- add endpoints for recording management (#2901) (#2988)
- improve performance by using RWMutex (#2968)
- apidocs: group operations by using tags (#2987)
RTSP
- fix compatibility with some TP-Link cameras (bluenviron/gortsplib#509) (bluenviron/gortsplib#510)
- fix ClockRate() of G711 16khz tracks (bluenviron/gortsplib#511)
- client: prevent UDP listener from closing twice (bluenviron/gortsplib#515)
RPI Camera
- add rpiCameraAWBGains (#2858)
Dependencies
- bump Linux Alpine to 3.19 (https://github.com/bluenviron/mediamtx/issues/2837) (#2953)
- build(deps): bump github.com/google/uuid from 1.5.0 to 1.6.0 (#2939)
- bump hls-js to v1.5.2 (#2948). . Co-authored-by: mediamtx-bot bot@mediamtx
- bump hls-js to v1.5.3 (#2964). . Co-authored-by: mediamtx-bot bot@mediamtx
v1.5.0
New major features
Fixes and improvements
General
- support G711 tracks with multiple channels and custom sample rates (#2891)
- Add Argon2 credential hash support (#2888)
- treat different RTSP formats as different tracks in logs and API (#2907)
- do not wait for HTTP connections to close when shutting down the server (#2909)
- record: use reception time instead of current time in segment names (#2925)
- h264: fix chroma_format_idc value for baseline profile (bluenviron/mediacommon#103)
- support MPEG-2 audio (bluenviron/mediacommon#107) (bluenviron/gortsplib#486)
RTSP
- support G711 multiple channels and custom sample rates (bluenviron/gortsplib#497)
- Fixing issue for SDP avigilon when activating onvif backchannel (bluenviron/gortsplib#479) (bluenviron/gortsplib#501)
SRT
- wait some seconds before returning authentication errors (#2918)
- support standard streamID syntax (#2469) (#2919)
API
Dependencies
v1.4.2
Fixes and improvements
General
- Log start errors of custom commands (#2828) by @jsbohnert
RTSP
- support detecting LPCM formats with payload types 10 and 11 (bluenviron/gortsplib#496)
RTMP
HLS
- client: support reading streams in Low-Latency mode (bluenviron/gohlslib#72) (bluenviron/gohlslib#126)
- muxer: progressively increase SequenceNumber of parts (bluenviron/gohlslib#115). . this prevents warning 'Fragment sequence discontinuity detected' in VLC
- muxer: allow writing audio frames before video frames (bluenviron/gohlslib#116)
- client: correctly sort tracks of multivariant playlists (bluenviron/gohlslib#120)
- client: return ErrClientEOS when a playlist ends (bluenviron/gohlslib#59) (bluenviron/gohlslib#125)
WebRTC
API
Dependencies
- build(deps): bump golang.org/x/term from 0.15.0 to 0.16.0 (#2873)
- build(deps): bump github.com/pion/rtcp from 1.2.12 to 1.2.13 (bluenviron/gortsplib#482)
- build(deps): bump github.com/google/uuid from 1.4.0 to 1.5.0 (bluenviron/gortsplib#483)