mrkeyoor.com_
Tue 08 Sept 16:09 UTC
Self-Hostedevaluationupdated 08 Sept 2026

mediamtx review

MediaMTX is a self-hosted live media server that accepts video or audio streams, routes them across several protocols, records them, and serves them to viewers. It replaces separate RTSP, RTMP, HLS, WebRTC, SRT, RTP, MPEG-TS, and Media-over-QUIC gateways with one configurable process.

Verdict

Our MediaMTX build took 4 seconds, but only 122 of 127 tests passed, so v1.21.0 is easy to compile and still needs a reproduced green suite before a source-based production rollout. Use it when one operator-owned service should bridge camera and broadcast protocols without transcoding. Choose a managed platform or a narrower WebRTC stack if you do not want to own authentication, NAT, ports, codecs, and horizontal scaling.

We ran it

Lab card: what happened when we ran mediamtxScreenshot of mediamtx (mediamtx.org)
Install✓ · 35s153 packages
Build✓ · 4s
Tests✗ · 97s122 passed · 5 failed of 127 (go test)
Repo655 files~89,784 lines of source · 3.5 MB · 4 CI workflows

Answers from our run

Does mediamtx build from source?

Dependencies installed in 35 seconds (153 packages), and the build succeeded in 4 seconds. We cloned commit 3a9fdaf into a clean Debian container with 3 CPUs and no project-specific setup.

Do mediamtx's tests pass?

Not all of them: 122 of 127 passed and 5 failed when we ran the project's own test command (go test). Some failures need services or credentials a bare container does not have.

Who should not use mediamtx?

Teams expecting built-in transcoding: the re-encoding guide requires FFmpeg or GStreamer to change codec, format, or compression.

What are the alternatives to mediamtx?

SRS, LiveKit, OvenMediaEngine. Our MediaMTX build took 4 seconds, but only 122 of 127 tests passed, so v1.

Setup3/5Single binary, but real deployments need ports, auth, and NAT work
Docs5/5Detailed protocol, network, security, and scaling guides
Community5/520,067 stars with September releases and daily issue activity
Maturity4/5Broad v1.21 server with frequent releases; our 5 tests failed

Who it’s for

Operators bringing IP cameras, OBS, FFmpeg, browsers, and other publishers into one routing layer.
Teams that need to bridge RTSP or RTMP inputs to HLS or WebRTC readers without changing codecs.
Self-hosters who want recording, playback, hooks, Prometheus metrics, and a control API in one service.
Engineers comfortable owning ports, NAT, TLS, authentication, storage, and media compatibility.

Who it’s NOT for

Teams expecting built-in transcoding: the re-encoding guide requires FFmpeg or GStreamer to change codec, format, or compression.
Anyone planning to expose the default configuration directly to the internet: it permits anonymous publishing, reading, and playback on every path.
Operators who want WebRTC to work through every NAT without network design: the docs require public host settings and may require TCP, STUN, or TURN.
Buyers seeking an automatic clustering control plane: the scaling guide assembles origins, read replicas, load balancers, sticky sessions, or a CDN outside MediaMTX.
Teams requiring a clean source suite in our stated Debian environment: 5 of 127 tests failed, and the supplied log tail did not name the failing cases.

Setup reality

Our sandbox installed MediaMTX in 35 seconds with 153 packages, then built it successfully in 4 seconds. Tests failed after 97 seconds with 122 passed and 5 failed out of 127. The log tail showed several packages passing before a final FAIL, but it did not identify the five cases or their causes.

A basic trial needs no account or credential: download the binary or run the official container. Production needs a YAML or environment configuration, path permissions, TLS or a VPN, recording storage, and possibly an HTTP auth service, JWT provider, STUN server, or TURN credentials.

The Docker example publishes 9 TCP or UDP port mappings and requires a reachable WebRTC host address. NAT, firewalls, browser codec support, and RTSP UDP behavior are real deployment work. Codec changes require FFmpeg or GStreamer, which are separate from the base image.

MediaMTX v1.21.0 accepts 8 publishing protocols in one process

MediaMTX v1.21.0 is a media router for Media-over-QUIC, SRT, WebRTC, RTSP, RTMP, HLS, MPEG-TS, and RTP publishers. Readers can connect through Media-over-QUIC, SRT, WebRTC, RTSP, RTMP, or HLS. The server links one publisher or external source to a named path, then broadcasts that stream to its readers. For a camera fleet or live-production toolchain, this can replace several small protocol gateways and their separate configuration files.

The same process can pull remote sources, forward streams, record fMP4 or MPEG-TS to disk, and serve playback. Optional endpoints expose a control API, Prometheus metrics, and pprof data. Hooks can launch external commands when clients connect, publish, read, or disconnect. Configuration reloads do not disconnect existing clients. That is a lot of operational surface in one binary, and each enabled listener still needs an explicit access and exposure decision.

What happened when we ran it

Our sandbox installed commit 3a9fdaf in 35 seconds and pulled 153 Go packages. Compilation succeeded in 4 seconds. The full test step ran for 97 seconds, then exited with code 1: 122 tests passed and 5 failed out of 127. This is a mixed result. Source builds are quick, but the checkout did not clear its complete suite in our fresh 3-CPU, 8 GB Debian container.

The supplied log tail listed successful packages for static sources, HLS, Media-over-QUIC, MPEG-TS, Raspberry Pi camera downloading, RTMP, RTP, RTSP, SRT, WebRTC, and stream handling. It ended with a bare FAIL and did not name the 5 failed tests or show their diagnostics. We cannot attribute the result to networking, privileges, timing, or missing system software from that excerpt. Reproducing the full output is a release gate for anyone building this commit.

Protocol conversion does not include codec conversion

MediaMTX can accept a stream through one protocol and make it readable through another when the media itself is compatible. That is routing and remuxing, not a promise to turn any input codec into one every browser can decode. The re-encoding guide tells users to run FFmpeg or GStreamer through hooks when they need a different format, codec, or compression level. The base Docker image intentionally omits utilities, while separate image variants add FFmpeg or Raspberry Pi camera support.

Browser playback makes this boundary visible. The WebRTC guide warns that browser codec support varies, especially for H.265 and H.264 streams containing B-frames. Its compatibility example uses H.264 baseline and Opus via an external FFmpeg process. A deployment that accepts arbitrary cameras needs a codec inventory and a decision about where transcoding runs. The 153 packages in our source build do not turn the MediaMTX process into a general transcoder.

The shipped v1.21.0 configuration allows anonymous stream access

The default internal user is any, with publish, read, and playback permissions on every path and no IP restriction. Administrative API, metrics, and pprof permissions are limited to localhost by default, and those services start disabled. This makes a local demo easy. It is an unsafe starting point for an internet-facing host unless the operator replaces the stream permissions, restricts the network, and enables encryption or a VPN as the authentication guide advises.

Authentication can remain in the YAML file with Argon2 or SHA-256 hashes, call an HTTP endpoint for each decision, or validate JWTs against a JWKS provider. Permissions cover actions and paths. Protocols carry credentials differently, and token length limits matter for RTSP, RTMP, and SRT clients. Release v1.21.0 also changed default allowed origins for administrative endpoints and added credential redaction in RTSP logs, evidence that browser and log exposure need version-aware review.

The Docker quick start publishes 9 TCP or UDP mappings

The official container command maps 9 TCP or UDP entries, including RTSP, RTMP, HLS, WebRTC, SRT, and Media-over-QUIC listeners. WebRTC needs webrtcAdditionalHosts set to an address clients can reach. A container or NAT must route UDP port 8189, or the operator can enable TCP, configure STUN for hole punching, or provide a TURN relay and its credentials. RTSP UDP may require host networking, which the install guide says is incompatible with Windows, macOS, and Kubernetes.

Horizontal scale is similarly hands-on. The documented design puts publishers on an origin and readers on replicas, with a Layer 4 load balancer for RTSP, RTMP, and SRT or a sticky Layer 7 balancer for HLS and WebRTC. A CDN can offload HLS, but the guide says low-latency playlists remain uncacheable and normal MediaMTX authentication no longer applies. MediaMTX supplies the routing pieces; autoscaling, load balancing, shared secrets, and failure recovery remain infrastructure work.

A September 8 push outweighs the 190 open threads

GitHub showed 20,067 stars, 164 open issues, and 26 open pull requests. The last push was September 8, 2026, three days after v1.21.0. The ten most recent releases listed by GitHub span April 26 through September 5, a rapid cadence for a network server. Recent changes covered dependency updates, H.265 recording, allowed-origin checks, Media-over-QUIC forwarding, API fields, and protocol fixes. The queue is large, but activity is current and specific.

SRS is the broader broadcast-server alternative when built-in workflows matter more than a compact router. LiveKit is a better match for WebRTC rooms, participant state, and application SDKs. OvenMediaEngine focuses on large low-latency broadcast delivery. MediaMTX is the cleaner choice when your problem is moving existing streams among protocols and you can keep codecs unchanged. Its 4-second build is appealing; the 5 failed tests and substantial network configuration keep this from being a blind install.

Alternatives

ProjectWhat it isPick it when
SRSA live video server covering RTMP, WebRTC, HLS, SRT, and related delivery paths.pick this instead when a larger streaming stack and built-in media workflows matter more than a small single-binary router.
LiveKit gh↗A WebRTC server and realtime platform aimed at rooms, participants, and application SDKs.pick this instead when interactive calls, participant state, and WebRTC application APIs are the main problem.
OvenMediaEngineA low-latency streaming server centered on WebRTC and low-latency HLS delivery.pick this instead when large-audience low-latency broadcast delivery is more important than MediaMTX's compact protocol router.

What people are saying

  1. [velocity-scout] bluenviron/mediamtx

Sources

  1. MediaMTX GitHub repository
  2. MediaMTX install guide
  3. MediaMTX authentication guide
  4. MediaMTX WebRTC networking guide
  5. MediaMTX scalability guide
  6. MediaMTX v1.21.0 release

More self-hosted reviews

FlClash · zulip · toolhive · HAMi · filebrowser · remux · the whole board →