WebRTC
Web Real-Time Communication / ウェブアールティーシー
ブラウザ同士やブラウザとサーバーの間で、映像・音声を1秒未満の遅延でやり取りするための技術群です。W3CがブラウザのAPIを、IETFが通信の手順を定めており、ビデオ会議やリモート出演、超低遅延の配信に使われます。
- 策定団体
- W3C(JavaScript API)、IETF(プロトコル群)
- 標準化
- W3C勧告 WebRTC 1.0(2021年1月)、IETF RFC 8825(全体の概要)
- 遅延の目安
- 1秒未満
- 経路の確立
- ICE(STUN、TURN)
- 暗号化
- DTLS-SRTP(暗号化は必須)
- 必須の映像コーデック
- VP8とH.264
- 必須の音声コーデック
- OpusとG.711
- シグナリング
- 規定なし。配信の打ち上げはWHIP、視聴はWHEPで補う
Google Meetでの通話も、ゲストがURLを開くだけで参加できるリモート出演も、ブラウザにプラグインを入れずに映像がやり取りできるのはWebRTCのおかげです。配信の現場でこの語が出てくるのは、遅延を1秒未満に抑えたいときです。その代わり、視聴者が増えたときの設計はHLSより難しくなります。
WebRTCが使われる場面
ビデオ会議が最も身近な例ですが、映像制作の現場ではリモート出演の取り込みによく使われます。VDO.NinjaのようなWebRTCのサービスを使うと、出演者はブラウザでURLを開くだけで、その映像をOBS StudioやvMixの素材として受け取れます。
配信では、スポーツの同時視聴、オークション、ライブコマースのように、視聴者の反応と映像の時差が問題になる用途で採用されます。HLSの数秒〜数十秒の遅延では、コメントへの返事や入札の締め切りが映像とずれてしまうためです。送り手側も、OBS Studio 30からWHIPでWebRTCの配信を送れるようになり、RTMPの代わりに使える場面が増えています。
WebRTCの仕組み
WebRTCの接続は3段階で進みます。まず、両者が使えるコーデックや通信先の候補をSDPという書式で交換します(シグナリング)。この交換の方法はWebRTCでは決められておらず、サービスごとに作るか、WHIPのような仕様を使います。
次に、ICEという手順で実際に通れる経路を探します。STUNサーバーで自分のグローバルなアドレスを調べ、直接つながらないときはTURNサーバーに中継させます。経路が決まると、映像と音声はRTPを暗号化したSRTPで流れ、鍵の交換にはDTLSが使われます。
WebRTCは遅延を優先するため、回線が混むとバッファを溜めて待つのではなく、ビットレートや解像度を下げて送り続けます。音声にはOpusが標準的に使われます。
WebRTCを配信に使うときに間違えやすい点
会議の延長で配信を組むと、次の点でつまずきがちです。
- 1対1のP2P接続のまま大人数に配ろうとして、送信側の上り回線が足りなくなる。大人数にはSFUと呼ばれる中継サーバーを置く
- 社内ネットワークでUDPが塞がれていて接続できない。TURNをTCPやTLSの443番で用意しておく
- 回線が混んだときに解像度が自動で下がるため、放送の素材として使うと画質が安定しない
- 映像はブラウザ間を流れるだけなので、録画したいときはサーバー側で記録する仕組みが別に要る
WebRTCとHLS・SRTの違い
大人数に安定して配るならHLS、局や拠点の間で画質を保って素材を送るならSRT、双方向のやり取りや1秒未満の遅延が要るならWebRTC、という分担が一般的です。遅延の比較はSRT・RTMP・WebRTC・HLSの違いにまとめています。
よくある質問
WebRTCの遅延はどれくらいですか
一般に1秒未満で、条件のよい回線では数百ミリ秒程度です。HLSやRTMPを使った配信の数秒〜数十秒と比べると、1桁以上短くなります。
WebRTCをオフにしたほうがよいと言われるのはなぜですか
ICEで通信先の候補を集める過程で、VPNを使っていても本来のIPアドレスがWebサイトから見えてしまう場合があるためです。気になる場合はブラウザの設定や拡張機能で制限できますが、ビデオ会議などWebRTCを使うサービスは動かなくなります。
WebRTCは何人まで同時に視聴できますか
P2Pでつなぐ場合は数人程度が現実的な上限です。それ以上の人数には中継サーバー(SFU)を使い、サーバーの台数や配信サービスの上限で人数が決まります。
この用語を扱ったコラム
似ている形式との違い
関連する用語
最終更新
