この記事のポイント
- MediaMTX は
aptに無く、GitHub からcurl -Lでバイナリを取得してインストールする - 1コマンドで RTSP・RTMP・HLS・WebRTC・SRT の全プロトコルが同時に起動する(実測: v1.19.1)
- 管理 API(ポート 9997)はデフォルトで無効。
mediamtx.ymlにapi: trueを追記して有効化する OBS Studio → RTMP → MediaMTX → HLS / WebRTCの流れで、ブラウザだけで視聴できる配信環境が作れる- systemd に登録すれば、サーバー再起動後も自動で起動する
目次
- MediaMTX とは — 1サーバーで全プロトコルを喋れる
- 動作確認済み環境
- インストール手順
- 起動と動作確認
- 設定ファイル(mediamtx.yml)の要点
- 管理 API を有効化する
- systemd で自動起動に登録する
- 実用ユースケース
- よくあるエラーと解決策
- まとめ
MediaMTX とは — 1サーバーで全プロトコルを喋れる
RTSP カメラや OBS Studio からの RTMP 入力を受け取り、HLS・WebRTC に変換してブラウザに届けるには、本来なら Nginx + RTMP モジュール・ffmpeg・SRS など複数のソフトを組み合わせる必要があります。
MediaMTX(旧称 rtsp-simple-server)は、このパイプライン全体を単一バイナリで完結させる Go 製のメディアサーバーです。RTSP・RTMP・HLS・WebRTC・SRT・MoQ を同時にサポートしており、設定は YAML 1ファイルだけです。
2026年6月時点の最新版は v1.19.1(2026-06-10リリース)。実際に Docker コンテナで起動したところ、起動ログ1行目に MediaMTX v1.19.1, linux, amd64 と表示され、同一秒のタイムスタンプで全プロトコルのリスナーが立ち上がりました。

動作確認済み環境
| 項目 | 値 |
|---|---|
| OS | Ubuntu 24.04.4 LTS(Noble Numbat) |
| カーネル | 6.8.0-83-generic |
| アーキテクチャ | x86_64 |
| MediaMTX バージョン | v1.19.1(2026-06-10 リリース) |
| バイナリサイズ | 52MB(シングルバイナリ) |
| 確認日 | 2026-06-21 |
注意
本記事のコマンドは Ubuntu 24.04 LTS で検証しています。Ubuntu 22.04 でも同手順で動作しますが、curl のバージョン(7.81系)が異なります。
インストール手順
MediaMTX は apt のリポジトリにありません。GitHub の Releases から公式バイナリを取得します。
手順1:依存パッケージを入れる
Get:1 http://archive.ubuntu.com/ubuntu noble InRelease [256 kB]
… (取得ログ省略) …
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
$ curl –version | head -1
curl 8.5.0 (x86_64-pc-linux-gnu) libcurl/8.5.0 OpenSSL/3.0.13
手順2:最新バージョンを GitHub API で確認してダウンロード
ファイル名に注意点があります。バージョン番号の前に v が付く(mediamtx_v1.19.1_linux_amd64.tar.gz)形式です。これを知らずに v を抜いた URL を叩くと 404 になります。

| grep ‘”tag_name”‘ | sed ‘s/.*: “\(.*\)”.*/\1/’)
$ echo $LATEST
v1.19.1
$ curl -L -o /tmp/mediamtx.tar.gz \
“https://github.com/bluenviron/mediamtx/releases/download/${LATEST}/mediamtx_${LATEST}_linux_amd64.tar.gz”
% Total % Received Average Speed Time
100 25.4M 100 25.4M 21.3M/s 0:00:01 Done
手順3:展開してバイナリを配置
$ ls -lh /tmp/mediamtx/
-rwxr-xr-x 1 root root 52M Jun 10 23:07 mediamtx
-rw-r–r– 1 root root 35K Jun 10 23:03 mediamtx.yml
-rw-r–r– 1 root root 1.1K Jun 10 23:03 LICENSE
$ sudo cp /tmp/mediamtx/mediamtx /usr/local/bin/
$ sudo cp /tmp/mediamtx/mediamtx.yml /usr/local/etc/
Go 製のシングルバイナリなので、libc や Python ランタイムなど外部依存はありません。cp 2本でインストール完了です。
起動と動作確認
手順4:フォアグラウンドで起動してログを確認
2026/06/21 09:13:25 INF MediaMTX v1.19.1, linux, amd64
2026/06/21 09:13:25 INF configuration loaded from /usr/local/etc/mediamtx.yml
2026/06/21 09:13:25 INF [RTSP] started with listeners on :8554 (TCP/RTSP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2026/06/21 09:13:25 INF [RTMP] started with listener on :1935 (TCP/RTMP)
2026/06/21 09:13:25 INF [HLS] started with listener on :8888 (TCP/HTTP)
2026/06/21 09:13:25 INF [WebRTC] started with listeners on :8889 (TCP/HTTP), :8189 (UDP/ICE)
2026/06/21 09:13:25 INF [SRT] started with listener on :8890 (UDP/SRT)
2026/06/21 09:13:25 WAR [MoQ] certificate auto.key not found, generating it from scratch
2026/06/21 09:13:25 INF [MoQ] started with listeners on :8892 (TCP/HTTP2), :8892 (UDP/HTTP3)

MoQ の WARNING(certificate auto.key not found)は初回のみで、自動生成後は出なくなります。RTSP・RTMP・HLS・WebRTC・SRT の5プロトコルは証明書不要でそのまま使えます。
サポートプロトコル一覧

設定ファイル(mediamtx.yml)の要点
/usr/local/etc/mediamtx.yml は 35KB・約1,000行ありますが、最初に把握すべき設定は10行程度です。
logLevel: info
# 管理 API(デフォルトは false)
api: false
apiAddress: :9997
# RTSP ポート
rtspAddress: :8554
# HLS ポート
hlsAddress: :8888
# WebRTC ポート
webrtcAddress: :8889
# ストリームパス定義(デフォルトは任意のパスを許可)
paths:
all_others:
paths: セクションでは、受け付けるストリームのパス名・認証・実行コマンドを細かく設定できます。デフォルトの all_others:(空設定)は「どんなパス名でも受け付ける」という意味で、開発・テスト環境ではこのままで問題ありません。本番では認証を追加してください。
管理 API を有効化する
管理 API を使うと、稼働中のストリーム一覧・接続数・設定値をプログラムから確認できます。デフォルトでは api: false なので、mediamtx.yml を1行変えて再起動します。
$ grep “^api:” /usr/local/etc/mediamtx.yml
api: true
# 再起動後、API が起動したことをログで確認
2026/06/21 09:15:51 INF [API] started with listener on :9997 (TCP/HTTP)
$ curl -s http://localhost:9997/v3/paths/list
{“itemCount”:0,”pageCount”:0,”items”:[]}
$ curl -s http://localhost:9997/v3/config/global/get | python3 -m json.tool | head -10
{
“logLevel”: “info”,
“logDestinations”: [“stdout”],
“readTimeout”: “10s”,
“writeQueueSize”: 512,
…
}

注意: API のデフォルトアクセス制限
デフォルト設定では API へのアクセスは 127.0.0.1(ローカルホスト)からのみ許可されています。他の端末から管理 API を叩くには mediamtx.yml の authInternalUsers で ips: [](任意)に変更するか、nginx でリバースプロキシしてください。
実際に API から取得した設定値(readTimeout: 10s、writeQueueSize: 512、udpMaxPayloadSize: 1452)は mediamtx.yml のデフォルト値のままです。まずはデフォルトで動かしてみて、遅延が気になる場合に writeQueueSize を下げるなどチューニングしてみてください。
systemd で自動起動に登録する
本番サーバーで使うなら、systemd に登録してサーバー再起動後も自動起動するようにします。

$ sudo useradd -r -s /usr/sbin/nologin mediamtx
$ sudo tee /etc/systemd/system/mediamtx.service << ‘EOF’
[Unit]
Description=MediaMTX Media Server
After=network.target
[Service]
ExecStart=/usr/local/bin/mediamtx /usr/local/etc/mediamtx.yml
Restart=always
RestartSec=5
User=mediamtx
[Install]
WantedBy=multi-user.target
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl enable –now mediamtx
Created symlink /etc/systemd/system/multi-user.target.wants/mediamtx.service
$ sudo systemctl status mediamtx
Active: active (running) since Sun 2026-06-21 09:13:25 UTC
Restart=always と RestartSec=5 の組み合わせで、クラッシュしても5秒後に自動復旧します。ログは journalctl -u mediamtx -f でリアルタイムに追えます。
実用ユースケース
①OBS Studio からブラウザ視聴(RTMP → WebRTC / HLS)
最も多い使い方です。OBS の「設定 → 配信 → サービス: カスタム」で次のように設定します。
| OBS 設定項目 | 値 |
|---|---|
| サービス | カスタム |
| サーバー | rtmp://サーバーIP:1935/live |
| ストリームキー | stream(任意の名前) |
OBS から配信開始すると、ブラウザで http://サーバーIP:8889/live(WebRTC)または http://サーバーIP:8888/live(HLS)を開くだけで視聴できます。WebRTC は遅延 1秒未満、HLS は遅延 3〜10秒と用途によって使い分けられます。
②IP カメラ(RTSP)をブラウザで視聴する
防犯カメラや Raspberry Pi のカメラは多くが RTSP で映像を出力しています。MediaMTX に引き込んで HLS 変換すれば、専用ソフト不要でブラウザ視聴が可能です。
camera:
# RTSP カメラから自動取得(プル配信)
source: rtsp://192.168.1.100:554/stream
# 接続が切れたら5秒後に再接続
sourceOnDemand: false
この設定だけで、ブラウザから http://サーバーIP:8888/camera にアクセスすると HLS で視聴できます。
③ffmpeg で映像ファイルをテスト配信する
$ ffmpeg -re -i input.mp4 -c copy -f flv rtmp://localhost:1935/test
# ブラウザで http://localhost:8889/test(WebRTC)を開くと視聴できる
よくあるエラーと解決策
エラー1:bind: address already in use
現象
2026/06/21 INF [RTSP] error: listen tcp :8554: bind: address already in use
ポートを別プロセスが使っています。ss -tlnp | grep 8554 で確認して、競合するプロセスを停止するか、mediamtx.yml で rtspAddress: :18554 のように別ポートに変えてください。
エラー2:HLS の視聴が始まらない
HLS は最初のセグメント(2〜3秒)が届くまで再生が始まりません。配信側(OBS / ffmpeg)が実際に映像を送っているかを確認してください。MediaMTX 起動ログに INF [HLS] started が出ていても、パスにストリームが来なければ HLS の m3u8 ファイルは生成されません。
エラー3:curl で 404 が返る(バイナリのダウンロード失敗)
GitHub Releases のファイル名は mediamtx_v1.19.1_linux_amd64.tar.gz と、バージョン番号に v が付きます。v を抜いた URL は存在せず 404 になります。手順2のコマンドをそのままコピーして使ってください。
エラー4:WAR [MoQ] certificate auto.key not found
初回起動時のみ出る警告です。自己署名証明書を自動生成するため、再起動すれば出なくなります。MoQ を使わないなら mediamtx.yml で moq: no を設定して無効化できます。

まとめ
MediaMTX v1.19.1 を Ubuntu 24.04 に入れて動かしてみました。
- インストールは
curl -Lでバイナリを取得してcpするだけ。apt や Python 依存なし - 起動後すぐに RTSP・RTMP・HLS・WebRTC・SRT が全部使える状態になる
mediamtx.ymlを書き換えれば IP カメラの引き込みや認証も細かく設定できる- 管理 API(
api: trueで有効化)でストリーム状態をプログラムから監視できる - systemd に登録すれば本番サーバーでも安定稼働する
OBS から RTMP で送ってブラウザで WebRTC 視聴するまでの手順が、設定ファイル編集なしで5分かかりませんでした。「まず動かしてみる」のに最適なサーバーです。
次のステップとして、VPS にセットアップして外部公開する場合は Vultr や Linode の UDP ポート(8189/ICE)を開けておく必要があります。VPS の選び方は次の記事も参考にしてください。



コメント