【re:Invent 2022】Kinesis Video Streams WebRTCのワークショップに参加してきました
AWS re:Invent 2022で行われた、「Build smart camera applications using Amazon Kinesis Video Streams WebRTC」のワークショップレポートです。
この記事は、要点・見どころ・ポイントについてまとめます。
ワークショップ概要
Title
Build smart camera applications using Amazon Kinesis Video Streams WebRTC
Amazon Kinesis Video Streams WebRTCを使用したスマートカメラアプリケーションの構築
Overview
Amazon Kinesis Video Streams WebRTC helps users to easily build low-latency video solutions such as smart doorbells, connected vehicles, surveillance cameras, and more. Join this workshop for hands-on experience building a complete real-world video solution, including setting up a device with a camera to transmit video. You then have the opportunity to use AWS Amplify to build a web application to view your video streams. You must bring your laptop and have an active AWS account to participate.
Amazon Kinesis Video Streams WebRTCは、スマートドアベル、コネクテッドカー、監視カメラなどの低遅延ビデオソリューションを簡単に構築できるようにします。このワークショップでは、ビデオを送信するためのカメラ付きデバイスのセットアップを含む、完全な実世界のビデオソリューションの構築をハンズオンで体験していただけます。また、AWS Amplifyを使用して、ビデオストリームを表示するためのWebアプリケーションを構築する機会もあります。参加にはノートパソコンを持参し、有効なAWSアカウントをお持ちであることが必要です。
Services
Amazon Kinesis Video Streams
Session type
Workshop
Speakers
- David Malone, IoT Specialist SA, Amazon Web Services
- Aaron Wirshba, Sr. Product Manager, Amazon
ワークショップスタート
WebRTCとは
WebRTCはAPIを介して、ブラウザやモバイルアプリケーション間でリアルタイム通信(RTC)を可能にする映像通信方式です。
通信方式は、端末同士が直接データを送受信する方法のPeer To Peer(P2P)になります。
Kinesis Video Streams(KVS)
標準規格に準拠したWebRTCの実装をフルマネージド機能として提供しています。
Kinesis Video StreamsにはStreamsとWebRTCの通信方式があります。
- Streamsは数百万台のカメラデバイスから安全にデータを取り込むことが可能
- WebRTCによる低レイテンシーかつ双方向のメディアストリーミングが可能
この機能を使用して、WebRTC準拠のデバイスまたはWebプレーヤー間で、安全にメディアをライブストリーミングしたり、音声やビデオの双方向通信を行ったりすることができます。
また、通信方式のStreamsとWebRTCには、それぞれサポートされてる機能に違いもあります。
WebRTCの接続フロー
ワークショップアーキテクチャ
このワークショップで作成する全体的なアーキテクチャです。
全体の流れ
- Cloud9を起動(もしくはRaspberry Piでも可能)
- ライブラリの依存関係のインストール
- SDKサンプルアプリケーションのクローンとビルド
- アプリケーション実行
- Kinesis Video Streams
- アプリケーション実行後ビデオをストリーミング
- メディアビューアーで映像が流れるか確認
- AWS IoT
- AWS IAM RoleとAWS IoT Policyを作成
- IoT Role Aliasを作成
- AWS IoT Thingのモノとグループを作成
- ポリシーをグループにアタッチする
- デバイス証明書を作成する
- 作成した証明書をモノにアタッチする
- Webアプリケーションの作成
- アプリケーションのインストール
- Amplifyの初期構築
- Cognito作成しAmplifyでリソースデプロイ
- 映像をWebアプリで視聴する
- WebアプリからCongitoユーザー作成
- ログイン
- KVSのSignaling channel nameとリージョンを指定し映像配信
Kinesis Video Streams WebRTC SDK C
今回Cloud9を利用したデバイス側のソースコードはGitHubにて展開されている
Amplify GitHub
今回Amplifyで作成したGUIのソースコードサンプルはzipファイルでダウンロード可能
結果
Amplifyでホストされたアプリ上で、Kinesis Video Streams WebRTC配信されるようになりました!
要注意点
ハンズオン通りで進めてもエラーになるケースが多くあります。
説明にはないのですが、リージョン指定は特に注意です。
それぞれのAWSリソースの作成するリージョンが間違っていると最後まで進んでいきません。
- Cloud9のリージョンはオレゴンで起動
- Kinesis Video Streamsのリージョンはバージニアで作成
- ※Amplifyのリージョンもバージニアで作成する
KVSとAmplifyのリージョンは同じ必要であるため、Amplifyの初期設定には気をつけましょう。
ハンズオンサイト
まとめ
Kinesis Video StreamでWebRTCがサポートしてることは知っていましたが、もともと興味があったので今回実際に参加して初めて構築してみました。
感想としては、今までのハンズオンの中で難しめに感じました。
- Kinesis Video Streamsのデモ映像を流すまでにCloud9の環境構築に手間がかかる点
- AWS IoT CoreやAWS Amplifyの前提知識があれば進みやすい点
- 参加してる周りの人達も苦戦してるようで、ほとんどの人が最後までできてたのかすら微妙な感じがしてました...
映像が見れたときの感動はハンズオンならでと感じました。
以上
Discussion