🗽

【re:Invent 2022】Kinesis Video Streams WebRTCのワークショップに参加してきました

2022/12/01に公開

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の実装をフルマネージド機能として提供しています。

https://docs.aws.amazon.com/kinesisvideostreams-webrtc-dg/latest/devguide/what-is-kvswebrtc.html

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にて展開されている

https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c

Amplify GitHub

今回Amplifyで作成したGUIのソースコードサンプルはzipファイルでダウンロード可能

https://static.us-east-1.prod.workshops.aws/public/e34de4c9-d170-4e1b-a244-106b671e5301/static/resources/kvswebrtc-react-amplified.zip

結果

Amplifyでホストされたアプリ上で、Kinesis Video Streams WebRTC配信されるようになりました!

https://drive.google.com/file/d/1hCQacAU-xDz5jODojjUpNKeINPzg9R1i/view?usp=sharing

要注意点

ハンズオン通りで進めてもエラーになるケースが多くあります。
説明にはないのですが、リージョン指定は特に注意です。
それぞれのAWSリソースの作成するリージョンが間違っていると最後まで進んでいきません。

  • Cloud9のリージョンはオレゴンで起動
  • Kinesis Video Streamsのリージョンはバージニアで作成
  • ※Amplifyのリージョンもバージニアで作成する

KVSとAmplifyのリージョンは同じ必要であるため、Amplifyの初期設定には気をつけましょう。

ハンズオンサイト

https://catalog.us-east-1.prod.workshops.aws/workshops/a391c4b3-5a5c-4b2a-a92a-681985d108f5/en-US/2-kvswebrtc/3-running

まとめ

Kinesis Video StreamでWebRTCがサポートしてることは知っていましたが、もともと興味があったので今回実際に参加して初めて構築してみました。

感想としては、今までのハンズオンの中で難しめに感じました。

  • Kinesis Video Streamsのデモ映像を流すまでにCloud9の環境構築に手間がかかる点
  • AWS IoT CoreやAWS Amplifyの前提知識があれば進みやすい点
  • 参加してる周りの人達も苦戦してるようで、ほとんどの人が最後までできてたのかすら微妙な感じがしてました...

映像が見れたときの感動はハンズオンならでと感じました。

以上

Discussion