0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MediaMTXを使ってVRChatで画面共有をするための備忘録

0
Last updated at Posted at 2026-06-13

初めに

MediaMTXを使ってVRChat上で友人と画面共有をするために、実際に詰まったポイントをまとめた備忘録です。
手順そのものよりも、「どこでハマるか」「どこを先に決めておくべきか」を残すことを目的にしています。

この記事の対象となる人

  • Windows環境で試したい人
  • OBSの基本的な設定ができる人
  • ポート開放や外部公開の基礎を理解している人
  • VRChat側でRTSP配信を受けたい人

先に結論

構成はシンプルです。

  • Windows上で MediaMTX を動かす
  • OBS で画面キャプチャとエンコードを行う
  • OBS から MediaMTX に配信する
  • VRChat 側では RTSP で受信する

ただし、実際には以下がハマりどころでした。

  • OBS で認証をする場合は認証情報はOBSにあるユーザー名とパスワードの欄ではなくストリームキーとして渡す必要がある
  • VRChat で安定して受信するには、MediaMTX側で RTSP over TCP に固定しておく
  • 視聴側は認証に対応していない

構成

今回の構成は次の通りです。

  • 配信PC: Windows
  • 配信ソフト: OBS
  • 配信サーバー: MediaMTX
  • 視聴側: VRChatの IwaSyncYamaPlayer
  • 配信先: 外部公開したローカルの RTSP (MediaMTX)サーバー

流れとしては、OBS から MediaMTX へ送信し、VRChat 側のプレイヤーで rtsp://example-domain.example:8554/live を読む形です。
ここで使っている live は固定名ではなく、任意の文字列にできます。
ただし、パス名を変更した場合は OBS のストリームキーに含めるパスも同じ名前に変更する必要があります。

ポートについて

今回の構成では、通信経路ごとに開けるポートを先に整理しておくのが重要でした。

  • UDP を使わない場合は、TCP 8554 だけでよい
  • HLS を使う場合は、TCP 8888 も公開する
  • HLS を使う場合の再生URLは http://example-domain.example:8888/live/index.m3u8

VRChat 側で RTSP over TCP を使う前提なら、まずは 8554/TCP を基準に考えるとわかりやすいです。
もし HLS も併用するなら、追加で 8888/TCP を開ける必要があります。
ここで使っている live も任意の文字列に置き換えられます。

MediaMTXの準備

MediaMTX は GitHub からダウンロードして解凍しました。
実行ファイルを置いて起動し、設定ファイルを編集します。

今回触ったのは authInternalUsersrtspTransports です。

まず、RTSPの通信方式をTCPに固定します。

rtspTransports: [tcp]

デフォルトでは udpmulticast も含まれますが、VRChat側で安定して受信するためにTCPのみへ制限しました。

次に、認証設定を変更します。

authInternalUsers:
  - user: example-user
    pass: example-password
    ips: ["127.0.0.1", "::1"]
    permissions:
      - action: publish
        path:
      - action: read
        path:
      - action: playback
        path:

  - user: any
    pass:
    ips: []
    permissions:
      - action: read
        path:
      - action: playback
        path:

この設定の意図は次の通りです。

  • example-user はローカルからの publish を許可する
  • any は視聴用の readplayback を許可する
  • 視聴側に認証を求めない

認証を必要とするのは OBS からの送信側だけです。

OBSの設定

OBS の役割は画面キャプチャとエンコードです。
配信先はローカルで動かす前提なので、サーバーはループバックアドレスを使いました。

  • サーバー: rtmp://127.0.0.1
  • ストリームキー: live?user=example-user&pass=example-password

ここが最初のハマりポイントでした。
OBS の配信設定では、認証情報をストリームキーとして渡す必要があります。
つまり、単純にURLだけ入れればよいわけではなく、userpass をクエリとして持たせる形にします。

VRChat側の受信

VRChat側では IwaSyncYamaPlayer を使って受信しました。
このときのURLは次の形式です。

rtsp://example-domain.example:8554/live

または

rtsp://自宅のIPアドレス:8554/live

ここで重要なのは、VRChat側ではRTSPをTCPで受ける前提にすることです。
URLスキームは rtsp:// のままにして、MediaMTX側の rtspTransportstcp のみに制限します。

ハマりポイント

今回の詰まりどころは主に3つでした。

1. OBSの認証情報の渡し方

OBS の配信設定では、認証情報をストリームキーに含める必要があります。
ここをOBSのユーザー名・パスワード欄に入力しても MediaMTX に正しく届きません。

2. VRChatではRTSP over TCPを前提にする

VRChat 側のプレイヤーは TCP 前提です。
MediaMTX側をTCP固定にしたうえで、受信側のURLは rtsp://... を使います。
ローカルループバックアドレスやNICに割り当てられたアドレスへの接続だとUDPで繋がるのに、ヘアピンNATや外部への接続だと繋がらないことがありました。
私はここで1日くらい悩みました。

3. 視聴側の認証は考えない

視聴側に認証を持たせようとすると、VRChat 側の受信と噛み合いません。
今回の方針では、認証は配信側だけに寄せて、視聴側はそのまま読めるようにしました。

まとめ

MediaMTXOBSVRChat を組み合わせると、外部公開した RTSP 配信をVRChat上で共有できます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?