Releases: bluenviron/mediamtx
v1.4.0
New features
- support using static sources in paths with regular expressions (#824) (#2799). This allows to proxy requests to other servers by using regular expressions.
Fixes and improvements
General
- support unix timestamp in filenames of recorded segments (#2774) by @neerajkanhere
- fix crash when requesting metrics and RTMP, SRT or WebRTC servers are not present anymore (#2782)
- add RTMPS metrics (#2783)
- always use 'all_others' or 'all' after every other path configuration (#2798)
RTSP
- sdp: fix parsing SDP from UDP technology cameras (bluenviron/gortsplib#474) (bluenviron/gortsplib#478)
- sdp: fix compatibility with Altasec NVRs (bluenviron/gortsplib#476). . (#2762)
HLS
- bump hls-js to v1.4.13 (#2791). . Co-authored-by: mediamtx-bot bot@mediamtx
- fix appending slash when behind a reverse proxy (#2770)
- hls, webrtc: prevent XSS attack when appending slash to paths (#2766) (#2767) (#2772)
- hls, webrtc: fix appending slash to paths that contain slashes (#2773)
RPI Camera
WebRTC
- hls, webrtc: prevent XSS attack when appending slash to paths (#2766) (#2767) (#2772)
- hls, webrtc: fix appending slash to paths that contain slashes (#2773)
- fix propagating query parameters when appending slash to paths (#2771)
Dependencies
v1.3.1
Fixes and improvements
General
- allow using 'fallback' with static sources (#2606) (#2706)
- record: fix invalid segment duration in case of offsets between video/audio (#2477) (#2715)
- h264: fix DTS extraction in case of long NALUs (bluenviron/mediacommon#98)
- h265: improve DTS extractor performance (bluenviron/mediacommon#99)
SRT
- Add query as optional block for SRT publish and read (#2656)
HLS
- fix parsing and generating EXT-X-PLAYLIST-TYPE (bluenviron/gohlslib#108)
- support optional URI in EXT-X-MEDIA tag (bluenviron/gohlslib#104)
- muxer: fix invalid fMP4 BaseTime in case of negative DTS (bluenviron/gohlslib#111)
WebRTC
- fix crash when reading from path 'publish' (#2688) (#2692)
- fix bad quality when converting Opus from WebRTC to LL-HLS (#2499) (#2740)
API
- apidocs: add missing recording settings to PathConf (#2705)
Dependencies
v1.3.0
New features
General
- metrics: add paths_bytes_sent, srt_conns, srt_conns_bytes_received, srt_conns_bytes_sent (#2620) (#2619) (#2629) by @rse
- metrics: expose state of WebRTC sessions (#2662)
- add runOnUnDemand hook (#2645)
WebRTC
- improve connectivity mechanism: add
webrtcAdditionalHosts
and allow to use DNS names in place of IPs; always use a fixed UDP port; allow to disable UDP; do not use a STUN server by default (#2686) - add options (width, height, framerate, audio capture) and store parameters in URL (#1837) (#2167) (#2584) by @Lukinoh
Fixes and improvements
General
- fix crash when publishing to a path with 'runOnDemand' from outside 'runOnDemand' (#2636) (#2637)
- tests: fix race condition in TestPathRunOnDemand (#2663)
- fix setting 'recordDeleteAfter' to zero (#2670) (#2671)
- record: fix deleting segments in case of relative paths (#2526) (#2673)
- record: allow using special characters in recording path (#2674)
RTSP
- rename sourceProtocol into rtspTransport, sourceAnyPortEnable into rtspAnyPort (#2644)
- server: fix crash in case of requests with nil URL (bluenviron/gortsplib#458) by @database64128
RTMP
WebRTC
- fix crash in case of errors during PATCH (#2609) (#2613)
- allow using sourceFingerprint with WebRTC sources (#2618) (#2626)
- restore compatibility when running behind a proxy, in a subpath (#2638)
- prevent pion/webrtc from writing log lines (#2681)
API
HLS
- apply readTimeout to HLS sources (#2627)
- HLS.js usage: bugfix, stability improvements and resilience improvement (#2631)
- muxer: fix discontinuity in part ID (bluenviron/gohlslib#107). . (#2317). . this prevented Low-Latency HLS from running smoothly on Safari
SRT
- fix race condition when disposing late packets (#2648)
Dependencies
- build(deps): bump github.com/pion/interceptor from 0.1.24 to 0.1.25 (#2622)
- build(deps): bump github.com/gorilla/websocket from 1.5.0 to 1.5.1 (#2652)
- build(deps): bump github.com/pion/rtcp from 1.2.10 to 1.2.11 (#2669)
- build(deps): bump golang.org/x/term from 0.13.0 to 0.14.0 (#2667)
- build(deps): bump golang.org/x/crypto from 0.14.0 to 0.15.0 (#2668)
- build(deps): bump github.com/pion/rtcp from 1.2.11 to 1.2.12 (#2676)
- build(deps): bump github.com/pion/rtp from 1.8.2 to 1.8.3 (#2677)
- build(deps): bump github.com/pion/webrtc/v3 from 3.2.21 to 3.2.22 (#2675)
v1.2.1
Fixes and improvements
General
- add environment variable MTX_QUERY to some hooks (#2483) (#2522)
- bump Go to 1.21 (#2546)
- fix crash when setting deprecated settings with environment (#2529) (#2550)
- restart recordings in case of errors (#2439) (#2571)
- fix hot reloading on Windows when letter case changes (#2586) by @jsbohnert
RTSP
- support receiving responses with spaces in CSeq (bluenviron/gortsplib#437) (bluenviron/gortsplib#446)
- support SDPs without leading version (bluenviron/gortsplib#448) (bluenviron/gortsplib#450)
- support cameras with decimal numbers in SDP origin (bluenviron/gortsplib#455). . (#2558)
WebRTC
- fix compatibility with Alexa offers (#2544)
- support WHIP/WHEP DELETE method (#2507) by @rgl
- improve stability by reordering incoming packets (#2570)
- return detailed errors in responses (#2594)
RTMP
RPI Camera
- Fix Raspberry Pi Camera 3 auto focus (#2326) (#2552)
- Switch default autofocus mode to 'continuous' (#2591)
API
- return full configuration in config/paths/list and config/paths/get (#2535) (#2595)
- add path name to config/paths/list and config/paths/get (#2535) (#2596)
- return 500 instead of 404 in case of non-existing items (#2582)
- send error messages in response body (#2518) (#2583)
Dependencies
v1.2.0
New features
- add a new configuration setting
pathDefaults
that allows to change the default parameters of all paths. Existing configurations are fully compatible with the new configuration schema, but the API has been bumped to /v3 in order to support this change (#2455) - allow setting different recording parameters for each path (#2410) (#2457)
- support recording to MPEG-TS (#2505)
- support recording LPCM tracks (#2475)
- add runOnRecordSegmentComplete and rclone integration (#2404) (#2428)
- add runOnRecordSegmentCreate hook (#2451) (#2503)
Fixes and improvements
General
- rename 'all' path configuration into 'all_others' (#2443)
- allow to start/stop recording without disconnecting clients (#2395) (#2434)
- move 'srtReadPassphrase' into the right section (#2435)
- print path of configuration file (#2441)
- fix 'fragment sequence discontinuity' warning when reading record segments with VLC (#2476)
- h264: support empty NALUs inside AVCC (bluenviron/mediacommon#84). . (#2375)
- h265: fix DTS extraction of streams with short_term_ref_pic_set_sps_flag=1 (bluenviron/mediacommon#95). . (#2417)
RTSP
- support SDPs without session name (bluenviron/gortsplib#439). . (#2473)
RTMP
HLS
- muxer: generate multivariant playlist and init.mp4 after a segment is ready (bluenviron/gohlslib#99)
- muxer: regenerate init.mp4 only when its content changes (bluenviron/gohlslib#100)
WebRTC
- Supports webrtc interface filtering on server (#2460) by @PieterFabry
- add Location header to CORS-allowed headers (#2453) by @rgl
- print lost packets (#2468)
- fix reading Opus stereo tracks with Chrome (#2043) (#2470)
- disallow publishing screen on devices that don't support it (#2066) (#2471)
- optimize publish page for mobile devices (#2066) (#2472)
- expose ice servers on OPTIONS CORS requests (#2479) by @sainak
API
- return 400 in case of non-existent config fields (#2425)
- save errors in logs (#2426)
- fix crash when retrieving RTMP and SRT connections (#2430) by @p4xx07
- apidocs: remove invalid value from PathSourceOrReader (#2450)
Dependencies
- build(deps): bump github.com/abema/go-mp4 from 0.13.0 to 1.0.0 (#2413)
- build(deps): bump github.com/pion/rtp from 1.8.1 to 1.8.2 (#2415)
- build(deps): bump github.com/pion/webrtc/v3 from 3.2.20 to 3.2.21 (#2414)
- build(deps): bump github.com/abema/go-mp4 from 1.0.0 to 1.1.0 (#2421)
- build(deps): bump github.com/pion/interceptor from 0.1.19 to 0.1.20 (#2437)
- build(deps): bump github.com/abema/go-mp4 from 1.1.0 to 1.1.1 (#2447)
- build(deps): bump github.com/pion/interceptor from 0.1.20 to 0.1.21 (#2456)
- build(deps): bump golang.org/x/crypto from 0.13.0 to 0.14.0 (#2465)
- build(deps): bump github.com/pion/interceptor from 0.1.21 to 0.1.22 (#2482)
- build(deps): bump github.com/alecthomas/kong from 0.8.0 to 0.8.1 (#2493)
- build(deps): bump golang.org/x/net from 0.15.0 to 0.17.0 (#2501)
v1.1.1
Fixes and improvements
General
- fix default value of some settings (#2367): rtmpServerKey, rtmpServerCert, recordPath, rpiCameraExposure,. rpiCameraAWB, rpiCameraDenoise, rpiCameraMetering, rpiCameraAfMode,. rpiCameraAfRange, rpiCameraAfSpeed were not set correctly when missing in the configuration file.
- fix crash when processing H265 (#2378) (#2381)
- normalize configuration (#2399)
- rename 'external commands' into 'hooks' (#2400)
Recording
- support recording AC-3 tracks (#2376)
- support recording M-JPEG tracks (#2391)
- update recordDeleteAfter documentation (#2361) (#2362)
- automatically set 'record: yes' when not specified (#2366)
- fix race condition wen record agent is closing (#2369)
RTSP
- fix timestamp of outgoing RTSP/RTP packets in case of aggregated access units (#2389)
- fix compatibility with Annex-B encoded H264 SPS/PPS (bluenviron/gortsplib#402) (bluenviron/gortsplib#426)
- discard invalid H264 parameters (bluenviron/gortsplib#431). . (#2348)
SRT
- support AC-3 tracks in SRT and UDP; support recording AC-3 tracks (#2376)
- Support SRT encryption passphrases on configured paths (#2385)
UDP
- support AC-3 tracks in SRT and UDP; support recording AC-3 tracks (#2376)
RPI Camera
- rpi camera: add additional checks on configuration (#2368)
WebRTC
v1.1.0
New features
-
Add native recording. This allows to record streams without using FFmpeg in a fault tolerant, browser compatible format (#1399) (#2255).
-
Add additional custom commands: runOnDisconnect, runOnNotReady, runOnUnread (#1464) (#2355)
-
Add additional environment variables to custom commands (#1414) (#2356). New variables: MTX_CONN_TYPE, MTX_CONN_ID, MTX_SOURCE_TYPE, MTX_SOURCE_ID, MTX_READER_TYPE, MTX_READ_ID
Fixes and improvements
General
- print the reason why a source is started or stopped (#2322)
- search for configuration file in various paths, print paths if configuration is not found (#1993) (#2276) (#2357)
Codecs
- mpegts: readd PCR to outgoing packets (bluenviron/mediacommon#74). . this is needed to read H265 tracks with VLC+VDPAU hardware encoder. (and is probably needed by other combinations too)
- h265: cleanup DTS extractor (bluenviron/mediacommon#75)
RTSP
- normalize debug logging of requests / responses (#2321)
- rtptime: fix crash in case of packets from tracks with invalid clock rate (bluenviron/gortsplib#400)
- fix unability to get PTS of H265 streams (bluenviron/gortsplib#401)
- fix compatibility with Revotech cameras (bluenviron/gortsplib#402) (bluenviron/gortsplib#404)
- client: fix enforcing timeout to responses (bluenviron/gortsplib#406)
- client: fix race condition that can lead to crash (bluenviron/gortsplib#407)
- client: log every incoming response (bluenviron/gortsplib#409)
- client: accept responses only if their CSeq corresponds to requests (bluenviron/gortsplib#410)
- server: stop sending multicast packets when all multicast readers have disconnected (bluenviron/gortsplib#411)
- client: support cameras that don't reply to keepalives (bluenviron/gortsplib#412). . (#2302)
- fix reading and writing multicast packets in case of multiple interfaces (bluenviron/gortsplib#413). . (#2029)
- fix wrong encoding when frame size equals packet size (bluenviron/gortsplib#416)
- optimize multicast on Linux by listening on a single IP (bluenviron/gortsplib#417). . (#2133)
RTMP
HLS
- bump hls-js to v1.4.12 (#2283)
SRT
- support publishing and reading MPEG-1/2/4 video with SRT and UDP/MPEG-TS (#2277)
UDP
- fix reading two streams with same port and different multicast IP (#2133) (#2332)
- support publishing and reading MPEG-1/2/4 video with SRT and UDP/MPEG-TS (#2277)
API
Dependencies
- build(deps): bump golang.org/x/term from 0.11.0 to 0.12.0 (#2294)
- build(deps): bump github.com/pion/webrtc/v3 from 3.2.17 to 3.2.18 (#2292)
- build(deps): bump golang.org/x/crypto from 0.12.0 to 0.13.0 (#2299)
- build(deps): bump github.com/pion/ice/v2 from 2.3.10 to 2.3.11 (#2300)
- build(deps): bump golang.org/x/net from 0.14.0 to 0.15.0 (#2301)
- build(deps): bump github.com/pion/webrtc/v3 from 3.2.18 to 3.2.19 (#2328)
- build(deps): bump github.com/pion/interceptor from 0.1.18 to 0.1.19 (#2329)
- build(deps): bump github.com/pion/webrtc/v3 from 3.2.19 to 3.2.20 (#2340)
v1.0.3
v1.0.2
Fixes and improvements
General
- fix changing log level with hot reloading or API (#2278)
RTSP
- server: fix crash when calling RECORD and PAUSE (bluenviron/gortsplib#392)
- check validity of SPS/PPS in SDPs (bluenviron/gortsplib#394)
SRT
- fix memory leak during reader disconnection (#2273)
RTMP
- fix RTMPE handshake error when a public key starts with zero (#2269)
v1.0.1
Fixes and improvements
General
- print warning when the write queue is full (#2251)
- limit logging of decode errors (#2253)
- fix maxReaders limit in case of multiple tracks (#2246) (#2264)
Codecs
- h264, h265: raise MaxAccessUnitSize to 8 MiB (bluenviron/mediacommon#59) by @database64128
- Raise maximum NALU count (bluenviron/mediacommon#64) by @milaq
- h264: add limit on maximum number of reordered frames (bluenviron/mediacommon#65)
- mpegts: make 'PTS is missing' a decode error (bluenviron/mediacommon#67)
- h264: support frame_mbs_only_flag = 0 (bluenviron/mediacommon#68)
- av1: fix parsing sequence headers from libsvtav1 (bluenviron/mediacommon#69)
RTSP
- add Speex format
- decode RTP time globally
- emit a decode error in case of packets with wrong SSRC
- allow publishers to set the title of the stream (#979)
- support routing ULPFEC group definitions
- client: support server-sent requests (bluenviron/gortsplib#93) (bluenviron/gortsplib#378)
- client: stop main routine immediately in case of a read error (bluenviron/gortsplib#379)
- re-enable consistency checks on clock rate of tracks (bluenviron/gortsplib#382)
- discard invalid video tracks (bluenviron/gortsplib#381) (bluenviron/gortsplib#383)
- ringbuffer: when buffer is full, preserve queued data (bluenviron/gortsplib#386)
- ringbuffer: discard pending data when buffer is closed (bluenviron/gortsplib#387)
RTMP
- allow RTMP streaming with codecid=av01 or hvc1 (#2232) by @ph0b
- support publishing AV1/H265 with OBS 30 (#2217) (#2234)
- support publishing VP9 tracks with RTMP (#2247)
- fix conversion of AV1/VP9 tracks from HLS/RTMP to RTSP (#2263)
- support ingesting RTMPE streams (#2189)
- add limit on message body size (#2252)
HLS
- embed hls.js into the server (#2202) (#2236)
- bump hls-js to v1.4.10 (#2239)
- fix conversion of AV1/VP9 tracks from HLS/RTMP to RTSP (#2263)
- fix wrong protocol sent to external authentication server (#2213)
- hls source: fix formatting debug log messages (#2243)
- return 404 when requesting hls.min.js.map (#2262)
Dependencies
- build(deps): bump github.com/pion/webrtc/v3 from 3.2.14 to 3.2.15 (#2216)
- build(deps): bump github.com/pion/webrtc/v3 from 3.2.15 to 3.2.16 (#2220)
- build(deps): bump github.com/google/uuid from 1.3.0 to 1.3.1 (#2228)
- build(deps): bump github.com/pion/webrtc/v3 from 3.2.16 to 3.2.17 (#2229)
- build(deps): bump github.com/asticode/go-astits from 1.12.0 to 1.13.0 (bluenviron/mediacommon#56)