Skip to content

Releases: bluenviron/mediamtx

v1.8.4

07 Jul 19:41
1a4fd9c
Compare
Choose a tag to compare

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

RTMP

  • fix publishing from DJI FlightHub Sync (#3301) (#3504)

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

  • process connection requests in parallel (#3382) (#3534)

Dependencies

  • build(deps): bump github.com/gorilla/websocket from 1.5.2 to 1.5.3 (#3470)
  • build(deps): bump golang.org/x/sys from 0.21.0 to 0.22.0 (#3530)
  • build(deps): bump golang.org/x/crypto from 0.24.0 to 0.25.0 (#3532)
  • build(deps): bump golang.org/x/term from 0.21.0 to 0.22.0 (#3533)
  • bump dependencies (#3537)

v1.8.3

12 Jun 15:45
9554fc4
Compare
Choose a tag to compare

Fixes and improvements

General

API

  • add CORS headers on non-existing pages too (#1792) (#3410)
  • fix crash when itemsPerPage is zero and there are items (#3425)

RTMP

HLS

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

19 May 12:53
0ace308
Compare
Choose a tag to compare

Fixes and improvements

General

API

  • make replace paths idempotent (#3362). Don't return a 404 error if the path doesn't exist yet by @bouk

RTSP

HLS

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

05 May 17:13
dcb5b45
Compare
Choose a tag to compare

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

RTMP

  • fix error when reading metadata (#3302). some rtmp client will send set chunk size after publish stream

WebRTC

  • fix error when charset is in Content-Type (#3126) (#3318)

Dependencies

  • build(deps): bump github.com/pion/rtp from 1.8.5 to 1.8.6 (#3288)

v1.8.0

21 Apr 15:28
3d69edb
Compare
Choose a tag to compare

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

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

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

  • build(deps): bump github.com/pion/interceptor from 0.1.28 to 0.1.29 (#3259)
  • bump Go to 1.22 (#3279)

v1.7.0

14 Apr 17:40
099a6e8
Compare
Choose a tag to compare

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

04 Mar 13:41
dec395c
Compare
Choose a tag to compare

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

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

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

04 Feb 23:08
b92c8c2
Compare
Choose a tag to compare

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

RPI Camera

  • add rpiCameraAWBGains (#2858)

Dependencies

v1.5.0

23 Jan 20:07
cf7088a
Compare
Choose a tag to compare

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

SRT

  • wait some seconds before returning authentication errors (#2918)
  • support standard streamID syntax (#2469) (#2919)

API

  • return 404 when an entity is not found (#2582) (#2920)

Dependencies

  • build(deps): bump golang.org/x/crypto from 0.17.0 to 0.18.0 (#2896)
  • build(deps): bump github.com/abema/go-mp4 from 1.1.1 to 1.2.0 (#2913)
  • build(deps): bump github.com/datarhei/gosrt from 0.5.5 to 0.5.7 (#2912)
  • bump hls-js to v1.5.1 (#2903)

v1.4.2

07 Jan 16:58
b8b64fd
Compare
Choose a tag to compare

Fixes and improvements

General

RTSP

RTMP

  • support publishing G711 and LPCM tracks (#2857) (#2884)

HLS

WebRTC

  • prevent NotReadableError when publishing with Android (#2698) (#2842)

API

  • add 'query' field to RTMP, RTSP, SRT and WebRTC clients (#2689) (#2844)

Dependencies