読者です 読者をやめる 読者になる 読者になる

UZABASE Tech Blog

株式会社ユーザベースの技術チームブログです。 主に週次の持ち回りLTやセミナー・イベント情報について書きます。

Web RTC

UZABASEのYakopeliです。

2012/12/19に社内で行ったLTの内容になりますが、今回はWeb RTCについて調べてみました。


Web RTCとは

Real time Communication Beween Browsers APIの略で、JSを使用して
Webブラウザから端末のカメラやマイクにアクセスし、他のWebブラウザとの
リアルタイムなコミュニケーションを可能とするものです。

今までは音声やビデオのリアルタイムな通信を行うには専用のクライアントソフトが必要でした。
また、Webブラウザからは、プラグイン等を入れない限り、マイクやカメラなどのデバイスを
利用することはできませんでした。

しかし、Web RTCが普及すると、

・Webブラウザ上で実行されるJavaScriptで、端末のマイクやカメラなどの
 デバイスにアクセスできるようになる

・取り込んだ音声や動画をリアルタイムに他の端末のWebブラウザに送り、
 ストリーミング再生が可能になる

よって、Webアプリケーションにカメラやマイクを利用した、新しいリアルタイムな
コミュニケーション機能を組み込むことが可能になります。


Web RTCのアーキテクチャ

アーキテクチャですが、大きく分けると4要素で構成されています。

・Web API
 Webアプリケーション側から利用するためのAPI

・Session management/Abstract signaling
 セッション管理やP2Pマッチングの仕組み

・Audio/Video Engine
 オーディオ・ビデオ

・Transport
 データ転送の仕組み

上記のうち、Webアプリ開発者にとって大きく関係するのはWeb APIですが、これは単一の
APIではなく、主に下記二つのAPIから構成されます。

・Stream API
 映像や音声などのストリームデータを扱うAPI

・Peer-to-peer connections
 UDPプロトコルを用い、ブラウザ同士でダイレクトにデータを送受信するためのAPI

簡単に言うと、Stream APIでカメラやマイクにアクセスし、映像や音声をPeer-to-peer connectionsを使って互いのブラウザに送ると、テレビ電話みたいなものが作れます。


デモ

サンプルがあるので、デモで確認してみます。
http://apprtc.appspot.com/にアクセス後、画面下部に表示されるURLに別のブラウザから
アクセスするとテレビ電話が始まります。(どちらの端末もWebカメラが有効になっている必要があります)

まとめ

セキュリティ関連がどのように進められていくか気になるところですが、WebRTCによって専用のクライアントソフトを入れることなく、Webサイトを通じて音声や映像の通信ができるようになるので、何か新しいサービスが生まれてきそうな予感がしますね。