PackageTrack
Sign in Get early access

github.com/bluenviron/mediamtx

v1.20.1 #146 most downloaded on Go modules bluenviron/mediamtx

What this package is like to depend on

Last release today

23 Aug 2026

Ships fairly regularly

a new release about every 2 weeks

Rarely documented

notes for 10 of 70 stable releases

Nothing withdrawn

no release was ever pulled

3 years old

218 releases · first in 2023

61 releases in the last 12 months

see the full history below

Release timeline

218 releases · May 2023 to Aug 2026
2024 2025 2026
Release Pre-release

Releases

latest 60 of 218
  1. v1.20.2-0.20260823102804-7bf901ea9ae4 23 Aug 2026 pre-release

    Nothing published for this version

  2. v1.20.1 18 Aug 2026
    Release notes

    Fixes and improvements

    General

    • prevent spamming of 'stream is closed' error during shutdown (#6062)
    • impose a minimum value to clock rate of always-available tracks (#6086) Clock rates below 10 caused the emission of empty samples. Fix the issue by imposing a minimum value of 8khz, that rises to 22khz in case of AAC.
    • fix race condition during sub-stream creation (#6075) (#6095) When a stream with always-available turned on switches from offline to online, or from a publisher to another, the reader mutex was not acquired during writing of codec parameters. This is now fixed.
    • restore ability to run the server in a read-only file system (#6098) This was temporarily lost after the introduction of the native MoQ QUIC listener.
    • fix deadlock when changing configuration through file and API (#6077) (#6101) When changing configuration in parallel by editing the configuration file and calling the API, the server could get into a deadlock that prevented any further action. This is fixed.
    • change default value of authHTTPExclude (#6103) by default, do not exclude any action from HTTP authentication. Old value triggered several security warnings.
    • add destFingerprint parameter (#6106) this allows to validate self-signed certificates of forward destinations.
    • pmp4: fix panic in case of bad input (bluenviron/mediacommon#354) the stsc box was not checked properly. This is now fixed.
    • pmp4: fix panic in case of bad input (bluenviron/mediacommon#355) The parser was not checking that the MP4 was properly sending addresses of samples, resulting in samples with invalid addresses. This is now fixed.
    • pmp4, fmp4: do not emit empty payloads (bluenviron/mediacommon#353)

    API

    • redact password in responses (#6110) passwords are not exposed anymore through the API. They can only be set, not read.

    Media-Over-QUIC

    • support pulling streams from other servers (#6111)
    • do not accept empty payloads (#6085)
    • limit maximum amount of published tracks (#6087) this prevents clients from consuming an excessive amount of memory.
    • make /moq URL suffix optional (#6107) In order to establish a MoQ session with WebTransport, a /moq suffix was required until now. This is now optional in order to allow connecting to the server with the standard MoQ URL format.
    • impose maximum size on pending reordered bytes (#6112) Decrease the maximum memory that clients can take by imposing a maximum size of 100MB on the pending reordered bytes.

    RTSP

    • accept relative digest URI (bluenviron/gortsplib#1118) RFC 2617 section 3.2.2 allows the digest URI to be either an absolute URI or a relative path. Some clients use the latter, which was rejected with "wrong URL" since urlMatches only accepted an exact match against the absolute request URL.
    • send initial RTCP sender report without waiting for a period (bluenviron/gortsplib#1052) (bluenviron/gortsplib#1111) (bluenviron/gortsplib#1120) Reports were emitted only on the ticker, so the first one arrived Period after Initialize (10s by default) and later still when no RTP packet had been sent by that first tick, since report() returns nil until then and the next opportunity is another Period away.
    • ensure that decoders can produce only output that does not crash encoders (bluenviron/gortsplib#1123)
    • discard empty Opus and G722 RTP packets (bluenviron/gortsplib#1131)
    • improve error message when setting read buffer fails (bluenviron/gortsplib#1133)
    • server: fix race condition when recording (bluenviron/gortsplib#1134) state was not protected.

    RTMP

    • inform about authentication failures (#5657) (#6072) Reply with NetStream.Play.Failed or NetStream.Publish.Unauthorized when a client is not authorized to play or publish. This makes clients like OBS to stop recreating the connection in case of authentication failures.

    • reader: do not emit empty frames (bluenviron/gortmplib#106)

    • parse video PTS delta as signed (bluenviron/gortmplib#88)
      HLS

    • prefer hls.js on iOS too (#6090) In the embedded HLS reader, use hls.js on iOS, that was previously disabled due to compatibility issues that should have been solved.

    • unlock the session-in-query+iOS combination (#6088) this was previously blocked because the session in query was meant to be dynamic, therefore incompatible with static playlists required by iOS. It is not anymore, so we can support that.

    • stop using cookies with plain HTTP (#6089) in case of plain HTTP, fall back to query parameters, which are safer than HTTP cookies because they are not shared between different pages/domains, although they are visible in the URL.

    WebRTC

    • support forwarding streams (#6099)
    • fix warning when IPv6 is disabled (#5733) (#6048)
    • improve performance by ignoring mDNS candidates (#4963) (#6064) mDNS candidates sometimes require a large CPU portion, they are not involved in any connectivity method mentioned in the documentation, they work in local networks only.

    SRT

    • apply UDP read buffer size from configuration (#6069) Use upstream datarhei/gosrt's ListenerControl config field (datarhei/gosrt#144) to set SO_RCVBUF on the SRT listener's UDP socket.

    RPI Camera

    • fix crash when secondary stream is enabled (#6060) (#6061)
    • prevent invalid MJPEG sizes (#6080) width and height of MJPEG frames must be multiple of 8 and less than 2048, otherwise they cannot be routed with RTP/RTSP.

    Dependencies

    • code.cloudfoundry.org/bytefmt updated from v0.83.0 to v0.85.0
    • github.com/alecthomas/kong updated from v1.16.0 to v1.16.1
    • github.com/asticode/go-astits updated from v1.15.0 to v1.16.0
    • github.com/bluenviron/gohlslib/v2 updated from v2.4.2 to v2.4.3
    • github.com/bluenviron/gortmplib updated from v1.0.0 to v1.0.1
    • github.com/bluenviron/gortsplib/v5 updated from v5.6.3 to v5.6.4
    • github.com/bluenviron/mediacommon/v2 updated from v2.9.2 to v2.9.3
    • github.com/datarhei/gosrt updated from v0.11.0 to v0.11.1-0.20260812091715-a77b40bb4b76
    • github.com/pion/ice/v4 updated from v4.4.0 to v4.4.1
    • github.com/pion/transport/v4 updated from v4.0.2 to v4.1.0
    • github.com/stretchr/testify updated from v1.11.1 to v1.12.0
    • golang.org/x/crypto updated from v0.54.0 to v0.55.0
    • golang.org/x/net updated from v0.57.0 to v0.58.0
    • github.com/davecgh/go-spew removed
    • github.com/pion/srtp/v3 updated from v3.0.12 to v3.0.13
    • github.com/pmezard/go-difflib removed
    • golang.org/x/text updated from v0.40.0 to v0.41.0
    • hls.js updated from v1.6.16 to v1.7.0

    Security

    Binaries are compiled from source code by the Release workflow, 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, 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
    
    Open source →
    Release notes

    v1.20.1 Latest

    Latest

    Compare

    Choose a tag to compare

    Open source →
  3. v1.20.1-0.20260813090539-145381e81d0f 13 Aug 2026 pre-release

    Nothing published for this version

  4. v1.20.1-0.20260812101023-b86f02c227a0 12 Aug 2026 pre-release

    Nothing published for this version

  5. v1.20.1-0.20260811050114-8ce023fd70c9 11 Aug 2026 pre-release

    Nothing published for this version

  6. v1.20.1-0.20260808174126-8e46f37ba73b 08 Aug 2026 pre-release

    Nothing published for this version

  7. v1.20.1-0.20260807080505-6f0faa49d189 07 Aug 2026 pre-release

    Nothing published for this version

  8. v1.20.0 05 Aug 2026
    Release notes

    New major features

    General

    • support forwarding streams natively (#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 (#6039)
    • support draft-17 (#6040)
    • support draft-16 (#6045)

    Fixes and improvements

    General

    • docs: add missing MoQ ports (#5983)
    • Add OpenAPI definition of the Playback server (#5546)
    • fix support for regexp groups greater than 10 (#6033)

    Media-Over-QUIC

    • increase max namespace field count to 32 (#6043)
    • link primitives to draft-17 sections (#6044)

    RTSP

    • fix inability to read some AV1 streams with RTSP (#6001) (#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 (#6023)
    • make multicast errors on single interfaces non-fatal (bluenviron/gortsplib#1115) (#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 (#6007) (bluenviron/gortmplib#93)
    • client: change mapping between URL and tcURL, app, streamKey (bluenviron/gortmplib#94) (#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 (#5558) (bluenviron/gortmplib#95)

    HLS

    WebRTC

    • sort tracks in a deterministic way (#5988) (#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 (#6000)
    • reset recomputed audio PTS if it drifts too much (#6021)
    • fix "packet lost" error when routing streams from WebRTC (#6034) Chrome sometimes sends empty packets, that are discarded by the server, but the sequence number of following packets is not recomputed, leading downstream packet loss detectors to emit errors. This is fixed.

    SRT

    • improve log clarity (#5990) use message 'passphrase not provided by client' when clients do not provide passphrases.
    • show stream ID in logs (#6018)
    • close sources immediately when path is closed (#6038)

    Dependencies

    • code.cloudfoundry.org/bytefmt updated from v0.82.0 to v0.83.0
    • github.com/MicahParks/jwkset updated from v0.11.0 to v0.11.3
    • github.com/MicahParks/keyfunc/v3 updated from v3.8.0 to v3.8.1
    • github.com/bluenviron/gohlslib/v2 updated from v2.4.1 to v2.4.2
    • github.com/bluenviron/gortmplib updated from v0.4.1 to v1.0.0
    • github.com/bluenviron/gortsplib/v5 updated from v5.6.2 to v5.6.3
    • github.com/go-git/go-billy/v5 updated from v5.9.0 to v5.9.1
    • github.com/go-git/go-git/v5 updated from v5.19.1 to v5.19.2
    • github.com/pion/ice/v4 updated from v4.3.0 to v4.4.0
    • github.com/pion/interceptor updated from v0.1.46 to v0.1.47
    • github.com/pion/webrtc/v4 updated from v4.2.17 to v4.2.18
    • github.com/quic-go/quic-go updated from v0.60.0 to v0.61.0
    • github.com/quic-go/webtransport-go updated from v0.11.1 to v0.12.0
    • github.com/pion/sctp updated from v1.11.0 to v1.11.1
    • golang.org/x/time updated from v0.14.0 to v0.15.0

    Security

    Binaries are compiled from source code by the Release workflow, 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, 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
    
    Open source →
    Release notes

    v1.20.0

    Compare

    Choose a tag to compare

    Open source →
  9. v1.19.4-0.20260725174445-a0482f937fc4 25 Jul 2026 pre-release

    Nothing published for this version

  10. v1.19.3 23 Jul 2026
    Release notes

    Fixes and improvements

    General

    • fix error message (#5922) 'all' is a synonym for 'all_others'
    • fix clearing lists with environment variables (#5410) (#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 (#5399) (#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 (#5957)
    • fix wrong PTS and wrong playback of alwaysAvailableFile (#5436) (#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 (#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 [email protected]
    • normalize authentication error messages (#5421) (#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 (#5963) about string escaping.
    • ask for credentials only in case of protocols that support it (#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 (#5016) (#5967)
    • add comment to prevent security scan false positives (#5973)
    • pmp4: fix support for ctts version 0 (#5436) (bluenviron/mediacommon#343)

    API

    • generate most of OpenAPI automatically (#5918) enums and structs are now generated automatically. This eliminates some inconsistencies and makes development easier.

    Media-Over-QUIC

    • fix race condition during startup (#5965) allocate the HTTP server only after the MoQ server has been initialized.
    • fix several panics and OOM errors (#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 (#5968) * support draft-19 of the specification * support subscribing the same track multiple times.
    • prevent excessive CPU consumption in reorderer (#5976) do not iterate by maxGroupID (passed by user) but iterate by internal pending packets (uncontrolled by user).

    WebRTC

    • prevent cross-origin unauthorized access (#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 returning "*" in Access-Control-Allow-Origins when AllowOrigins is a wildcard, a behavior that prevents browsers from sharing credentials with third-party websites.

    RTSP

    HLS

    • prevent cross-origin unauthorized access (#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 returning "*" in Access-Control-Allow-Origins when AllowOrigins is a wildcard, a behavior that prevents browsers from sharing credentials with third-party websites.

    SRT

    • fix compatibility with StreamToStudio app (#5414) (#5928)

    Dependencies

    • code.cloudfoundry.org/bytefmt updated from v0.78.0 to v0.82.0
    • github.com/alecthomas/kong updated from v1.15.0 to v1.16.0
    • github.com/bluenviron/gohlslib/v2 updated from v2.4.0 to v2.4.1
    • github.com/bluenviron/gortmplib updated from v0.4.0 to v0.4.1
    • github.com/bluenviron/gortsplib/v5 updated from v5.6.1 to v5.6.2
    • github.com/bluenviron/mediacommon/v2 updated from v2.9.1 to v2.9.2
    • github.com/matthewhartstonge/argon2 updated from v1.5.5 to v1.5.6
    • github.com/pion/ice/v4 updated from v4.2.8-0.20260604162030-72f5001c4596 to v4.3.0
    • github.com/pion/interceptor updated from v0.1.45 to v0.1.46
    • github.com/pion/rtcp updated from v1.2.16 to v1.2.17
    • github.com/pion/rtp updated from v1.10.2 to v1.10.5
    • github.com/pion/webrtc/v4 updated from v4.2.15 to v4.2.17
    • github.com/pires/go-proxyproto updated from v0.12.0 to v0.15.0
    • github.com/quic-go/webtransport-go updated from v0.11.0 to v0.11.1
    • golang.org/x/crypto updated from v0.53.0 to v0.54.0
    • golang.org/x/net updated from v0.56.0 to v0.57.0
    • golang.org/x/sync updated from v0.21.0 to v0.22.0
    • golang.org/x/sys updated from v0.46.0 to v0.47.0
    • golang.org/x/term updated from v0.44.0 to v0.45.0
    • github.com/pion/datachannel updated from v1.6.0 to v1.6.2
    • github.com/pion/dtls/v3 updated from v3.1.4 to v3.1.5
    • github.com/pion/sctp updated from v1.10.0 to v1.11.0
    • github.com/pion/stun/v3 updated from v3.1.5 to v3.1.6
    • github.com/pion/turn/v5 updated from v5.0.9 to v5.0.12
    • golang.org/x/text updated from v0.38.0 to v0.40.0

    Security

    Binaries are compiled from source code by the Release workflow, 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, 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
    
    Open source →
    Release notes

    v1.19.3

    Compare

    Choose a tag to compare

    Open source →
  11. v1.19.3-0.20260718085646-75bf1af38c7d 18 Jul 2026 pre-release

    Nothing published for this version

  12. v1.19.3-0.20260717090736-e3b6fff94215 17 Jul 2026 pre-release

    Nothing published for this version

  13. v1.19.3-0.20260710170057-97ae0c6f697c 10 Jul 2026 pre-release

    Nothing published for this version

  14. v1.19.3-0.20260705090009-e98b727277ec 05 Jul 2026 pre-release

    Nothing published for this version

  15. v1.19.3-0.20260702192529-cacc09ee93d6 02 Jul 2026 pre-release

    Nothing published for this version

  16. v1.19.3-0.20260628142924-f4decfd41b7d 28 Jun 2026 pre-release

    Nothing published for this version

  17. v1.19.2 28 Jun 2026
    Release notes

    Fixes and improvements

    General

    • playback: fix panic when MP4 muxer flushes with no samples (#5867)
    • redact sensitive headers in HTTP debug logs (#5873)
    • fix(recordstore): decode timezone offset minutes correctly (#5884)
    • improve HTTP server performance (#5886) log incoming requests without cloning.
    • prevent truncation of 64-bit values on 32-bit platforms (#5902)

    RTSP

    WebRTC

    • skip unresolvable webrtcAdditionalHosts entries instead of aborting (#5845)

    RPI Camera

    • support encoding primary stream with MJPEG (2/2) (#5892)
    • support encoding secondary stream with H264 (2/2) (#4485) (#5898)
    • add unified rpiCameraH264Profile, rpiCameraH264Level params (#5894) These replace rpiCameraHardwareH264Profile, rpiCameraHardwareH264Level, rpiCameraSoftwareH264Profile, rpiCameraSoftwareH264Level.
    • fix race condition that prevents decoding the stream (bluenviron/mediamtx-rpicamera#109) (#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 (bluenviron/mediamtx-rpicamera#111)
    • fix wrong timestamp being passed to openh264 (bluenviron/mediamtx-rpicamera#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, 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, 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
    
    Open source →
    Release notes

    v1.19.2

    Compare

    Choose a tag to compare

    Open source →
  18. v1.19.2-0.20260622191404-8fcbd0a796ef 22 Jun 2026 pre-release

    Nothing published for this version

  19. v1.19.2-0.20260620100815-d31c0b3900bc 20 Jun 2026 pre-release

    Nothing published for this version

  20. v1.19.2-0.20260616130900-0996186cdfb9 16 Jun 2026 pre-release

    Nothing published for this version

  21. v1.19.2-0.20260613094544-874b47d0b07b 13 Jun 2026 pre-release

    Nothing published for this version

  22. v1.19.1 10 Jun 2026
    Release notes

    Fixes and improvements

    General

    • support using regexp groups in every part of a source URL (#5766) (#5779)
    • improve anti-brute force mechanism (#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 (#5858)
    • print body of selected HTTP responses when log level is debug (#5859)

    Media-over-QUIC

    • fix race condition when closing server (#5836) some sessions were hanging if they were concurrently being closed by the remote peer.
    • rename moqHTTPS2Address into moqHTTP2Address, moqHTTPS3Address into moqHTTP3Address (#5841)

    RTSP

    • support PROXY protocol (#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 (#5846) (#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 (#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, 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, 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
    
    Open source →
    Release notes

    v1.19.1

    Compare

    Choose a tag to compare

    Open source →
  23. v1.19.1-0.20260605150136-f5d7ed3138a5 05 Jun 2026 pre-release

    Nothing published for this version

  24. v1.19.0 02 Jun 2026
    Release notes

    New major features

    Media-over-QUIC

    • support reading and publishing with Media-over-QUIC (#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 for instructions and details.

    RTMP

    • support reading and writing FLAC (#5778) (#5789)

    HLS

    • support reading and publishing FLAC (#5778) (#5791)

    Fixes and improvements

    General

    • Add user agent field to RTMP, RTSP, WebRTC, and HLS (#5753)
    • add --check-version command line flag (#5786) this allows to check whether a new version is available without upgrading.
    • use file name suffix for OS-specific code wherever possible (#5787)
    • fix two hot reloading cases (#5817) * reload SRT server when metrics server is reloaded * reload API server when RTMPS server is reloaded

    RTSP

    RTMP

    HLS

    WebRTC

    • make JavaScript internal variables private (#5804)
    • fix connectivity after network changes (#5097) (#5818)

    RPI Camera

    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
    • golang.org/x/crypto updated from v0.51.0 to v0.52.0
    • golang.org/x/net updated from v0.54.0 to v0.55.0
    • golang.org/x/sys updated from v0.44.0 to v0.45.0
    • github.com/pion/dtls/v3 updated from v3.1.2 to v3.1.3
    • github.com/pion/sctp updated from v1.9.5 to v1.10.0
    • github.com/pion/srtp/v3 updated from v3.0.10 to v3.0.11
    • github.com/pion/stun/v3 updated from v3.1.2 to v3.1.4
    • github.com/pion/turn/v5 updated from v5.0.3 to v5.0.7
    • github.com/quic-go/webtransport-go v0.10.0 added
    • golang.org/x/sync v0.20.0 added
    • github.com/dunglas/httpsfv v1.1.0 added
    • github.com/bluenviron/mediamtx-rpicamera updated from v2.5.7 to v2.6.0

    Security

    Binaries are compiled from source code by the Release workflow, 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, 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
    
    Open source →
    Release notes

    v1.19.0

    Compare

    Choose a tag to compare

    Open source →
  25. v1.18.3-0.20260531183348-0f5a76e253a7 31 May 2026 pre-release

    Nothing published for this version

  26. v1.18.3-0.20260529122720-e00c5516523c 29 May 2026 pre-release

    Nothing published for this version

  27. v1.18.2 15 May 2026
    Release notes

    Fixes and improvements

    RTSP

    RTMP

    HLS

    • fix error 500 caused by in-stream params (bluenviron/gohlslib#355) (#5728) (#5745) PR bluenviron/gohlslib#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

    RPI Camera

    • support changing text overlay dynamically (#5270) (#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, 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, 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
    
    Open source →
    Release notes

    v1.18.2

    Compare

    Choose a tag to compare

    Open source →
  28. v1.18.2-0.20260430144319-0ad6897a4dd7 30 Apr 2026 pre-release

    Nothing published for this version

  29. v1.18.1 30 Apr 2026
    Release notes

    Fixes and improvements

    General

    • prevent code injection in case of MTX_QUERY in hooks (#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 (#5710) this prevents unwanted caching.

    HLS

    • prevent open redirect attacks (#5708)
    • support reading and writing KLV (#5604)
    • add hlsCDNSecret (#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 (bluenviron/gohlslib#349)
    • allow caching non-low-latency playlists (bluenviron/gohlslib#350)

    WebRTC

    • prevent open redirect attacks (#5708)

    RPI Camera

    Security

    Binaries are compiled from source code by the Release workflow, 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, 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
    
    Open source →
    Release notes

    v1.18.1

    Compare

    Choose a tag to compare

    Open source →
  30. v1.18.1-0.20260426184823-8107f7cc963c 26 Apr 2026 pre-release

    Nothing published for this version

  31. v1.18.0 26 Apr 2026
    Release notes

    New major features

    HLS

    • track sessions (#962) (#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 (#5696)

    Fixes and improvements

    General

    • improve listener labels (#5635) add a label after every "listener opened on :XXX" message that mentions protocols of every listener.
    • dump unencrypted TLS sessions (#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 (#5647) the legacy "jwt" query parameter key is still supported.
    • deprecate authJWTInHTTPQuery and disable JWTs in query parameters (#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 (#5649) this allows to parse tokens coming from RTSP and RTMP without additional effort.
    • playback: return errors as JSON (#5656) this is aligned with all other HTTP-based services.
    • prevent out-of-memory errors (#5674) impose a maximum size on body of incoming HTTP requests and responses.
    • metrics: improve performance (#5663) use string.Builder instead of string concatenation
    • metrics: add labels to the output (#5687) group metrics under visible, distinct labels.
    • metrics: fix filtering by type=rtmp_conns and type=rtmps_conns (#5689)
    • metrics: add readerType attribute to the path_readers metric (#5690) this allows to filter path readers by type.
    • metrics: use an enum for parsing metrics type (#5692)
    • metrics: fix race condition when reloading configuration (#5693)
    • docs: add scaling page (#5695)

    API

    • sort path readers (#5691)

    RTSP

    HLS

    • return JSON with error message in case path conf is not available (#5655) this behavior is aligned with WebRTC one.
    • improve muxer performance (#5660) use a mutex instead of a channel to get current instance.
    • fix running linter when there are unstaged git changes (bluenviron/gohlslib#336)
    • client: use redirected URL when reloading playlist (bluenviron/gohlslib#340) this allows to store and use tokens and signed URLs.
    • client: support reading KLV (bluenviron/gohlslib#337)
    • prevent out-of-memory errors (bluenviron/gohlslib#343)
    • muxer: generate init segment once (bluenviron/gohlslib#344) Previously, the init segment was regenerated in case of codec parameter changes, but changing the init segment has been proved to cause video and audio discontinuities on iOS. Now the init file contains starting parameters only and never changes during the stream lifetime.
    • client: increase size limit of segments and parts (bluenviron/gohlslib#345)
    • return a custom error when body size limit is exceeded (bluenviron/gohlslib#346)
    • muxer: store non-low-latency playlists and init files on disk (bluenviron/gohlslib#348)

    Dependencies

    • code.cloudfoundry.org/bytefmt updated from v0.67.0 to v0.69.0
    • github.com/alecthomas/kong updated from v1.14.0 to v1.15.0
    • github.com/bluenviron/gohlslib/v2 updated from v2.2.9 to v2.3.0
    • github.com/bluenviron/gortsplib/v5 updated from v5.5.1 to v5.5.2
    • github.com/go-git/go-git/v5 updated from v5.17.2 to v5.18.0
    • github.com/matthewhartstonge/argon2 updated from v1.4.6 to v1.5.2
    • github.com/pion/ice/v4 updated from v4.2.2 to v4.2.5
    • golang.org/x/crypto updated from v0.49.0 to v0.50.0
    • golang.org/x/sys updated from v0.42.0 to v0.43.0
    • golang.org/x/term updated from v0.41.0 to v0.42.0
    • github.com/pion/stun/v3 updated from v3.1.1 to v3.1.2
    • github.com/pion/turn/v4 removed
    • golang.org/x/net updated from v0.52.0 to v0.53.0
    • golang.org/x/text updated from v0.35.0 to v0.36.0
    • golang.org/x/time updated from v0.12.0 to v0.14.0
    • github.com/pion/turn/v5 v5.0.3 added
    • hls.js updated from v1.6.15 to v1.6.16

    Security

    Binaries are compiled from source code by the Release workflow, 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, 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
    
    Open source →
    Release notes

    v1.18.0

    Compare

    Choose a tag to compare

    Open source →
  32. v1.17.2-0.20260425165655-c4a1ba332a97 25 Apr 2026 pre-release

    Nothing published for this version

  33. v1.17.2-0.20260425081224-57671a391336 25 Apr 2026 pre-release

    Nothing published for this version

  34. v1.17.2-0.20260424212049-87543f91dda0 24 Apr 2026 pre-release

    Nothing published for this version

  35. v1.17.2-0.20260424170154-91aa6d9c6d2c 24 Apr 2026 pre-release

    Nothing published for this version

  36. v1.17.1 31 Mar 2026
    Release notes

    Fixes and improvements

    General

    • prevent directory traversal attacks (#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

    RTMP

    WebRTC

    • fix random absolute timestamps with Opus, G711 and LPCM (#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 (#5146) (#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

    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, 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, 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
    
    Open source →
    Release notes

    v1.17.1

    Compare

    Choose a tag to compare

    Open source →
  37. v1.17.1-0.20260326073714-b4d198647dec 26 Mar 2026 pre-release

    Nothing published for this version

  38. v1.17.0 17 Mar 2026

    Nothing published for this version

  39. v1.16.4-0.20260316204105-9a485119ece3 16 Mar 2026 pre-release

    Nothing published for this version

  40. v1.16.4-0.20260309193954-891befedf628 09 Mar 2026 pre-release

    Nothing published for this version

  41. v1.16.3 01 Mar 2026

    Nothing published for this version

  42. v1.16.2 22 Feb 2026

    Nothing published for this version

  43. v1.16.1 07 Feb 2026

    Nothing published for this version

  44. v1.16.0 31 Jan 2026

    Nothing published for this version

  45. v1.15.7-0.20260131134458-a56408db1966 31 Jan 2026 pre-release

    Nothing published for this version

  46. v1.15.7-0.20260131130910-06c7cc3d7fce 31 Jan 2026 pre-release

    Nothing published for this version

  47. v1.15.6 28 Dec 2025

    Nothing published for this version

  48. v1.15.5 07 Dec 2025

    Nothing published for this version

  49. v1.15.4 21 Nov 2025

    Nothing published for this version

  50. v1.15.4-0.20251114161948-3f599d236f6b 14 Nov 2025 pre-release

    Nothing published for this version

  51. v1.15.4-0.20251111110306-6380c5514b05 11 Nov 2025 pre-release

    Nothing published for this version

  52. v1.15.4-0.20251029104515-1ef5db5b3c1a 29 Oct 2025 pre-release

    Nothing published for this version

  53. v1.15.3 21 Oct 2025

    Nothing published for this version

  54. v1.15.3-0.20251019100307-f450dc5d43e9 19 Oct 2025 pre-release

    Nothing published for this version

  55. v1.15.2 13 Oct 2025

    Nothing published for this version

  56. v1.15.1 25 Sep 2025

    Nothing published for this version

  57. v1.15.0 18 Sep 2025

    Nothing published for this version

  58. v1.14.1-0.20250907140847-e0f4748839ea 07 Sep 2025 pre-release

    Nothing published for this version

  59. v1.14.1-0.20250831145727-55ff69067e12 31 Aug 2025 pre-release

    Nothing published for this version

  60. v1.14.1-0.20250815085724-9ab48ea48008 15 Aug 2025 pre-release

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive