# mediamtx v1.21.0 - Product: mediamtx (https://whatsnew.fyi/product/mediamtx) - Vendor: bluenviron - Date: 2026-09-05 - Version: v1.21.0 - Original notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.21.0 - Permalink: https://whatsnew.fyi/product/mediamtx/releases/v1.21.0 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'. --- - **added** — Support forwarding streams over Media-over-QUIC - **added** — Add /paths/static-sources/get endpoint to obtain details about static sources - **added** — Add type-specific properties to forward destinations - **added** — Add type-specific properties to static sources - **added** — Add --validate-conf flag to validate configuration - **changed** — Use internal/core/VERSION as single source of truth to get version - **fixed** — Propagate Flush() through the response writer wrappers in httpp - **fixed** — Support setting read buffer size on macOS - **removed** — Drop support for Debian Bullseye - **added** — Emit 'closed' log message when a server is closed - **fixed** — Fix external command exit code reporting on non-Windows platforms - **added** — Support YAML version directives in configuration - **added** — Add 'pos' property to forward_dests in metrics - **deprecated** — Deprecate the 'remoteAddr' property in metrics - **changed** — Add 'type' to forward dests in metrics and deprecate 'protocol' - **security** — Set default Allow-Origins to empty list in metrics and pprof to prevent cross-site attacks - **added** — Support disabling recording when the source is offline for always-available paths via alwaysAvailableRecorded parameter - **fixed** — Allow sources and forward destinations with an empty password - **fixed** — Fix wrong validation of HTTP allowed origins with wildcards - **fixed** — Fix HTTP allowed origins dots being interpreted as any character ##### New major features Media-over-QUIC * support forwarding streams (https://github.com/bluenviron/mediamtx/issues/6145) API * add /paths/static-sources/get endpoint (https://github.com/bluenviron/mediamtx/issues/6177) this allows to obtain details about static sources. * add type-specific properties to forward destinations (https://github.com/bluenviron/mediamtx/issues/6178) * add type-specific properties to static sources (https://github.com/bluenviron/mediamtx/issues/6184) ##### Fixes and improvements General * add --validate-conf flag (https://github.com/bluenviron/mediamtx/issues/5549) (https://github.com/bluenviron/mediamtx/issues/6140) * use internal/core/VERSION as single source of truth to get version (https://github.com/bluenviron/mediamtx/issues/6119) * httpp: propagate Flush() through the response writer wrappers (https://github.com/bluenviron/mediamtx/issues/6126) handlerLogger's responseRecorder and handlerWriteTimeout's writeTimeoutWriter both wrap http.ResponseWriter but implement neither http.Flusher nor Unwrap(). Any handler that flushes mid-response has that flush silently dropped, and its output only reaches the client when the handler returns. That defeats the stated purpose of writeTimeoutWriter, whose own comment says it exists so one can "write long responses, splitted in chunks, without causing timeouts": the deadline is reset per Write(), but nothing ever leaves the buffer until the end. Found while adding a server-sent-events endpoint: events written and flushed at t=0.4s onlyreached the client at t=2.2s, when the handler returned. Adding Flush() plus Unwrap() (so http.ResponseController can reach through) fixes both. The new test drives a real listener throughboth wrappers and reads while the handler is still blocked, so it fails on the current code by hitting the read deadline. * support setting read buffer size on macOS (https://github.com/bluenviron/mediamtx/issues/6128) (https://github.com/bluenviron/mediamtx/issues/6131) * drop support for Debian Bullseye (https://github.com/bluenviron/mediamtx/issues/6137) Bullseye reached EOL on 31st august 2026. * emit "closed" log message when a server is closed (https://github.com/bluenviron/mediamtx/issues/6152) * fix external command exit code reporting on non-Windows platforms (https://github.com/bluenviron/mediamtx/issues/6155) * conf: support YAML version directives (https://github.com/bluenviron/mediamtx/issues/6157) * metrics: add 'pos' property to forward_dests (https://github.com/bluenviron/mediamtx/issues/6183) * metrics: deprecate the 'remoteAddr' property (https://github.com/bluenviron/mediamtx/issues/6174) Metrics are meant to provide aggregate statistics, not per-peer properties, that can be accessed through the API. The property is still served to keep backward compatibility. * metrics: add 'type' to forward dests, deprecated 'protocol' (https://github.com/bluenviron/mediamtx/issues/6170) 'type' is aligned with the terminology used in the rest of the server. * metrics, pprof: set default Allow-Origins to empty list (https://github.com/bluenviron/mediamtx/issues/6165) This prevents cross-site attacks to the API with the default configuration. * always-available: support disabling recording when the source is offline (https://github.com/bluenviron/mediamtx/issues/6182) Add `alwaysAvailableRecorded` parameter that controls whether recording happens during offline periods for always-available paths. When set to false, recording only starts when a real source is connected. Co-authored-by: Abdulrahman Nashaat * allow sources and forward destinations with an empty password (https://github.com/bluenviron/mediamtx/issues/6193) Restore the behavior introduced in https://github.com/bluenviron/mediamtx/issues/395 and accidentally reverted by https://github.com/bluenviron/mediamtx/issues/5779, which factored the RTMP/HLS credential check into validateURL() and applied it to RTSP sources to _[Truncated at 4000 characters — full notes: https://github.com/bluenviron/mediamtx/releases/tag/v1.21.0]_