VRChat用RTSP server
動機:VRChatに画面共有機能を付けたい
できたこと1:画面共有用の動画プレイヤーを作った
1. テストワールドに入る https://vrchat.com/home/world/wrld_cda4aa0b-4436-4661-8767-a08efd619f96 にVR Chatで入る。
2 Screen Sharingのパネルの指示に従って画面共有する
3秒くらい待つと、1秒くらいの遅延で画面が表示されるはずです。Questでも見えるはずです。
できたこと2:1秒くらいの遅延でWebブラウザからVRC内の動画プレーヤーに配信できた
iwaSync3 メディアプレイヤー のライブ機能で確認しました。
使い方
1. 配信する
ブラウザで https://vrc.jp/ にアクセスし、ScreenIDを適当にXXXなどに設定して、Start Streamingボタンを押す。ブラウザの画面共有選択がでてくるので、共有する画面などを選ぶ。
2. チャンネル番号が表示されるので憶えておく。以下 N
3. VLCで視聴する
メディア-ネットワークストリームを開くでrtsp://vrc.jp/XXXNを開くと見られる
4. VRChat内の動画プレイヤーで再生する。
PCの場合 rtspt://vrc.jp/XXXNを再生する。 rtspではなく、 rtspt なので注意 XXXは指定したScreenID。
Questの場合 rtsp://vrc.jp/XXXNdを再生する。dは上下反転した映像。上下ひっくり返る場合はdなしにする。
5. 共有を止めるにはブラウザのタブを閉じる。
できたこと3:2秒くらいの遅延でOBSでVRC内の動画プレーヤーに配信できた
iwaSync3 メディアプレイヤー のライブ機能で確認しました。
使い方
1. OBSの設定をする
配信の設定を rtmp://vrc.jp/XXX にする (XXXは他のユーザとかぶらない文字列)
https://gyazo.com/ac3514abd6694262eae37320d328eae6
出力の設定のビットレートを2Mbpsより十分小さくする。
https://gyazo.com/494317a2dff038576b35ab3b57c3ffeb
2. OBSで配信を始める。
3. VRChat内の動画プレイヤーで PCの場合rtspt://vrc.jp/XXXを再生する。 rtspではなく、 rtspt 。
3.' Questの場合、rtsp://vrc.jp/XXXを再生する。  何故か上下反転する。
やったこと
自宅のDebian Linuxサーバで次のことをしました。
できたこと3: rtsp-simple-server をインストールして走らせただけ。あと vrc.jpドメインをとりました。
できたこと1と2:3に加えて、https://github.com/BinauralMeet/mediasoupStreamer を作って動かしました。
メモ
mediasoupStreamer:サーバのSocketにピンポンを入れないとリバースプロキシが切れる →入れたつもり
WebRTCの設定: 'packetization-mode': 1,が良い0はだめ。
WebRTCはKeyframeを遅れと要求しないと送ってくれない。今は、タイマーで3秒に1回要求している。
未解決
Questで動画が上下反転
iwaSyncでもU#ビデオプレイヤーでも起こる。
Unityのバグかも? https://qiita.com/flankids/items/a79b779d51261dd68fb8
YouTube動画再生だと起こらないので、Codecか画像形式の特有の問題だと思う。
とりあえず上下反転動画をブラウザに作らせてストリーミングしている。
たまに画像がカクカクになる。
Bitrate が大きすぎても小さすぎてもだめっぽい。謎。
元動画のBitrateが大きすぎるとどうにもならない
最大化するとカクつく動画:https://www.youtube.com/watch?v=lkp1bD8qENM メタバースの動画はBitrateがめちゃでかい
WebRTCのエンコーダーの処理落ちもあるので、VRChat側で解決し、反転画像をブラウザに作らせるのはやめたい。