Selective Forwarding Unit
クライアントから受け取ったメディア(音声や映像)を他のクライアントに加工せずに再配信するサーバ.
WebRTC SFUクライアントがWebRTC SFUサーバと通信できる理由は、WebRTC SFUサーバが固定IPだから。
SFUは固定IP。クライアントは固定IPのSFUに対してリクエストし、レスポンスを受け取っている。よって、WebRTC クライアントはSFUに固定IPで容易に通信できる。
時雨堂 WebRTC SFU Sora 開発ログ
SFU は Selective Forwarding Unit の略で、簡単に言えば SFU と呼ばれるサーバが音声や映像、 またはそれ以外のデータを配信者に変わって複数の視聴者に配信してくれる仕組みです。
また SFU は音声や映像を再変換せず配信するため、 サーバを経由したとしても遅延を 1 秒未満に抑えることが可能になります。
WebRTC コトハジメ
よく言われる WebRTC SFU の課題をどう解決しているかをまとめておいたので参考にしてほしい。
全員に同一ビットレートを配信する必要がある
Simulcast や SVC を利用することで解決している
大規模配信ができない
リレー機能を利用することで解決している
同時に多くのユーザを視聴できない
話をしている人だけを高画質にするなどの負荷を下げる機能を独自に実装することで解決している
録画ファイルが一つにならない
録画合成の仕組みを別途用意することで解決している
WebRTC コトハジメ
いままでの技術とどう違うのか
注意してほしいのは今使われている WebRTC は新しくできた技術ではなく、既存技術をいろいろ組み合わせてできた技術。
音声や映像のやりとりには RTP (Real-time Transport Protocol) という歴史のある(1996 年)プロトコルが利用されている。 またデータのやり取りには SCTP (Stream Control Transmission Protocol) というこちらも歴史のある(2000 年)プロトコルが利用されている。
暗号部分には SRTP (2004 年) や DTLS (2006 年) 、ハンドシェイクには SDP (1998 年) 、NAT超えには STUN/TURN (2003 年) が利用されている。
つまり、今まで使われてきた技術をうまくまとめ、ブラウザ上で使えるようにした技術と考えてもらって問題ない。
WebRTC SFU コトハジメ
詳細な SFU の図
https://scrapbox.io/files/683ff7d6b9ca10f90386d128.png https://gist.github.com/voluntas/4d2bd3e878965bdd747a
【TypeScript】mediasoup+socket.ioによる通話を簡単に動かしてみる #WebRTC - Qiita
webRTCにおける接続をサーバー経由で行うことで多人数通話の負荷を下げる仕組みのこと。
mediasoupを使う前に知っておくべき概念たち | Memory ice cubes
SFUを簡単に説明すると、WebRTCの接続をクライアント同士で行うのではなく、共通のサーバーでリレーさせて実現する仕組み。