[アップデート] Kinesis Video Streams が WebRTC をサポートする様になりました! #reinvent
こんにちは、大前です。AWS re:Invent 2019 もいよいよ終わりが近づいて来ました。
大きなアップデートが次々と発表される中、Kinesis Video Streams で WebRTC がサポートされるアップデートがひっそりと公開されていましたので紹介したいと思います。
Amazon Kinesis Video Streams adds support for real-time two-way media streaming with WebRTC
どんなアップデート?
そもそも WebRTC とは?
WebRTC は Web Real-Time Communication の略で、ウェブブラウザやモバイルアプリケーション間のリアルタイム通信を提供するオープンソースプロジェクトです。
強みとしては、P2P 接続なのでユーザ間のよりリアルタイムな通信が可能、一般的なブラウザが標準でサポートしている、デバイスのカメラ利用などの機能が JavaScript 等から叩ける API で簡単に実現できる、等があります。
上記の特徴より、ビデオチャットアプリケーションなどに活用されていたりします。
何が嬉しい?
今まで WebRTC を使用したアプリケーションを構築しようとした際には、シグナリング(通信を開始するための情報交換)を行うシグナリングサーバや ICE(通信経路を確立するためのプロトコル)で使用される STUN サーバや TURN サーバの用意が必要であり、大変でした。
今回のアップデートにより、上記機能が Kinesis Video Streams に含まれる様になるため、WebRTC を使用したアプリケーションがかなり開発しやすくなります。
Kinesis Video Streams includes a WebRTC signaling end-point for fast peer discovery and secure connection establishment. It includes managed Session Traversal Utilities for NAT (STUN) and Traversal Using Relays around NAT (TURN) end-points for real-time exchange of media between peers.
その他にも、SDK や iOS/Android 用クライアントライブラリ、Javascript が提供される様です。
試してみる
では、実際に触ってみたいと思います。
WebRTC の開発は完全に素人であるため、ソースコードについては AWS が提供している以下のサンプルを使用することにします。
Amazon Kinesis Video Streams WebRTC SDK for JavaScript
シグナリングチャンネルの作成
まずはコンソール上でチャンネルを作成します。
Kinesis Video Streams の画面から「シグナリングチャネルの作成」を選択
チャネル名を入力して、作成ボタンを押下します。
チャネルが出来上がりました。
WebRTC アプリケーションのセットアップ
Amazon Kinesis Video Streams WebRTC SDK for JavaScript より、リポジトリをクローンします。
git clone https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-js.git
SDK をインストールします。npm install もしておきます。
npm install amazon-kinesis-video-streams-webrtc npm install
クローンしたリポジトリにある example ディレクトリに移動し、以下コマンドで Web サーバを起動します。
npm run develop
起動後、ブラウザで localhost:3001 を開くと以下の画面が表示されるので、アクセスキーなどの情報を入力して「Start Master」を押下します。
ブラウザ上で PC カメラの使用を許可するか聞かれるので、許可すると以下の様にインカメラの映像が映し出されます。
Kinesis Video Streams コンソール画面の以下よりプレビュー確認する事が出来ます。
ビューワーを開き、 それぞれ並べてみるとこんな感じになりました。
色々動いたりしてみましたが、ほぼ遅延なく映像を表示出来ていました。
終わりに
Kinesis Video Streams が WebRTC をサポートしたことにより、WebRTC を使用したアプリケーションの構築がかなり楽になりました!
今後 AWS で WebRTC を使用したい場合には非常に有用なアップデートとなったのではないでしょうか。
以上、AWS 事業本部の大前でした。
参考
Amazon Kinesis Video Streams adds support for real-time two-way media streaming with WebRTC