WebRTCとは、Webブラウザ上で音声や映像などのデータをリアルタイムにやり取りするための技術である。W3Cがオープン標準の技術としてAPIの仕様を公開している。
WebRTCはP2Pでブラウザ間の通信が行えるようになっており、必ずしもサーバーを経由しなくてよいという点を特徴としている。WebRTCに対応するWebブラウザで対応サービスを利用すれば、Webブラウザを使用したビデオチャットなどが実現可能となる。
WebRTCはGoogleによるオープンソースの開発プロジェクトとして発足し、後のW3Cが勧告する仕様となった。Google ChromeやFirefoxといった主要WebブラウザがWebRTCに対応しはじめている。
| WWW: | WWW Webアプリケーション Webメール WebRTC |
| Web2.0: | オンライン配車サービス チャットワーク バイラルメディア |
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/10/20 13:46 UTC 版)
| |
|
| 作者 | Justin Uberti Peter Thatcher |
|---|---|
| 初版 | 2011年 |
| 最新版 |
1.1 / 2017年5月4日
|
| リポジトリ | webrtc |
| プログラミング 言語 |
C++[1]、JavaScript |
| ライセンス | BSDライセンス |
| 公式サイト | webrtc |
Web Real-Time Communication (略称: WebRTC[2]) は、ウェブブラウザやモバイルアプリケーションにシンプルなAPI経由でリアルタイム通信を提供する自由かつオープンソースのプロジェクトである。
ウェブページ内で直接ピア・ツー・ピア通信を行うことによって、プラグインのインストールやネイティブアプリのダウンロードを行わなくても、ウェブブラウザ間のボイスチャット、ビデオチャット、ファイル共有などを実装できるようになる[3]。WebRTCは、Apple、Google、マイクロソフト、Mozilla、Operaがサポートしている。
WebRTC は 1 つのプロトコル仕様(プロトコルスイート)と 1 つの JavaScript API 仕様からなる[4]。これら仕様は W3C および IETF の複数の規格書に跨って定義されている。
WebRTCの目的は、「ブラウザ、モバイルプラットフォーム、IoTデバイス向けのリッチで高品質なRTPアプリケーションを、開発できるようにし、共通のプロトコルセットで通信できるようにすること」である[5]。リファレンス実装がBSDライセンスのフリーソフトウェアとして公開されている。また、マルチメディアフレームワークのGStreamerをベースに実装されたOpenWebRTCという別のフリー実装も存在する。JavaScriptを発明したブレンダン・アイクは、WebRTCのことを 「妨げなく開かれているウェブへの戦いにおける新たな戦線」であると評している[6]。
ブラウザでリアルタイムなコミュニケーションを可能にするWebRTCは、Googleによってオープンソース化されており[7]、IETFによる関連プロトコル[8]とW3Cによるブラウザ対応APIの標準化が進められてきた[9]。
W3CによるWebRTCのドラフト[10]は、Google ChromeとMozilla Firefoxで特別に実験的に実装が行われる。APIはWHATWGに予備的に記述され[11]、ConnectionPeer APIと呼ばれており、Ericsson Labsが仮の標準概念実装として作成している[12]。ウェブリアルタイムコミュニケーションワーキンググループは、この仕様が以下の項目に基づいて進化することを期待している。
WebRTCを構成する主要な API を次に挙げる。
getUserMedia カメラやマイクなどのメディア入力の利用をユーザーに許可させる[15]。RTCPeerConnection ピア同士で直接ビデオ・音声をやりとりするためのクラス。シグナリング、コーデックの処理、P2P通信、セキュリティおよび帯域管理を担う[16]。RTCDataChannel ピア間の双方向通信で任意のデータを扱うためのクラス。WebSocketsと同じAPIを利用しており、レイテンシーが非常に低い[17]。WebRTC には統計のためのAPIもある。
getStats はWebRTCセッションの統計をWebアプリケーションが取得可能にする。なお、統計に関する仕様は別のW3Cドキュメントになっている[18]。WebRTC自体には、シグナリング(ピア同士の検索と接続確立のためのプロセス)のためのAPIは含まれない。代わりに、アプリケーションではInteractive Connectivity Establishment(ICE)を用いる。なお、ICEのプロセスではシグナリングやNATトラバーサルのためにサーバーを介した通信が必要な場合がある。
WebRTCは以下のブラウザでサポートされている。
次の 6 つの機能グループ(functionality groups)からなる:
| グループ名 | 要件・機能例 | |
|---|---|---|
| メディア転送基盤 (media transport infrastructure[24]) | ||
| データ転送 (Data transport) | RFC 8835に準拠[25] | |
| データフレーミング (Data framing) | RTP 形式・SRTP 実装が必須[26] | |
| データ形式 (Data formats) | 最小限のコーデック・フォーマットを指定[28] 音声: Opus, PCMA, PCMU, comfort noise |
|
| メディアサービス (media service[29]) | ||
| 接続管理 (Connection management) | ||
| 表示と制御 (Presentation and control) | ||
| ローカルシステム補助機能 (Local system support functions) | エコー除去、自動利得制御、録音 | |
以下は WebRTC の文脈で専門用語として意味が定義された用語の一例である[33]。
WebRTC におけるリアルタイムメディア (Real-Time Media) はコンテンツの生成と提示が時間的に密接して起きるよう意図されたメディアである(生成-表示遅延が数 100 ミリ秒以内)[34]。
電話やビデオ会議はリアルタイムメディアといえる。WebRTC はリアルタイムメディアの仕様である。
W3C や IETF において WebRTC の規格が策定されている。以下はその一部である:
| 規格書名 | 規格種別 | 発行日 | |
|---|---|---|---|
| WebRTC: Real-Time Communication in Browsers | W3C Recommendation | 2023-03-06 | |
| WebRTC 1.0: Real-Time Communication Between Browsers | W3C Recommendation | 2021-01-26 | |
| RFC 8835 Transports for WebRTC | RFC Proposed Standard | 2021-01-18 | |
| RFC 8834 Media Transport and Use of RTP in WebRTC | RFC Proposed Standard | 2021-01-18 | |
| RFC 8832 WebRTC Data Channel Establishment Protocol | RFC Proposed Standard | 2021-01-18 | |
| RFC 8831 WebRTC Data Channels | RFC Proposed Standard | 2021-01-18 | |
| RFC 8826 Security Considerations for WebRTC | RFC Proposed Standard | 2021-01-18 | |
| RFC 8825 Overview: Real-Time Protocols for Browser-Based Applications | RFC Proposed Standard | 2021-01-18 | |
| RFC 7874 WebRTC Audio Codec and Processing Requirements | RFC Proposed Standard | 2016-05-25 | |