WebRTC

From Wikipedia, the free encyclopedia

Web Real-Time Communication (略称: WebRTC[2]) は、ウェブブラウザモバイルアプリケーションにシンプルなAPI経由でリアルタイム通信を提供する自由かつオープンソースのプロジェクトである。

作者 Justin Uberti
Peter Thatcher
初版 2011年 (15年前) (2011)
最新版
1.1 / 2017年5月4日 (8年前) (2017-05-04)
概要 作者, 初版 ...
WebRTC
作者 Justin Uberti
Peter Thatcher
初版 2011年 (15年前) (2011)
最新版
1.1 / 2017年5月4日 (8年前) (2017-05-04)
リポジトリ webrtc.googlesource.com
プログラミング
言語
C++[1]JavaScript
ライセンス BSDライセンス
公式サイト webrtc.org
テンプレートを表示
閉じる

ウェブページ内で直接ピア・ツー・ピア通信を行うことによって、プラグインのインストールやネイティブアプリのダウンロードを行わなくても、ウェブブラウザ間のボイスチャットビデオチャットファイル共有などを実装できるようになる[3]。WebRTCは、AppleGoogleマイクロソフトMozillaOperaがサポートしている。

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]。ウェブリアルタイムコミュニケーションワーキンググループは、この仕様が以下の項目に基づいて進化することを期待している。

  • ウェブブラウザでのリアルタイムなコミュニケーションを可能にするこのドキュメントと一緒に一連のプロトコルを定義するためのIETFにおける仲間のRTCWEBグループ[13]での継続的交流の成果
  • ローカルキャパシティとローカルストリームを公開する時に発生するプライバシー問題
  • 特殊な環境でデータチャネルの実装に関するグループでの技術的ディスカッション[14]
  • 初期の実験を通して得られる経験
  • 他のグループや個人からのフィードバックの受け取り

概要

設計

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]

非 RTP 形式に関する対応も必須[27] データチャネル確立プロトコルはRFC 8832準拠

データ形式 (Data formats) 最小限のコーデック・フォーマットを指定[28]

音声: Opus, PCMA, PCMU, comfort noise

メディアサービス (media service[29])
接続管理 (Connection management)
表示と制御 (Presentation and control)
ローカルシステム補助機能 (Local system support functions) エコー除去自動利得制御録音

認証認可、OSアクセス制御[30]

閉じる

Local system support functions

  • プライバシー懸念の解消は必須[31](例: カメラアクセス認可)
  • endpoint はRFC 7874の processing functions を必ず実装[32]

用語

以下は WebRTC の文脈で専門用語として意味が定義された用語の一例である[33]

リアルタイムメディア

WebRTC におけるリアルタイムメディア (Real-Time Media) はコンテンツの生成と提示が時間的に密接して起きるよう意図されたメディアである(生成-表示遅延が数 100 ミリ秒以内)[34]

電話ビデオ会議はリアルタイムメディアといえる。WebRTC はリアルタイムメディアの仕様である。

規格書

W3C や IETF において WebRTC の規格が策定されている。以下はその一部である:

さらに見る 規格書名, 規格種別 ...
表. 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
閉じる

脚注

関連項目

外部リンク

Related Articles

Wikiwand AI