
VRChatでVJをするためのガイド
2024年12月24日更新
VJアドベントカレンダー 2024の11日目の記事です!
monoton (@monoton_music) が担当します!
VRでVJをするための記事です。
この記事を読んでほしい人
この記事は、VRChatでVJをするのが初めての方や、興味がある方、改めてVJのやり方を確認したい方に向けたガイドです。
また、VRChatでイベントを主催する方が、初めてVRChatに挑戦するVJを呼ぶときに渡せる参考資料としても活用していただくことを想定しています。
ガイドと銘打った通り、困ったときに頼れる記事を目指して書きます!
基本的なガイドに加えて、筆者なりに工夫している点も少し書いているので、VRChatのVJに慣れている方にも楽しんでいただけるかと思います。
記事について
筆者が初めてVRChatでVJをしたとき、リアルイベントとは異なるところも多く、色々と困ったので、備忘録としてまとめて記事にすることにしました。
VRChatでのVJの仕組みと、実際にVJを行うときの設定や流れについて、分かりやすく解説します。
内容が多い(1万字ある)ので、適当に読み流したり、その時々で必要な部分だけ見返すような使い方がおすすめです。最初からじっくり読み通すのは大
変だと思います。
セクションごとの内容は次の通りです。
概要→とりあえずざっくり全体を知る
準備→必要なものを知る
実践1、実践2→実際に行う際の手順を知る
当日→当日の動きを知る
おわりに→VRChatでVJをすることのおもしろさについて(おまけ)
また、必要に応じて、他の役立つ記事も紹介しています。
VRChatとは
VRChatという、VRの中で他のユーザーと自由に交流できるサービスがあります。
例えるなら、「オープンワールドゲームのように自由に動き回りながら、アイテムや空間を作って楽しむこともできるプラットフォーム」です。
VRChatには、無数のワールド(会場)があり、そのあちこちで、ライブ・クラブイベントが毎日のように行われています。
その中で活躍するVJもたくさんいます。
みんなでリアルの場所に集まらなくとも、家にいながらでも、イベントを楽しんだり交流したりすることができます。
VRChatの基本的な始め方については、すでに分かりやすい記事がたくさん出ているので、ぜひ参考にしてください。
このガイドでは、VRChatをすでにプレイできる状態になっている前提で進めます。
VRChatで筆者がVJをする様子↓
#NotApplicable_VR pic.twitter.com/uDqAeMGP53
— Raike_KAMUY(ライケ) (@Raike_KAMUY) September 29, 2024
用語解説
VRChatで行われるイベントに対して、リモートではなく、クラブなどの現地会場に集まって参加するイベントを、ここでは「リアルイベント」と呼ぶことにします。
映像を出す役割を「VJ」と呼びます。
音を演奏する側については、ここではまとめて「DJ」と呼ぶことにします。
また、「配信」という表現が出てきますが、ここで使う配信という言葉は、YouTubeなどで不特定多数に向けて公開するライブ配信とは少し異なります。ここでは、単にインターネット回線を通じて、特定の相手に音や映像を送ることを指します。
音や映像の配信には、「OBS Studio」(以降、単にOBSと呼びます)という無料・オープンソースのソフトを使います。他の配信ソフトを使ってもVJができますが、このガイドではOBSを使います。

概要:VRChatで行うVJの仕組み
遠隔でどうやって音と映像を合わせるのか
VRChatのイベントでは、DJとVJ、お客さんがそれぞれ離れたところから、1つの「ワールド(インスタンス)」に参加します。
ワールドは、リアルイベントでいうところの会場になります。
お互い離れている状態で、音や映像を配信すると目立った遅延が生じてしまいます。
そのため、リアルイベントのように、DJが流している音を聞いてVJをして、DJの音とVJの映像をそれぞれ届けると、お客さんからはズレているように見えてしまいます。

そこでVRChatのイベントでは、まずDJが音を鳴らし、音のみを配信によって送ります。
それをVJが受け取り、手元で再生された音に合わせて映像を出します。
さらに、VJは受け取った音と自分の映像をまとめてワールドに送ることで、お客さんに届くようになります。
このため、DJが音を出してから、VJが映像を出してからお客さんに届くまでにはそれぞれ遅れがあるのですが、お客さんから見ると音と映像が合った状態で届くようになります。

VJが落ちるとイベントが止まる
このため、VJが送信する配信が止まってしまうと、ワールドにいるお客さんからは何も見えず、何も聞こえない状態になります。
VJのPCのトラブル次第で音も止めてしまうことになるので、リアルイベントにはないプレッシャーがあります…が、止めてしまっても皆さん暖かい目で見守ってくれると思うので、落ち着いて復旧しましょう!
準備:VJを行うために必要なもの
以下のものを用意します。
安定したインターネット接続
安定した配信のため、有線接続を推奨します。
特に、モバイル回線のテザリング等では安定しない場合があります。
VJ用PC
MacでもWindows PCでも使用できます。
VJに使うソフトと、OBS、およびVLC Media Playerをインストールしておいてください。OBSのバージョンが古い場合はアップデートしてください。
リアルイベントのVJと同じように、必要ならMIDIコントローラー、追加のディスプレイなども準備します。
このPCは、音を受け取って映像とともに配信するためのものですので、VRChatを立ち上げる必要はありません。
VRChat用PC
安定した配信のため、VJ用PCと分けることを推奨します。
原則、Windows PCを使うことになります。
こちらからVJの配信を行うことはありません。

(発展)VJの動きをVRChatのアバターに反映させる
なお、今回は初めての方に向けたガイドということで、VJの身体の動きをトラッキング(モーションキャプチャー)し、VRChatのアバターに反映させることについては扱わず、VJはHMD(いわゆるVR用ゴーグル)をつけない想定です。
この方法では基本的に、ワールドでのVJは棒立ちになります。
トラッキングについて気になる方は、DJ向けの以下の記事が参考になります。
実践1:DJ→VJの配信
ここからは、実際にVJを行う際の配信について順に説明します。
まず、DJが鳴らした音を、配信を通してVJに伝えます。
DJは、PC内で立ち上げたrecordbox等のDJソフト、あるいはPCに接続した外部のDJ機器などの音声を、OBSなどを用いて配信します。
VJがこれをVLC Media PlayerとOBSで受け取ります。詳細はこれから説明します。
このとき、配信には「サーバー」と「ストリームキー」を指定する必要があります。
分かりやすさ重視で例えれば、「サーバー」はデータの配送業者を指定し、「ストリームキー」は送り先の住所を指定しているイメージです。
通常は、VJ側がこの「サーバー」と「ストリームキー」を事前に指定して、DJ側に伝えます。
「サーバー」と「ストリームキー」について
サーバーはデータの配送業者といいましたが、これに使えるサービスはいくつかあり、代表的なのがVRCDNとTopazChatです。
サービスの選び方と、VRCDNの場合の使い方については、以下の記事が詳しいです。
TopazChatを使う場合は、以下のBOOTHのページを参照してください。
なお、TopazChatは個人利用であれば無償で提供されています(2024/12/11現在)が、運営は有志によって支えられています。
TopazChatを利用する場合は、ぜひ以下のFANBOXからカンパを検討してください!
VJ側の受け取り設定について
VJは、VLC Media Playerをインストールした状態で、VJ用PCでOBSを開きます。
OBSの基本的な使い方について確認したい場合は、以下の記事がおすすめです。
このガイドでは、具体的な操作だけを確認します。
解説のスクリーンショットでは、Apple SiliconのMacBookを使用していますが、PCによらず操作はほぼ共通です。
まず、VJに使用するシーンを作成します。
「シーン」左下の「+」ボタンから、適当な名前をつけて作成します。

次に、「ソース」左下の「+」ボタンから、「VLCビデオソース」を選択し、「新規作成」します。

その後表示されるウィンドウの、「プレイリスト」の右側にある「+」ボタンの「パス/URLを追加」から、プレイリストにURLを追加します。

このURLは、「サーバー」と「ストリームキー」によって決まるもので、
例えばVRCDNなら
rtmp://ingest.vrcdn.live/live/{ストリームキー}
TopazChatなら
rtsp://topaz.chat/live/{ストリームキー}
のようになります。状況によって使うべきURLの表記が変わることがありますので、詳しくは各サービスについての解説を読んでみてください。
(12/24追記:以下の「VLCビデオソース」ではうまく音が受け取れなかったり、音が入ってくるようになるまで遅れたりする問題が起きることがあります。その際は、さらに後に示す「VLC Media Playerを使わない方法について」を参考に「メディアソース」から音を受け取ってください。)
次に、「音声ミキサー」の「Desktop Audio」が無効になっている(左下のスピーカーマークが赤くなっている)こと、「VLCビデオソース」が有効になっていて青いスライダーが右端になっていること(0.0dB)を確認します。

そのあと、「音声ミキサー」左下の歯車マークのボタンから、「オーディオの詳細プロパティ」を開き、「VLCビデオソース」の音声モニタリングを「モニターと出力」に設定します。
これは、DJの音を手元で聞き、かつ、後で説明するVJからワールドへの配信にDJの音を入れるためです。


この時点で、OBS自体の設定でモニター音声の出力先がスピーカーやヘッドホンなどに正しく設定されていれば、DJから配信された音がVJの手元で聞こえるはずです。
ここまでで、DJの音の配信をVJが受け取ることができました。
VLC Media Playerを使わない方法について
(12/24追記)
このセクションのOBSでは、VLC Media Playerのビデオソースとして音の受け取りを行いましたが、VLCを介さずに音を受け取る方法もあります。その場合は、ソースに「メディアソース」を追加し、以下のように設定します。
「ローカルファイル」のチェックボックスを外してから、「入力」に先ほどと同様のURLを、「入力フォーマット」には、URLの先頭の部分、例えば以下のスクショの例なら「rtmp」を入力します。
その他の設定は基本そのままで大丈夫です。

「オーディオの詳細プロパティ」以降については、「VLCビデオソース」と同様にモニターなどを設定します。
どうやらVLCを使う方が色々と都合がいいらしいということで、筆者はVLCを使う方法を採用していますが、正直はっきりとした違いは理解していません…(12/24追記:現在、筆者の環境ではVLCビデオソースの調子が悪いので、メディアソースを使用しています。特に目立った不都合はないので、多分メディアソースでも大丈夫です。一応、VLCの方が遅延が小さかったりするそうです)
実践2:VJ→ワールドの配信
この後は、いよいよVJソフトで出した映像と、DJから受け取った音を、まとめてOBSから配信に乗せます。ここから、会場となるワールドに音と映像を届けることで、お客さんが音と映像を受け取ります。
VJソフトからOBSに映像を入力する方法ですが、MacならSyphon、Windows PCならSpoutという仕組みを利用するのがおすすめです。
VJソフトの出力先にSyphonあるいはSpoutを選択し、OBSの入力でもそれらを選択すると、VJソフトとOBSの間で、バーチャルなケーブルのように映像信号を繋ぐことができます。
使用しているVJソフトのドキュメントや説明書を探せば、それぞれ出力方法の記載があるかと思います。
Windows PCで使用するSpoutについては、以下の記事に解説があります。
VJソフトからSyphonまたはSpoutへの出力設定が済んだら、以下の手順でOBSの設定を進めます。
先ほどのセクションで、DJの音を受け取れるようになったところから続けます。
このセクションのうち、特にOBSの設定については、紹介しているものが絶対に正解というわけではなく、実際は環境に合わせて少しずつ調整することになります。あくまで参考としてご覧いただき、うまくいかない場合は詳しい人に相談しながら色々と変えてみてください。
OBSの設定確認
まず、画面右側の「設定」を開いて、映像についていくつか設定をします。

設定の中から「映像」を選び、以下のように設定します。
「基本 (キャンパス) 解像度」をVJ出力と同じ解像度に設定
通常のサイズのVJであればフルHD(1920x1080)でOK
「出力 (スケーリング) 解像度」
を少し小さめに設定もまずは上と揃えて1920x1080で試してみてください(12/14修正)ワールドで使っている映像再生の仕組みによっては、1920x1080で送らないと不具合が起こることがある
筆者も一度1280x720で送ってカクつくのを経験しました(正確な原因は切り分けできていませんが…)
配信するデータを小さくするために行う上を1920x1080に設定した場合は1280x720程度を選ぶ「アスペクト比」は上下2つで一致している必要がある
「縮小フィルタ」は「バイリニア」を選ぶ
「FPS共通値」は30に設定

次に、設定の中から「出力」を選び、以下のように設定します。
ここについては、MacかWindows PCか、またその構成によっても設定項目が若干異なります。例に出しているのは、Apple SiliconモデルのMacBookの場合です。
Windowsの場合は、オーディオビジュアルイベントdraw();が公開している以下の記事が参考になります。
VRChat における DJ/VJ向け 配信設定 - function-draw
まず、上部の出力モードは「詳細」に設定します。
「配信」タブから、次のように設定します。
配信設定のセクション
「音声トラック」は「1」に設定
「音声エンコーダ」は「CoreAudio AAC」に設定
「映像エンコーダ」は「Apple VT H264 ハードウェアエンコーダ」に設定
これはおそらくApple Siliconが入っているMac特有のエンコーダなので、適宜自分のPCに合わせて選ぶ
可能な限りハードウェアエンコーダでH264を使う
「出力をリスケールする」を無効にする
エンコーダ設定のセクション
「レート制御」
「CBR」に設定一旦「AVR」の方を試してみてください(12/24修正)
「ビットレート」を使っているサービスに合わせて設定
VRCDNであれば、3500Kbpsくらいを目安に
安定しない場合は3000, 2500と下げていく(12/24修正)
TopazChatであれば、2000Kbpsくらいを目安に
配信を試してみて、安定しているところを探る
ビジュアルが荒くて気になる場合はビットレートを上げる
配信が不安定な場合はビットレートを下げる
重要な注意点:VRCDN、TopazChatともに、規定値よりもビットレートを上げすぎると配信が停止されたり、ペナルティを受けたりすることがある
先ほど目安として示した値以下の範囲で探るのが安全
制限は変わることもあるので、最新の情報を確認すること
「キーフレーム間隔」を「1s」に設定
2sくらいから試してみてもいいかもしれないです(12/14追記)
「プロファイル」を「high」に設定
画像では「main」になっています
「high」で負荷が大きく安定しない場合は「main」を試します
「Bフレームを使用する」にはチェックを入れない

続けて「音声」タブから、次のように設定します。
トラック1のみ、音声ビットレートを「320」に設定します。
これのみ設定できればOKです。

また、これは必須ではないのですが、「録画」タブも適宜設定しておくと、本番の様子を録画することができます。録画方法やタイミングについては後で説明しますが、「録画」タブの設定例もスクリーンショットのみ簡単に示します。
後で反省会やアーカイブにも使えるので、可能なら録画しておくことをおすすめします。
保存先は、容量に余裕のあるSSD等にしておきましょう。基本的には配信エンコーダを使って録画すればOKです。

映像入力の追加
先ほど「VLCビデオソース」を追加したのと同じように、SyphonやSpoutの入力をソースとして追加します。
例えば、日本語表示のOBSでMacであれば「サイフォンクライアント」を選び、「新規作成」します。

プロパティが自動的に開きます。
ソースには、映像が出力されているソフト名と、出力につけた名前が表示されますので、それを選択します。
その他の設定は基本触らなくて大丈夫です。

VJ出力が、先ほど設定した「基本 (キャンパス) 解像度」と一致していれば、以下のように画面の領域いっぱいにVJが表示されるはずです。ずれている場合は適宜調整します。

ここまでで、DJからの音声入力と、VJソフトからの映像入力がOBSで正しくモニタリングできる状態になっていることを確認します。
実際には、VJ→ワールドの配信設定をあらかじめ行っておいてから、イベント当日にDJ→VJの受け取りを設定することになるかもしれませんが、それぞれの手順は同じです。
配信先の設定
最後に、もう一度先ほどの「設定」から「配信」メニューを開き、上部の「サービス」を「カスタム…」に設定します。
その後、ワールドに映像と音を配信するための「サーバー」と「ストリームキー」を入力します。
サーバーとストリームキーについては、ワールドや設定ごとに異なりますので、イベント主催者などに確認してください。

あとは、「配信開始」を押せば、音と映像がワールドに届くようになります。
そのあとすぐに「録画開始」も押しておけば、配信した内容を録画しておくことができます。
後で説明しますが、特にワールドへの配信は、他のVJと同時に行ってしまわないよう、周りの人に確認を取ってから行ってください。
また、配信が必要なくなったら配信を止めてください。録画をしている場合は録画の停止もお忘れなく!

当日:イベントの流れ
以上の配信を通した音と映像のやりとりを踏まえて、ここからは実際のイベントの流れを確認します。
なお、イベントによって多少異なる場合があるので、詳細は主催者などに確認を取るようにしてください。
始まる前の準備
ワールド確認や配信テストのために、イベントが始まる少し前にDJとVJが集合することが多いです。
この際は、コミュニケーションが取れるように、VRChat用PCでマイクやヘッドホン(スピーカー)を使える状態にしておきましょう。
DJ→VJの音の配信が正しく行われているかどうかテストした後、順番にVJ→ワールドの音と映像の配信をテストします。
ここで配信がうまくいかない場合は、サーバーやストリームキーに誤りがないかどうかを確認し、OBSの配信設定を調整します。
特に、配信自体はできているが音や映像が乱れる場合は、OBSの配信の設定を色々と変えて試す必要があります。
1人のVJが複数のDJを担当する場合は、全員から音が正しく来ることを、順番に確認します。
テストが終わったらすぐに、1番手のVJ以外は、VJ→ワールドの配信を必ず切るようにします。ワールドへの配信が複数ある状態になると、正常な配信ができなくなります。
DJ→VJ間の配信については、1人のVJが1人のDJだけを担当する場合は、テストから出番まで繋いだままにしておく方が安心です。
自分の出番になったら
多くのワールドではDJやVJが立つステージのようなものが用意されているので、VRChatのアバターでそこに移動します。DJ→VJ、VJ→ワールドの配信をそれぞれスタートさせたら、パフォーマンス開始になります。
録画をしたい場合は、このタイミングで録画もスタートさせます。
なお、リアルイベントと異なり、配信を切り替える都合上、DJ同士の交代では一旦音が止まることがほとんどです。
パフォーマンス中
会場の音は、OBSから受け取って聞いているDJの音とはずれています。
このため、パフォーマンス中は、VRChatのWorldの音声は聞かないようにします。
主に、OBSから受け取っているDJの音を聞くようにします。
個人的には、お客さんの反応(会話)は聞きながらVJをしたいので、VRChatのWorld音声はミュート(オフ)にした上で、Voiceだけが聞こえる状態で、OBSから受け取って聞いているDJの音と一緒に聞くようにしています。

また、これもVJ中のおすすめなのですが、パフォーマンスが始まったら、VRChatではカメラを起動しておき、会場を俯瞰して映しておきます。
そうすると、手元のVJソフトの映像からは少し遅れますが、自分のVJがワールドでどのように映っているかを、客観的に確認することができます。
特に、VRChatのイベントではVJがDJの隣に立つことが多いので、自分のVJの様子を確認することが難しいため、このようにしています。
パフォーマンス中、映像がうまく出ていない場合は、他の出演者などから教えてもらえる場合があるので、連絡用のDiscordなどもPCから常時見られる状態にしておきましょう。
出番が終わったら
ここでも、次のVJのために、VJ→ワールドの配信を必ず切るようにします。
録画をしている場合は、録画も終了させます。
配信を切ったら残りはイベントを楽しみましょう。おつかれさまでした!
おわりに:VRChatでVJをするおもしろさ
説明は以上です。残りはおまけです。
せっかくなので最後に、VRChatでVJをするおもしろさについて、筆者の感じているところを書いて終わりにしたいと思います。
少し話題が散らかります。
まず、リアルイベントではできないような空間演出の実験場としての楽しさがあります。
特に、ワールドのディスプレイの配置がワールドごとに多彩で、立方体の箱型のワールドで、内部の6面すべてに異なる映像を出せるワールドや、箱型のオブジェクトが積まれたところにプロジェクターで映像を投影するワールド、湾曲した32:9の横長ディスプレイに映像を出せるワールドなど、ワールドの数だけそこに固有のハードウェアがあって、そこで何を仕掛けるか考えるのが本当に楽しいです。
筆者がVRChatでVJのお誘いをいただいた際は、自分に課しているミッションとして、そのワールドの持つ空間の個性を引き出すような映像演出をすることを意識しています。そこでしか成立し得ない演出をおもしろく見せられたときはワクワクします。
昨日の #NotApplicable_VR VJの様子です!
— monoton (@monoton_music) December 23, 2024
いつも通りTouchDesignerのオリジナルVJシステムを使っています
湾曲した横長スクリーンと、ステージ前面にあるブラウン管テレビの配置を活かす演出を目指しています!
当日配信した映像の録画を、ワールドのシミュレーターにセットした再現動画です↓ pic.twitter.com/xH9Mb3aUvs
VRChatで映像演出をした経験は、筆者がリアルイベントで行うVJにも影響を与えています。
スクリーンという四角い平面だけに向きがちだった意識が、以前よりも俯瞰に近づいていて、その会場という空間を構成する要素としての映像演出、という見方ができるようになってきた気がします。
スクリーンは、コンピューターの中で計算された演出を切り取って覗く窓でもあるし、ときには照明でもあるし、お客さんの身体の動きを促す場の流れでもある…というような見方を最近はしています。
また、これは形式的なことですが、VRChatでよくある、1人のDJに対してVJが1人ずつ割り当てられている形もおもしろいと感じます。
リアルイベントでは、1人のVJでオールナイトを担当することも珍しくないし、当日まで誰のVJをするのかわからないことも多くあります。これはこれで、複数のDJをまたいでいく中で自分のVJの変化を楽しめたり、予測できない方向からのDJを受けて対応したりといった楽しさがあります。
ただ、VRChatでよくある、DJとVJが1対1対応しているイベントでは、事前に1人のDJだけを担当することがわかっていて、そのDJのミックスや雰囲気とじっくり向き合って仕込みをできるところが素敵だなと思います。
お客さんのVJに対する注目も、比較的強いような気がします。もともと視覚演出を楽しもうとして来ている方が多いのか、先ほど書いたように、ワールドごとに工夫を凝らした映像装置を用意しているということもあってか、終わったあとに直接お話しいただいたりツイートだったりでVJに対する反応をいただくことが多く、とても嬉しいです。
自分の視点だけではなくて、お客さんから見てVJのおもしろかったところを伝えていただけることはありがたい限りです。
VRChatでのイベントではもちろん、リアルイベントの体験からは削ぎ落とされている感覚、要素がたくさんあります。ただ、リアルイベントの劣化コピーとしてではなく、先にあげたような、VRChatならではの試みやコミュニケーションを促す存在としての側面を追いかけることを、これからも続けていきたいと思います。
長い記事でしたが、最後までお付き合いいただきありがとうございました!
お気づきの点や質問があれば、ぜひコメントやTwitter (@monoton_music) のリプ・DMなどからお願いします!
筆者について
monoton(ものとん)

Twitter(X): @monoton_music
Linktree
音楽制作とVJ、ハードウェアを軸に、空間演出に取り組むテクニカルアーティストです。
楽曲リリース、TouchDesignerベースのVJシステム開発を自主制作として行いながら、リアル・バーチャルの双方でライブイベントや展示型作品の演出、テクニカルディレクションを手がけています。