WebRTC は Web Real-Time Communication
の略で、ブラウザどうしがプラグイン無しで直接通信し、音声や映像、データをリアルタイムにやりとりすることを可能にする技術です。WebRTC
は通信を P2P
で行うため、名前のとおりリアルタイム性の高い通信が可能です。その一方、配信者が複数の視聴者に対して音声や映像を配信する場合は、視聴者が増えるにつれて配信者の回線や端末にかかる負荷が高まるため、同時に配信できる視聴者の数には限界があります。
リアルタイムなコミュニケーションであれば、古くは電話など他の技術でも実現できますが、WebRTC
は誰でも使えるブラウザだけで音声や映像のやり取りができる点が画期的と言えます。
WebRTC SFU (Selective Forwarding Unit ) は P2P での通信とは異なり、音声や映像を「サーバー経由」で配信する技術の一つです。 つまり、SFU というサーバーが、配信者に代わって音声や映像を複数の視聴者に配信してくれる仕組みです。そのため視聴者の数が増えても配信者自身の回線や端末に高い負荷がかかることはなく、一度に多くの視聴者へ音声や映像をリアルタイムに配信することができます。
その他にも「通信するユーザの認証を行う」「録画をする」といった、配信にともなう様々な機能をすべて
SFU
に担わせることができるため、クライアントの端末側では認証や録画に伴う負荷がかかることもありません。
WebRTC
による通信をサーバーが中継する技術は MCU (Multipoint Control Unit)
もありますが、SFU
は配信者が送信する映像を合成したり変換したりすることなく視聴者に「そのまま」配信するため、WebRTC
のリアルタイム性を損なうことなく SFU
自身のリソースについても消費を抑えることが可能です。詳細は
Sora 開発ログ
でも記載しています。
当社はこれまで、サーバーとサーバーの間に置いて様々な役割を担う中継サーバー (Proxy サーバー) を数多く開発してきました。その経験から WebRTC を使うサービスでも SFU というサーバを経由させるからこその強みがあると考え、自社で一から開発しています。ただ、当社にお問い合わせいただくお客様の中には、わざわざ SFU を導入しなくとも、P2P の通信で十分と思われる方もいらっしゃいます。あくまで当社の考える目安ですが、たとえば配信対象が 3 名以下、とにかくコストを抑えたい、録画機能は必須ではないといった場合は、まずは P2P での通信をご提案しています。