# mediamtx changelog > Ready-to-use Media-over-QUIC / SRT / WebRTC / RTSP / RTMP / LL-HLS / MPEG-TS / RTP live media server and media proxy that allows to read, publish, proxy, record and playback real-time video and audio streams. - Vendor: bluenviron - Category: Developer Tools - Official site: https://mediamtx.org/ - Tracked by: What's New (https://whatsnew.fyi/product/mediamtx) - Harvested from: GitHub (bluenviron/mediamtx) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### v1.20.0 - Date: 2026-08-05 - Version: v1.20.0 - Original notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.20.0 - Permalink: https://whatsnew.fyi/product/mediamtx/releases/v1.20.0 - **added** — Support forwarding streams natively with destinations for each path configuration using RTSP, RTMP, and SRT protocols - **added** — Support publishing and reading through native QUIC - **added** — Support draft-17 for Media-Over-QUIC - **added** — Support draft-16 for Media-Over-QUIC - **added** — Add OpenAPI definition of the Playback server - **fixed** — Support for regexp groups greater than 10 - **changed** — Increase max namespace field count to 32 for Media-Over-QUIC - **fixed** — Fix inability to read some AV1 streams with RTSP by restoring stripping of temporal unit delimiters - **changed** — Log write errors in RTSP - **fixed** — Make multicast errors on single interfaces non-fatal to allow writing to other interfaces - **fixed** — Fix parsing URL from multitrack OBS in RTMP server - **changed** — Change mapping between URL and tcURL, app, streamKey in RTMP client - **fixed** — Fix compatibility with YouTube in RTMP client - **fixed** — Fix goroutine leak during part rotation in HLS muxer - **changed** — Remove lower limit on AAC access unit count in MPEG-TS segments for HLS muxer - **changed** — Recompute PTS of MPEG-TS AAC in HLS muxer - **changed** — Sort WebRTC tracks deterministically by MID, RID, trackID and streamID - **fixed** — Fix packet corruption when reading G722 in WebRTC - **changed** — Reset recomputed audio PTS if it drifts too much in WebRTC - **fixed** — Fix packet lost error when routing streams from WebRTC by recomputing sequence numbers after empty packets ##### New major features General * support forwarding streams natively (https://github.com/bluenviron/mediamtx/issues/5558) It is now possible to define forward destinations for each path configuration. For each destination, the server will create a client that will forward the stream to the intended destination. Supported protocols are RTSP, RTMP, SRT. API and metrics have also been improved to allow monitoring the new forwarding system. Documentation: https://mediamtx.org/docs/features/forward Media-Over-QUIC * support publishing and reading through native QUIC (https://github.com/bluenviron/mediamtx/issues/6039) * support draft-17 (https://github.com/bluenviron/mediamtx/issues/6040) * support draft-16 (https://github.com/bluenviron/mediamtx/issues/6045) ##### Fixes and improvements General * docs: add missing MoQ ports (https://github.com/bluenviron/mediamtx/issues/5983) * Add OpenAPI definition of the Playback server (https://github.com/bluenviron/mediamtx/issues/5546) * fix support for regexp groups greater than 10 (https://github.com/bluenviron/mediamtx/issues/6033) Media-Over-QUIC * increase max namespace field count to 32 (https://github.com/bluenviron/mediamtx/issues/6043) * link primitives to draft-17 sections (https://github.com/bluenviron/mediamtx/issues/6044) RTSP * fix inability to read some AV1 streams with RTSP (https://github.com/bluenviron/mediamtx/issues/6001) (https://github.com/bluenviron/mediamtx/issues/6006) Since v1.16.0, temporal unit delimiters were not stripped from AV1 streams anymore. This has been restored, healing AV1 streams read with RTSP. * log write errors (https://github.com/bluenviron/mediamtx/issues/6023) * make multicast errors on single interfaces non-fatal (https://github.com/bluenviron/gortsplib/issues/1115) (https://github.com/bluenviron/mediamtx/issues/5574) When writing multicast packets to several interfaces at one, a write error to a single interface was fatal and prevented writing to the other ones. Fix this. RTMP * server: fix parsing URL from multitrack OBS (https://github.com/bluenviron/mediamtx/issues/6007) (https://github.com/bluenviron/gortmplib/issues/93) * client: change mapping between URL and tcURL, app, streamKey (https://github.com/bluenviron/gortmplib/issues/94) (https://github.com/bluenviron/mediamtx/issues/4676) URLs passed to clients are now mapped into RTMP-native fields (tcURL, app, streamKey) in this way: tcURL contains URL without credentials and without fragment, app contains path and query of tcURL, streamKey contains the fragment. * client: fix compatibility with YouTube (https://github.com/bluenviron/mediamtx/issues/5558) (https://github.com/bluenviron/gortmplib/issues/95) HLS * muxer: fix goroutine leak during part rotation (https://github.com/bluenviron/gohlslib/issues/372) (https://github.com/bluenviron/gohlslib/issues/373) * muxer: remove lower limit on AAC access unit count in MPEG-TS segments (https://github.com/bluenviron/gohlslib/issues/329) (https://github.com/bluenviron/gohlslib/issues/377) * muxer: recompute PTS of MPEG-TS AAC (https://github.com/bluenviron/gohlslib/issues/379) iOS requires a precise timestamp that is often not available in AAC streams. Recompute timestamp from scratch. WebRTC * sort tracks in a deterministic way (https://github.com/bluenviron/mediamtx/issues/5988) (https://github.com/bluenviron/mediamtx/issues/5989) When ingesting tracks with WebRTC, track order was randomized, preventing multi-track always-available streams from working reliably, since they require tracks to be ordered in a precise way. WebRTC tracks are not ordered by MID, RID, trackID and streamID respectively. * fix packet corruption when reading G722 (https://github.com/bluenviron/mediamtx/issues/6000) * reset recomputed audio PTS if it drifts too much (https://github.com/bluenviron/mediamtx/issues/6021) * fix "packet lost" error when routing streams from WebRTC (https://github.com/bluenviron _[Truncated at 4000 characters — full notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.20.0]_ ### v1.19.3 - Date: 2026-07-23 - Version: v1.19.3 - Original notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.19.3 - Permalink: https://whatsnew.fyi/product/mediamtx/releases/v1.19.3 - **fixed** — Fix error message where 'all' is a synonym for 'all_others' - **fixed** — Fix clearing lists with environment variables MTX_AUTHINTERNALUSERS_0_IPS, MTX_LOGDESTINATIONS and MTX_RTSPTRANSPORTS by setting them to an empty value - **added** — Add runOnOnline and runOnOffline hooks triggered when a stream is online - **changed** — Rename runOnReady into runOnAvailable and runOnNotReady into runOnUnavailable - **fixed** — Fix wrong PTS and wrong playback of alwaysAvailableFile by properly considering PTS offset of samples and using DTS-based sleep between samples - **security** — Avoid potential timing attack when validating SHA256 credentials by using ConstantTimeCompare instead of == operator - **changed** — Normalize authentication error messages to log as soon as possible at warn level with consistent message regardless of author or protocol - **fixed** — Ask for credentials only in case of protocols that support it to avoid unnecessary waiting and improve anti-brute force algorithm application - **fixed** — Fix support for ctts version 0 in pmp4 - **changed** — Generate most of OpenAPI automatically including enums and structs - **fixed** — Fix race condition during Media-Over-QUIC startup by allocating HTTP server only after MoQ server initialization - **fixed** — Fix several panics and OOM errors in Media-Over-QUIC by checking limits before allocating memory - **added** — Support draft-19 of Media-Over-QUIC specification - **added** — Support subscribing the same Media-Over-QUIC track multiple times - **fixed** — Prevent excessive CPU consumption in Media-Over-QUIC reorderer by iterating over internal pending packets instead of maxGroupID - **security** — Prevent cross-origin unauthorized access in WebRTC and HLS by returning '*' in Access-Control-Allow-Origins when AllowOrigins is a wildcard - **changed** — Restrict UDP port range to 32768-60999 for RTSP which is the default Linux ephemeral port range - **changed** — Use session ID in RTSP requests to the external authentication server - **fixed** — Fix parsing RTCP of some Hanwha cameras - **fixed** — Fix RTSP client UDP ports not being released after close - **fixed** — Fix SRT compatibility with StreamToStudio app ##### Fixes and improvements General * fix error message (https://github.com/bluenviron/mediamtx/issues/5922) 'all' is a synonym for 'all_others' * fix clearing lists with environment variables (https://github.com/bluenviron/mediamtx/issues/5410) (https://github.com/bluenviron/mediamtx/issues/5924) MTX_AUTHINTERNALUSERS_0_IPS, MTX_LOGDESTINATIONS and MTX_RTSPTRANSPORTS can now be used to clear their corresponding list by setting them to an empty value. * add runOnOnline / runOnOffline hooks (https://github.com/bluenviron/mediamtx/issues/5399) (https://github.com/bluenviron/mediamtx/issues/5956) These are triggered and a stream is online (i.e. not just provided by an offline segment). * rename runOnReady into runOnAvailable, runOnNotReady into runOnUnavailable (https://github.com/bluenviron/mediamtx/issues/5957) * fix wrong PTS and wrong playback of alwaysAvailableFile (https://github.com/bluenviron/mediamtx/issues/5436) (https://github.com/bluenviron/mediamtx/issues/5960) PTS offset of samples was not properly considered, and sleep between samples was PTS-based instead of being DTS-based. * avoid potential timing attack when validating SHA256 credentials (https://github.com/bluenviron/mediamtx/issues/5961) The == operator is vulnerable to timing attacks as it short-circuits on a mismatch. Use ConstantTimeCompare to avoid this vector. Co-authored-by: Tristan Matthews * normalize authentication error messages (https://github.com/bluenviron/mediamtx/issues/5421) (https://github.com/bluenviron/mediamtx/issues/5959) Log authentication errors as soon as possible, use the "warn" level, use the same message whatever the author or protocol. * adjust code to prevent security scan false positives (https://github.com/bluenviron/mediamtx/issues/5963) about string escaping. * ask for credentials only in case of protocols that support it (https://github.com/bluenviron/mediamtx/issues/5966) When clients connect with some protocols (SRT, RTMP), they are unable to provide credentials even if they are asked to. In this case, it's useless to wait for credentials, and it's better to immediately log authentication errors and apply the anti-brute force algorithm. * docs: add fail2ban integration (https://github.com/bluenviron/mediamtx/issues/5016) (https://github.com/bluenviron/mediamtx/issues/5967) * add comment to prevent security scan false positives (https://github.com/bluenviron/mediamtx/issues/5973) * pmp4: fix support for ctts version 0 (https://github.com/bluenviron/mediamtx/issues/5436) (https://github.com/bluenviron/mediacommon/issues/343) API * generate most of OpenAPI automatically (https://github.com/bluenviron/mediamtx/issues/5918) enums and structs are now generated automatically. This eliminates some inconsistencies and makes development easier. Media-Over-QUIC * fix race condition during startup (https://github.com/bluenviron/mediamtx/issues/5965) allocate the HTTP server only after the MoQ server has been initialized. * fix several panics and OOM errors (https://github.com/bluenviron/mediamtx/issues/5964) Check for limits before allocating memory by using sizes passed from the remote peer. Also add fuzzing to all MoQ primitives. * support draft-19 of the specification (https://github.com/bluenviron/mediamtx/issues/5968) * support draft-19 of the specification * support subscribing the same track multiple times. * prevent excessive CPU consumption in reorderer (https://github.com/bluenviron/mediamtx/issues/5976) do not iterate by maxGroupID (passed by user) but iterate by internal pending packets (uncontrolled by user). WebRTC * prevent cross-origin unauthorized access (https://github.com/bluenviron/mediamtx/issues/5975) when a user had previously inserted credentials into a MediaMTX instance through a browser, and AllowOrigins was set to a wildcard, third-party websites visited by the user were allowed to read streams without restrictions. This is now prevented by returnin _[Truncated at 4000 characters — full notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.19.3]_ ### v1.19.2 - Date: 2026-06-28 - Version: v1.19.2 - Original notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.19.2 - Permalink: https://whatsnew.fyi/product/mediamtx/releases/v1.19.2 - **fixed** — Fix panic when MP4 muxer flushes with no samples - **fixed** — Redact sensitive headers in HTTP debug logs - **fixed** — Decode timezone offset minutes correctly in recordstore - **changed** — Improve HTTP server performance by logging incoming requests without cloning - **fixed** — Prevent truncation of 64-bit values on 32-bit platforms - **added** — Add rtspScale parameter to inject Scale header on PLAY - **changed** — Switch automatically to TCP in case of H264 packetization-mode=0 - **added** — Support VP8 streams with multiple partitions - **changed** — Allow FU-A and STAP-A packets with H264 packetization-mode 0 - **changed** — Skip unresolvable webrtcAdditionalHosts entries instead of aborting - **added** — Support encoding primary stream with MJPEG on RPI Camera - **added** — Support encoding secondary stream with H264 on RPI Camera - **added** — Add unified rpiCameraH264Profile and rpiCameraH264Level parameters - **fixed** — Fix race condition that prevents decoding the stream by always sending SPS/PPS in-band - **changed** — Improve performance by computing frame size once ##### Fixes and improvements General * playback: fix panic when MP4 muxer flushes with no samples (https://github.com/bluenviron/mediamtx/issues/5867) * redact sensitive headers in HTTP debug logs (https://github.com/bluenviron/mediamtx/issues/5873) * fix(recordstore): decode timezone offset minutes correctly (https://github.com/bluenviron/mediamtx/issues/5884) * improve HTTP server performance (https://github.com/bluenviron/mediamtx/issues/5886) log incoming requests without cloning. * prevent truncation of 64-bit values on 32-bit platforms (https://github.com/bluenviron/mediamtx/issues/5902) RTSP * add rtspScale parameter to inject Scale header on PLAY (https://github.com/bluenviron/mediamtx/issues/5800) * client: switch automatically to TCP in case of H264 packetization-mode=0 (https://github.com/bluenviron/gortsplib/issues/1086) * support VP8 streams with multiple partitions (https://github.com/bluenviron/mediamtx/issues/5426) (https://github.com/bluenviron/gortsplib/issues/1090) * allow FU-A and STAP-A packets with H264 packetization-mode 0 (https://github.com/bluenviron/mediamtx/issues/5887) (https://github.com/bluenviron/gortsplib/issues/1092) WebRTC * skip unresolvable webrtcAdditionalHosts entries instead of aborting (https://github.com/bluenviron/mediamtx/issues/5845) RPI Camera * support encoding primary stream with MJPEG (2/2) (https://github.com/bluenviron/mediamtx/issues/5892) * support encoding secondary stream with H264 (2/2) (https://github.com/bluenviron/mediamtx/issues/4485) (https://github.com/bluenviron/mediamtx/issues/5898) * add unified rpiCameraH264Profile, rpiCameraH264Level params (https://github.com/bluenviron/mediamtx/issues/5894) These replace rpiCameraHardwareH264Profile, rpiCameraHardwareH264Level, rpiCameraSoftwareH264Profile, rpiCameraSoftwareH264Level. * fix race condition that prevents decoding the stream (https://github.com/bluenviron/mediamtx-rpicamera/issues/109) (https://github.com/bluenviron/mediamtx/issues/5861) When a player immediately connects to a newly-created stream, SPS/PPS might not be available, neither in the SDP and neither in-band. Prevent the issue by always sending SPS/PPS in-band. * improve performance by computing frame size once (https://github.com/bluenviron/mediamtx-rpicamera/issues/111) * fix wrong timestamp being passed to openh264 (https://github.com/bluenviron/mediamtx-rpicamera/issues/114) Dependencies * code.cloudfoundry.org/bytefmt updated from v0.76.0 to v0.78.0 * github.com/abema/go-mp4 updated from v1.6.0 to v1.7.1 * github.com/bluenviron/gortsplib/v5 updated from v5.6.0 to v5.6.1 * github.com/bluenviron/mediacommon/v2 updated from v2.9.0 to v2.9.1 * github.com/matthewhartstonge/argon2 updated from v1.5.4 to v1.5.5 * github.com/pion/sdp/v3 updated from v3.0.18 to v3.0.19 * github.com/quic-go/webtransport-go updated from v0.10.0 to v0.11.0 * github.com/pion/srtp/v3 updated from v3.0.11 to v3.0.12 * github.com/bluenviron/mediamtx-rpicamera updated from v2.6.0 to v2.8.0 ##### Security Binaries are compiled from source code by the [Release workflow](https://github.com/bluenviron/mediamtx/actions/workflows/release.yml), which is a fully-visible process that prevents any change or external interference in produced artifacts. Checksums of binaries are also published in a public blockchain by using [GitHub Attestations](https://docs.github.com/en/actions/concepts/security/artifact-attestations), and they can be verified by running: ``` ls mediamtx_* | xargs -L1 gh attestation verify --repo bluenviron/mediamtx ``` You can verify checksums of binaries by downloading `checksums.sha256` and running: ``` cat checksums.sha256 | grep "$(ls mediamtx_*)" | sha256sum --check ``` ### v1.19.1 - Date: 2026-06-10 - Version: v1.19.1 - Original notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.19.1 - Permalink: https://whatsnew.fyi/product/mediamtx/releases/v1.19.1 - **added** — Support using regexp groups in every part of a source URL - **changed** — Improve anti-brute force mechanism by delaying authentication failure responses by a random amount of time and using the same mechanism with all users - **changed** — Limit size of HTTP requests shown in debug logs - **added** — Print body of selected HTTP responses when log level is debug - **fixed** — Fix race condition when closing Media-over-QUIC server where some sessions were hanging if concurrently being closed by the remote peer - **changed** — Rename moqHTTPS2Address into moqHTTP2Address and moqHTTPS3Address into moqHTTP3Address - **added** — Support PROXY protocol v1/v2 on RTMP, RTMPS, RTSP, and RTSPS TCP listeners so real client IPs are visible when running behind L4 proxies - **fixed** — Restore support for H264 packetization-mode 0 by receiving such streams with TCP and automatically remuxing them into streams with packetization-mode 1 ##### Fixes and improvements General * support using regexp groups in every part of a source URL (https://github.com/bluenviron/mediamtx/issues/5766) (https://github.com/bluenviron/mediamtx/issues/5779) * improve anti-brute force mechanism (https://github.com/bluenviron/mediamtx/issues/5835) delay authentication failure responses by a random amount of time, use the same anti-brute force mechanism with all users. * limit size of HTTP requests shown in debug logs (https://github.com/bluenviron/mediamtx/issues/5858) * print body of selected HTTP responses when log level is debug (https://github.com/bluenviron/mediamtx/issues/5859) Media-over-QUIC * fix race condition when closing server (https://github.com/bluenviron/mediamtx/issues/5836) some sessions were hanging if they were concurrently being closed by the remote peer. * rename moqHTTPS2Address into moqHTTP2Address, moqHTTPS3Address into moqHTTP3Address (https://github.com/bluenviron/mediamtx/issues/5841) RTSP * support PROXY protocol (https://github.com/bluenviron/mediamtx/issues/5754) Support PROXY protocol v1/v2 on RTMP, RTMPS, RTSP, and RTSPS TCP listeners so real client IPs are visible when running behind L4 proxies (nginx stream, HAProxy, AWS NLB). * restore support for H264 packetization-mode 0 (https://github.com/bluenviron/mediamtx/issues/5846) (https://github.com/bluenviron/mediamtx/issues/5857) H264 streams with packetization-mode=0 cannot be routed with UDP since packets are too big. Inbound streams with packetization-mode=0 are blocked by the server since v1.19.0 but this caused compatibility issues with some cameras. The server is now able to receive such streams with TCP, and automatically remuxes them in streams with packetization-mode=1, which can be routed freely. RTMP * support PROXY protocol (https://github.com/bluenviron/mediamtx/issues/5754) Support PROXY protocol v1/v2 on RTMP, RTMPS, RTSP, and RTSPS TCP listeners so real client IPs are visible when running behind L4 proxies (nginx stream, HAProxy, AWS NLB). Dependencies * code.cloudfoundry.org/bytefmt updated from v0.74.0 to v0.76.0 * github.com/bluenviron/gortsplib/v5 updated from v5.5.4 to v5.6.0 * github.com/pion/ice/v4 updated from v4.2.7 to v4.2.8-0.20260604162030-72f5001c4596 * github.com/pion/webrtc/v4 updated from v4.2.14 to v4.2.15 * github.com/quic-go/quic-go updated from v0.59.0 to v0.60.0 * golang.org/x/crypto updated from v0.52.0 to v0.53.0 * golang.org/x/net updated from v0.55.0 to v0.56.0 * golang.org/x/sync updated from v0.20.0 to v0.21.0 * golang.org/x/sys updated from v0.45.0 to v0.46.0 * golang.org/x/term updated from v0.43.0 to v0.44.0 * github.com/pion/dtls/v3 updated from v3.1.3 to v3.1.4 * github.com/pion/stun/v3 updated from v3.1.4 to v3.1.5 * github.com/pion/turn/v5 updated from v5.0.7 to v5.0.9 * golang.org/x/text updated from v0.37.0 to v0.38.0 * github.com/pires/go-proxyproto v0.12.0 added ##### Security Binaries are compiled from source code by the [Release workflow](https://github.com/bluenviron/mediamtx/actions/workflows/release.yml), which is a fully-visible process that prevents any change or external interference in produced artifacts. Checksums of binaries are also published in a public blockchain by using [GitHub Attestations](https://docs.github.com/en/actions/concepts/security/artifact-attestations), and they can be verified by running: ``` ls mediamtx_* | xargs -L1 gh attestation verify --repo bluenviron/mediamtx ``` You can verify checksums of binaries by downloading `checksums.sha256` and running: ``` cat checksums.sha256 | grep "$(ls mediamtx_*)" | sha256sum --check ``` ### v1.19.0 - Date: 2026-06-02 - Version: v1.19.0 - Original notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.19.0 - Permalink: https://whatsnew.fyi/product/mediamtx/releases/v1.19.0 - **added** — Support reading and publishing with Media-over-QUIC protocol - **added** — Support reading and writing FLAC in RTMP - **added** — Support reading and publishing FLAC in HLS - **added** — Add user agent field to RTMP, RTSP, WebRTC, and HLS - **added** — Add --check-version command line flag to check whether a new version is available without upgrading - **changed** — Use file name suffix for OS-specific code wherever possible - **changed** — RTSP client trigger TCP timeout only if nothing is received, now a keepalive response from the server is enough - **changed** — Use timestamp of frame in RPI Camera text overlay - **fixed** — Fix hot reloading when metrics server is reloaded for SRT server - **fixed** — Fix hot reloading when RTMPS server is reloaded for API server - **fixed** — RTSP SDP support non-standard 'meta' media type - **fixed** — RTMP client add FLAC fourCC support - **fixed** — Do not exit in case of undocumented Flash control messages in RTMP - **fixed** — HLS muxer fix race condition when generating playlist - **fixed** — HLS muxer use coherent version in all playlists - **fixed** — WebRTC fix connectivity after network changes - **removed** — RTSP forbid H264 packetization mode zero ##### New major features Media-over-QUIC * support reading and publishing with Media-over-QUIC (https://github.com/bluenviron/mediamtx/issues/5815) Media-over-QUIC is a streaming protocol built upon cutting edge protocols (QUIC, HTTP3) and browser APIs (WebTransport, WebCodecs). It's slightly faster than WebRTC, has an advanced data recovery mechanism, it supports additional codecs (FLAC) and is less complicated to route. Check the [documentation](https://mediamtx.org/docs/publish/moq-clients) for instructions and details. RTMP * support reading and writing FLAC (https://github.com/bluenviron/mediamtx/issues/5778) (https://github.com/bluenviron/mediamtx/issues/5789) HLS * support reading and publishing FLAC (https://github.com/bluenviron/mediamtx/issues/5778) (https://github.com/bluenviron/mediamtx/issues/5791) ##### Fixes and improvements General * Add user agent field to RTMP, RTSP, WebRTC, and HLS (https://github.com/bluenviron/mediamtx/issues/5753) * add --check-version command line flag (https://github.com/bluenviron/mediamtx/issues/5786) this allows to check whether a new version is available without upgrading. * use file name suffix for OS-specific code wherever possible (https://github.com/bluenviron/mediamtx/issues/5787) * fix two hot reloading cases (https://github.com/bluenviron/mediamtx/issues/5817) * reload SRT server when metrics server is reloaded * reload API server when RTMPS server is reloaded RTSP * client: trigger TCP timeout only if nothing is received (https://github.com/bluenviron/gortsplib/issues/1002) (https://github.com/bluenviron/gortsplib/issues/968) (https://github.com/bluenviron/gortsplib/issues/1067) Previously, a data packet was required, now a keepalive response from the server is enough. * sdp: support non-standard 'meta' media type (https://github.com/bluenviron/gortsplib/issues/1068) * forbid H264 packetization mode zero (https://github.com/bluenviron/gortsplib/issues/1072) Packetization mode zero requires allowing inefficient and brittle fragmented UDP packets, which we are not. RTMP * client: add FLAC fourCC (https://github.com/bluenviron/gortmplib/issues/73) * do not exit in case of undocumented Flash control messages (https://github.com/bluenviron/mediamtx/issues/5512) (https://github.com/bluenviron/gortmplib/issues/75) HLS * remove redundant JavaScript argument (https://github.com/bluenviron/mediamtx/issues/5806) * muxer: fix race condition when generating playlist (https://github.com/bluenviron/gohlslib/issues/359) (https://github.com/bluenviron/gohlslib/issues/360) Max age of playlist depends on segments, so it needs to be covered by the segment mutex. * muxer: use coherent version in all playlists (https://github.com/bluenviron/mediamtx/issues/5781) (https://github.com/bluenviron/gohlslib/issues/363) WebRTC * make JavaScript internal variables private (https://github.com/bluenviron/mediamtx/issues/5804) * fix connectivity after network changes (https://github.com/bluenviron/mediamtx/issues/5097) (https://github.com/bluenviron/mediamtx/issues/5818) RPI Camera * use timestamp of frame in text overlay (https://github.com/bluenviron/mediamtx/issues/2733) (https://github.com/bluenviron/mediamtx-rpicamera/issues/103) Dependencies * code.cloudfoundry.org/bytefmt updated from v0.72.0 to v0.74.0 * github.com/abema/go-mp4 updated from v1.5.0 to v1.6.0 * github.com/bluenviron/gohlslib/v2 updated from v2.3.2 to v2.4.0 * github.com/bluenviron/gortmplib updated from v0.3.2 to v0.4.0 * github.com/bluenviron/gortsplib/v5 updated from v5.5.3 to v5.5.4 * github.com/bluenviron/mediacommon/v2 updated from v2.8.3 to v2.9.0 * github.com/go-git/go-git/v5 updated from v5.19.0 to v5.19.1 * github.com/matthewhartstonge/argon2 updated from v1.5.3 to v1.5.4 * github.com/pion/ice/v4 updated from v4.2.5 to v4.2.7 * github.com/pion/transport/v4 updated from v4.0.1 to v4.0.2 * github.com/pion/webrtc/v4 updated from v4.2.12 to v4.2.14 _[Truncated at 4000 characters — full notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.19.0]_ ### v1.18.2 - Date: 2026-05-15 - Version: v1.18.2 - Original notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.18.2 - Permalink: https://whatsnew.fyi/product/mediamtx/releases/v1.18.2 - **fixed** — Fix compatibility with Verint.Vms.MediaGateway - **fixed** — Fix crash when stream is closing and ServerStream.Close() is called with setupped transport set to nil - **fixed** — Fix race condition when tearing down connection where ServerConn.session was not properly protected - **fixed** — Fix leak in case of failure during multicast initialization - **fixed** — Prevent nil and unconfigured tracks from appearing in RTMP - **fixed** — Fix error 500 caused by in-stream params in HLS by restoring consideration of in-stream parameters for AV1, H264, H265, and VP9 codecs when generating init.mp4 and playlists - **fixed** — Fix checking POST responses in WebRTC - **added** — Support interacting with servers with no trickle ICE - **added** — Support WHIP ICE restarts - **added** — Support changing text overlay dynamically for RPI Camera ##### Fixes and improvements RTSP * fix compatibility with Verint.Vms.MediaGateway (https://github.com/bluenviron/mediamtx/issues/5292) (https://github.com/bluenviron/gortsplib/issues/1061) * fix crash when stream is closing (https://github.com/bluenviron/gortsplib/issues/1062) when ServerStream.Close() is called, stream readers might have their setuppedTransport set to nil, causing the server to crash. Prevent this. * fix race condition when tearing down connection (https://github.com/bluenviron/gortsplib/issues/1063) ServerConn.session was not properly protected. * fix leak in case of failure during multicast initialization (https://github.com/bluenviron/gortsplib/issues/1064) RTMP * prevent nil / unconfigured tracks from appearing (https://github.com/bluenviron/gortmplib/issues/66) (https://github.com/bluenviron/mediamtx/issues/5724) (https://github.com/bluenviron/mediamtx/issues/5729) HLS * fix error 500 caused by in-stream params (https://github.com/bluenviron/gohlslib/issues/355) (https://github.com/bluenviron/mediamtx/issues/5728) (https://github.com/bluenviron/mediamtx/issues/5745) PR https://github.com/bluenviron/gohlslib/issues/344 caused a regression. Many codecs (AV1, H264, H265, VP9) use in-stream parameters, that were not taken into consideration anymore when generating init.mp4 and playlists. This has been solved. WebRTC * fix checking POST responses (https://github.com/bluenviron/mediamtx/issues/5758) * support interacting with servers with no trickle ICE (https://github.com/bluenviron/mediamtx/issues/5273) (https://github.com/bluenviron/mediamtx/issues/5757) * support WHIP ICE restarts (https://github.com/bluenviron/mediamtx/issues/5183) (https://github.com/bluenviron/mediamtx/issues/5770) RPI Camera * support changing text overlay dynamically (https://github.com/bluenviron/mediamtx/issues/5270) (https://github.com/bluenviron/mediamtx/issues/5748) Dependencies * code.cloudfoundry.org/bytefmt updated from v0.70.0 to v0.72.0 * github.com/Masterminds/semver/v3 updated from v3.4.0 to v3.5.0 * github.com/bluenviron/gohlslib/v2 updated from v2.3.1 to v2.3.2 * github.com/bluenviron/gortmplib updated from v0.3.1 to v0.3.2 * github.com/bluenviron/gortsplib/v5 updated from v5.5.2 to v5.5.3 * github.com/datarhei/gosrt updated from v0.10.0 to v0.11.0 * github.com/fsnotify/fsnotify updated from v1.10.0 to v1.10.1 * github.com/go-git/go-billy/v5 updated from v5.8.0 to v5.9.0 * github.com/go-git/go-git/v5 updated from v5.18.0 to v5.19.0 * github.com/gookit/color updated from v1.6.0 to v1.6.1 * github.com/matthewhartstonge/argon2 updated from v1.5.2 to v1.5.3 * github.com/pion/rtp updated from v1.10.1 to v1.10.2 * golang.org/x/crypto updated from v0.50.0 to v0.51.0 * golang.org/x/net updated from v0.53.0 to v0.54.0 * golang.org/x/sys updated from v0.43.0 to v0.44.0 * golang.org/x/term updated from v0.42.0 to v0.43.0 * github.com/cyphar/filepath-securejoin updated from v0.4.1 to v0.6.1 * github.com/pjbgf/sha1cd updated from v0.3.2 to v0.6.0 * golang.org/x/text updated from v0.36.0 to v0.37.0 * github.com/bluenviron/mediamtx-rpicamera updated from v2.5.6 to v2.5.7 ##### Security Binaries are compiled from source code by the [Release workflow](https://github.com/bluenviron/mediamtx/actions/workflows/release.yml), which is a fully-visible process that prevents any change or external interference in produced artifacts. Checksums of binaries are also published in a public blockchain by using [GitHub Attestations](https://docs.github.com/en/actions/concepts/security/artifact-attestations), and they can be verified by running: ``` ls mediamtx_* | xargs -L1 gh attestation verify --repo bluenviron/mediamtx ``` You can verify checksums of binaries by downloading `checksums.sha256` and running: ``` cat checksums.sha256 | grep "$(ls mediamtx_*)" | sha256sum --check ``` ### v1.18.1 - Date: 2026-04-30 - Version: v1.18.1 - Original notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.18.1 - Permalink: https://whatsnew.fyi/product/mediamtx/releases/v1.18.1 - **security** — Prevent code injection in case of MTX_QUERY in hooks by url-encoding MTX_QUERY - **changed** — Use temporary redirects instead of permanent redirects to prevent unwanted caching - **security** — Prevent open redirect attacks in HLS - **added** — Support reading and writing KLV in HLS - **added** — Add hlsCDNSecret option to serve HLS streams behind a CDN in a simplified way - **changed** — Add public attribute to cache-control header in HLS - **changed** — Allow caching non-low-latency HLS playlists - **security** — Prevent open redirect attacks in WebRTC - **fixed** — Merge request controls instead of overwriting in RPI Camera to support libcamera 0.7.0 ##### Fixes and improvements General * prevent code injection in case of MTX_QUERY in hooks (https://github.com/bluenviron/mediamtx/issues/5707) When MTX_QUERY is used explicitly in hooks, for instance "curl http://something/?$MTX_QUERY", it can be used to inject arbitrary commands. MTX_QUERY is now url-encoded to prevent any abuse regardless of the configuration. * use temporary redirects instead of permanent redirects (https://github.com/bluenviron/mediamtx/issues/5710) this prevents unwanted caching. HLS * prevent open redirect attacks (https://github.com/bluenviron/mediamtx/issues/5708) * support reading and writing KLV (https://github.com/bluenviron/mediamtx/issues/5604) * add hlsCDNSecret (https://github.com/bluenviron/mediamtx/issues/5716) this allows to serve HLS streams behind a CDN in a simplified way, compatible with the new HLS session system. * add public attribute to cache-control header (https://github.com/bluenviron/gohlslib/issues/349) * allow caching non-low-latency playlists (https://github.com/bluenviron/gohlslib/issues/350) WebRTC * prevent open redirect attacks (https://github.com/bluenviron/mediamtx/issues/5708) RPI Camera * Merge request->controls instead of overwriting (https://github.com/bluenviron/mediamtx-rpicamera/issues/97) libcamera 0.7.0 is more strict about changing controls; assignment is no longer allowed since https://github.com/raspberrypi/libcamera/commit/310cd8bc0756717cde97fe5b083926f6d6931f58 Instead, we use the merge call with overwrite. ##### Security Binaries are compiled from source code by the [Release workflow](https://github.com/bluenviron/mediamtx/actions/workflows/release.yml), which is a fully-visible process that prevents any change or external interference in produced artifacts. Checksums of binaries are also published in a public blockchain by using [GitHub Attestations](https://docs.github.com/en/actions/concepts/security/artifact-attestations), and they can be verified by running: ``` ls mediamtx_* | xargs -L1 gh attestation verify --repo bluenviron/mediamtx ``` You can verify checksums of binaries by downloading `checksums.sha256` and running: ``` cat checksums.sha256 | grep "$(ls mediamtx_*)" | sha256sum --check ``` ### v1.18.0 - Date: 2026-04-26 - Version: v1.18.0 - Original notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.18.0 - Permalink: https://whatsnew.fyi/product/mediamtx/releases/v1.18.0 - **added** — Track HLS sessions through cookies or query parameters to enable session inspection through logs, metrics and API, track outbound bytes more precisely, and reduce load on external HTTP authentication URLs - **added** — Support serving streams with a CDN - **changed** — Add a label after every listener opened message that mentions protocols of every listener - **changed** — Embed TLS master keys into packet dumps when dumpPackets is true, in a format compatible with Wireshark - **changed** — Use token as query parameter key to pass tokens, with legacy jwt query parameter key still supported - **deprecated** — authJWTInHTTPQuery configuration and JWTs in query parameters - **changed** — Expose token passed as query parameter to HTTP authentication - **changed** — Return errors as JSON in playback API - **fixed** — Prevent out-of-memory errors by imposing maximum size on body of incoming HTTP requests and responses - **changed** — Improve metrics performance by using string.Builder instead of string concatenation - **changed** — Add labels to metrics output to group metrics under visible, distinct labels - **fixed** — Fix metrics filtering by type=rtmp_conns and type=rtmps_conns - **added** — Add readerType attribute to path_readers metric to filter path readers by type - **changed** — Use an enum for parsing metrics type - **fixed** — Fix race condition in metrics when reloading configuration - **changed** — Sort path readers in API - **fixed** — Fix RTSP-over-HTTP tunnel request target in RTSP client - **added** — Support Axis SRTP variant in RTSP client - **changed** — Improve SDP parser compatibility with malformed connection information - **fixed** — Support parsing RTSP responses with no status message ##### New major features HLS * track sessions (https://github.com/bluenviron/mediamtx/issues/962) (https://github.com/bluenviron/mediamtx/issues/5683) sessions are now tracked through cookies or query parameters. This provides the ability to inspect sessions through logs, metrics and API, allows more precise tracking of outbound bytes, decreases load on external HTTP authentication URLs since they are now called once per session and not once per request. * support serving streams with a CDN (https://github.com/bluenviron/mediamtx/issues/5696) ##### Fixes and improvements General * improve listener labels (https://github.com/bluenviron/mediamtx/issues/5635) add a label after every "listener opened on :XXX" message that mentions protocols of every listener. * dump unencrypted TLS sessions (https://github.com/bluenviron/mediamtx/issues/5624) when dumpPackets is true, embed TLS master keys into the dump, in a format which is natively compatible with Wireshark. * use "token" as query parameter key to pass tokens (https://github.com/bluenviron/mediamtx/issues/5647) the legacy "jwt" query parameter key is still supported. * deprecate authJWTInHTTPQuery and disable JWTs in query parameters (https://github.com/bluenviron/mediamtx/issues/5648) This fixes a long standing security flaw. Even though it's a breaking change, few users should be impacted since this feature has been discouraged for some time. * expose token passed as query parameter to HTTP authentication too (https://github.com/bluenviron/mediamtx/issues/5649) this allows to parse tokens coming from RTSP and RTMP without additional effort. * playback: return errors as JSON (https://github.com/bluenviron/mediamtx/issues/5656) this is aligned with all other HTTP-based services. * prevent out-of-memory errors (https://github.com/bluenviron/mediamtx/issues/5674) impose a maximum size on body of incoming HTTP requests and responses. * metrics: improve performance (https://github.com/bluenviron/mediamtx/issues/5663) use string.Builder instead of string concatenation * metrics: add labels to the output (https://github.com/bluenviron/mediamtx/issues/5687) group metrics under visible, distinct labels. * metrics: fix filtering by type=rtmp_conns and type=rtmps_conns (https://github.com/bluenviron/mediamtx/issues/5689) * metrics: add readerType attribute to the path_readers metric (https://github.com/bluenviron/mediamtx/issues/5690) this allows to filter path readers by type. * metrics: use an enum for parsing metrics type (https://github.com/bluenviron/mediamtx/issues/5692) * metrics: fix race condition when reloading configuration (https://github.com/bluenviron/mediamtx/issues/5693) * docs: add scaling page (https://github.com/bluenviron/mediamtx/issues/5695) API * sort path readers (https://github.com/bluenviron/mediamtx/issues/5691) RTSP * client: fix RTSP-over-HTTP tunnel request target (https://github.com/bluenviron/gortsplib/issues/1041) * client: support Axis SRTP variant (https://github.com/bluenviron/gortsplib/issues/1033) * improve SDP parser compatibility with malformed connection information (https://github.com/bluenviron/gortsplib/issues/1025) * support parsing responses with no status message (https://github.com/bluenviron/gortsplib/issues/1043) (https://github.com/bluenviron/gortsplib/issues/1050) * client: don't block RTSP-over-HTTP tunnel startup on POST response (https://github.com/bluenviron/gortsplib/issues/1047) HLS * return JSON with error message in case path conf is not available (https://github.com/bluenviron/mediamtx/issues/5655) this behavior is aligned with WebRTC one. * improve muxer performance (https://github.com/bluenviron/mediamtx/issues/5660) use a mutex instead of a channel to get current instance. * fix running linter when there are unstaged git changes (https://github.com/bluenviron/gohlslib/issues/336) * client: use redirected URL when reloading playlist (https://github.com/bluenviron/gohlslib/ _[Truncated at 4000 characters — full notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.18.0]_ ### v1.17.1 - Date: 2026-03-31 - Version: v1.17.1 - Original notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.17.1 - Permalink: https://whatsnew.fyi/product/mediamtx/releases/v1.17.1 - **security** — Prevent directory traversal attacks by forbidding special characters that allow escaping from intended directories in path names used in the recorder, playback server, and HTTP-based components - **fixed** — Fill server name indication (SNI) of RTSP client TLS connections - **added** — Implement AbortMessage for RTMP - **fixed** — Fill server name indication (SNI) of RTMP client TLS connections - **fixed** — Fix random absolute timestamps with Opus, G711 and LPCM in WebRTC egress by using consistent outgoing RTP domain in rewritten audio paths - **fixed** — Strip TWCC extension from incoming RTP packets to prevent interference with WebRTC congestion control algorithm - **fixed** — Restore Docker compatibility with armv6 devices for RPI Camera - **fixed** — Restore compatibility with armv6 devices for RPI Camera ##### Fixes and improvements General * prevent directory traversal attacks (https://github.com/bluenviron/mediamtx/issues/5602) Path names are used as part of paths in several components: in the recorder, in the playback server and in every HTTP-based component (WebRTC, HLS, API). Special characters that allow to escape from the intended directory are now forbidden in order to prevent directory traversal attacks. RTSP * client: fill server name indication (SNI) of TLS connections (https://github.com/bluenviron/gortsplib/issues/1038) RTMP * implement AbortMessage (https://github.com/bluenviron/mediamtx/issues/4673) (https://github.com/bluenviron/gortmplib/issues/59) * client: fill server name indication (SNI) of TLS connections (https://github.com/bluenviron/gortmplib/issues/63) WebRTC * fix random absolute timestamps with Opus, G711 and LPCM (https://github.com/bluenviron/mediamtx/issues/5597) When rewriting audio RTP timestamps in WebRTC egress, NTP was derived using regenerated packet timestamps minus the incoming RTP base timestamp. That mixed timestamp domains and could shift absolute time by an arbitrary offset while still exposing mapping as available. Fix by using a consistent outgoing RTP domain in rewritten audio paths * strip TWCC extension of incoming RTP packets (https://github.com/bluenviron/mediamtx/issues/5146) (https://github.com/bluenviron/mediamtx/issues/5605) The TWCC extension is used as part of the WebRTC congestion control algorithm placed between the publisher and the server. If this extension is routed untouched from the server to readers, it messes with the congestion control algorithm present between the server and each reader. Remove it. RPI Camera * restore Docker compatibility with armv6 devices (https://github.com/bluenviron/mediamtx/issues/5590) (https://github.com/bluenviron/mediamtx/issues/5595) * restore compatibility with armv6 devices (https://github.com/bluenviron/mediamtx/issues/5590) (https://github.com/bluenviron/mediamtx-rpicamera/issues/95) Dependencies * github.com/bluenviron/gortmplib updated from v0.3.0 to v0.3.1 * github.com/bluenviron/gortsplib/v5 updated from v5.5.0 to v5.5.1 * github.com/gin-contrib/pprof updated from v1.5.3 to v1.5.4 * github.com/go-git/go-git/v5 updated from v5.17.0 to v5.17.2 * github.com/pion/ice/v4 updated from v4.2.1 to v4.2.2 * github.com/pion/webrtc/v4 updated from v4.2.9 to v4.2.11 * github.com/pion/sctp updated from v1.9.2 to v1.9.4 * github.com/bluenviron/mediamtx-rpicamera updated from v2.5.4 to v2.5.5 ##### Security Binaries are compiled from source code by the [Release workflow](https://github.com/bluenviron/mediamtx/actions/workflows/release.yml), which is a fully-visible process that prevents any change or external interference in produced artifacts. Checksums of binaries are also published in a public blockchain by using [GitHub Attestations](https://docs.github.com/en/actions/concepts/security/artifact-attestations), and they can be verified by running: ``` ls mediamtx_* | xargs -L1 gh attestation verify --repo bluenviron/mediamtx ``` You can verify checksums of binaries by downloading `checksums.sha256` and running: ``` cat checksums.sha256 | grep "$(ls mediamtx_*)" | sha256sum --check ``` ### v1.17.0 - Date: 2026-03-17 - Version: v1.17.0 - Original notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.17.0 - Permalink: https://whatsnew.fyi/product/mediamtx/releases/v1.17.0 - **added** — Support publishing multiple video/audio renditions in WebRTC - **added** — Provide track details in API - **added** — Add user field to RTSP, RTMP, SRT, WebRTC connections and sessions - **added** — Add RTSP reported lost packets tracking with outboundRtpPacketsReportedLost property - **added** — Add new stats for RTSPSession.outboundRTPPacketsDiscarded, Path.inboundFramesInError, SRTConn.outboundFramesDiscarded, WebRTCSession.outboundFramesDiscarded, RTMPConn.outboundFramesDiscarded, and HLSMuxer.outboundFramesDiscarded - **changed** — Rename WebRTC stats to match RTSP ones - **changed** — Add inbound or outbound prefix to stats for improved readability - **changed** — Optionally validate JWT iss and aud claims - **fixed** — Avoid buffering HTTP response body in loggerWriter by replacing buffer with plain int counter - **fixed** — Fix rtsps scheme not being used in requests - **fixed** — Support unwrapping MPEG-TS tracks for use with other protocols and recording system - **fixed** — Fix client support for hostnames in source and dest headers - **fixed** — Allocate an RTP sender for each server session - **fixed** — Store reported lost RTP packets in stats - **fixed** — Support muxing KLS with MPEG-TS in HLS muxer - **fixed** — Fix deadlock when processing fMP4s in HLS client - **fixed** — Fix panic with WHIP POST authentication failures - **changed** — Add deprecated fields to OpenAPI definition - **changed** — Add missing enums and move all enums in dedicated components in OpenAPI - **changed** — Add two missing SRT stats to metrics ##### New major features WebRTC * support publishing multiple video/audio renditions (https://github.com/bluenviron/mediamtx/issues/5573) this allows to receive multiple video tracks from OBS Studio with the new WebRTC Simulcast feature introduced in v32.1.0. API * provide track details (https://github.com/bluenviron/mediamtx/issues/5307) (https://github.com/bluenviron/mediamtx/issues/5333) (https://github.com/bluenviron/mediamtx/issues/1726) (https://github.com/bluenviron/mediamtx/issues/5585) * add user field to RTSP, RTMP, SRT, WebRTC conns and sessions (https://github.com/bluenviron/mediamtx/issues/5104) (https://github.com/bluenviron/mediamtx/issues/5565) * add RTSP reported lost packets (https://github.com/bluenviron/mediamtx/issues/5198) (https://github.com/bluenviron/mediamtx/issues/5579) The new outboundRtpPacketsReportedLost property allows to track RTP packets that have been reported lost by readers. Furthermore, stats now have a "inbound" or "outbound" prefix to improve readability. * rename WebRTC stats to match RTSP ones (https://github.com/bluenviron/mediamtx/issues/5581) * add new stats (https://github.com/bluenviron/mediamtx/issues/5582) - RTSPSession.outboundRTPPacketsDiscarded - Path.inboundFramesInError - SRTConn.outboundFramesDiscarded - WebRTCSession.outboundFramesDiscarded - RTMPConn.outboundFramesDiscarded - HLSMuxer.outboundFramesDiscarded ##### Fixes and improvements General * avoid buffering HTTP response body in loggerWriter (https://github.com/bluenviron/mediamtx/issues/5552) loggerWriter was shadow-copying every response byte into a bytes.Buffer to report the body size, causing the entire response to be accumulated in memory for the lifetime of each request. Replace the buffer with a plain int counter since dump() only ever reported the byte count anyway. * optionally validate JWT iss and aud claims (https://github.com/bluenviron/mediamtx/issues/5569) * metrics: add two missing SRT stats (https://github.com/bluenviron/mediamtx/issues/5580) API * add deprecated fields to the OpenAPI definition (https://github.com/bluenviron/mediamtx/issues/5575) * add missing enums and move all enums in dedicated components (https://github.com/bluenviron/mediamtx/issues/5576) RTSP * fix rtsps scheme not being used in requests (https://github.com/bluenviron/mediamtx/issues/5236) (https://github.com/bluenviron/mediamtx/issues/5544) * support unwrapping MPEG-TS tracks (https://github.com/bluenviron/mediamtx/issues/5476) this allows to use MPEG-TS tracks with other protocols and with the recording system * client: fix support for hostnames in source and dest headers (https://github.com/bluenviron/gortsplib/issues/1009) (https://github.com/bluenviron/mediamtx/issues/5304) (https://github.com/bluenviron/gortsplib/issues/1014) * allocate a rtp sender for each server session (https://github.com/bluenviron/gortsplib/issues/1021) this produces more realistic statistics and in the future will allow to implement per-session statistics and packet retransmission. * store reported lost RTP packets in stats (https://github.com/bluenviron/mediamtx/issues/5198) (https://github.com/bluenviron/gortsplib/issues/1023) HLS * muxer: support muxing KLS with MPEG-TS (https://github.com/bluenviron/gohlslib/issues/327) * client: fix deadlock when processing fMP4s (https://github.com/bluenviron/gohlslib/issues/333) (https://github.com/bluenviron/gohlslib/issues/334) WebRTC * fix panic with WHIP POST authentication failures (https://github.com/bluenviron/mediamtx/issues/5566) Dependencies * code.cloudfoundry.org/bytefmt updated from v0.64.0 to v0.67.0 * github.com/abema/go-mp4 updated from v1.4.1 to v1.5.0 * github.com/bluenviron/gohlslib/v2 updated from v2.2.8 to v2.2.9 * github.com/bluenviron/gortsplib/v5 updated from v5.4.0 to v5.5.0 * github.com/bluenviron/mediacommon/v2 updated from v2.8.2 to v2.8.3 * golang.org/x/crypto updated from v0.48.0 to v0.49.0 * golang.org/x/sys _[Truncated at 4000 characters — full notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.17.0]_