VRC screen sharing
構成
1. Webアプリ → 2. WebRTCのSFU → 3. FFmpeg → 4. mediamtx (simple-rstp-server) → 5. AVProVideoPlayer
の順に動画が流れていきます。1. はユーザのPCで、 2.~4.はサーバ(私の場合はDebian Linux)、5. はユーザのPCのVRChatのワールドで動きます。
Reactで書いたWebアプリです。画面をキャプチャ(getDisplayMedia()を利用)して、WebRTCを使って2.に送ります。
mainがクライアント(1. Webアプリのこと)からの要求をWeb Socketで受けて、mediaに仕事を振ります。するとmediaが mediasoupを使って仕事をします。'streamingStart' 'streamingStop'というメッセージをクライアントから出しています。これを追っていくと、mediaがFFmpegを起動するところにたどり着きます。
3.FFmpeg
オーディオのフォーマット変換と4.への送信を行う。
bmMediasoupServer/src/MediaServer/ffmpeg.ts にあるように、-f rtsp とかできないとならないので、ソースからのビルドが必要かもしれません。私のときは必要でした。
4. mediamtx
simple-rtsp-server という名前のときのを使っています。立ち上げておくだけでOKでした。