Amazon Web Services ブログ

Amazon Chime SDK ”スマートビデオ送信”デモの紹介

Amazon Chime SDKは開発者が自分のウェブやモバイルアプリケーションにオーディオ、ビデオ、スクリーン共有機能を素早く追加するために使用できるリアルタイムコミュニケーションコンポーネントを提供します。このブログ記事ではオープンソースのAmazon Chime SDK ”スマートビデオ送信”デモを紹介します。このデモでは最大250の会議プラットフォームの参加プールから最大16のビデオタイルを動的に表示する方法を紹介します。”スマートビデオ送信”は開発者が会議中に送信するビデオに優先順位をつける簡単な方法です。 会議に参加している参加者は自分のビデオをオンにしてプレビューすることができます。一方、バックエンドコンポーネントは、事前に割り当てられたアルゴリズム、または設定可能な役割ベースのロジックを使用して、会議で送信および共有される最大16の出席者のビデオストリームを選択します。開発者はアクティブな発言者や最近の発言者など、共有されるビデオストリームを自動的に決定するロジックを構築したり、会議中のビデオストリームの制御や選択をファシリテーターなどの役割に割り当てることができます。このソリューションにより、すべてのミーティングプラットフォームが、それぞれのクライアントでビデオタイルを共有できるようになります。また、サーバー側のカスタムロジックで、実際に会議でストリームされるビデオを選択することもできます。このデモではバックエンドのロジックは参加者の参加順に基づいており、新しい参加者が優先的にビデオをストリーミングするようになっています。このロジックはアーキテクチャ図に描かれているAWS Lambda関数に格納されています。

注:このデモの利用には、Amazon Chime SDKの標準価格が適用されます。

ソリューション概要

基本的な流れとしては、会議のプラットフォームがローカルビデオをオンにすることで、ビデオプールに参加することができます。このビデオは会議参加者がローカルでプレビューし、最初は会議で共有されません。出席者がビデオプールへの参加を選択した後、バックエンドのロジックにより、そのビデオの会議へのストリーミングのオン/オフが切り替えられます。このビデオコントロールはバックエンドの事前割り当てロジックまたは会議の役割ベースのロジックによって決定されます。

一般的なスマートビデオ送信 ソリューション

”スマートビデオ送信”では最新の発言者やアクティブな発言者など、会議の状態に応じてあらかじめ割り当てられたアルゴリズムを使用します。このデモで使用されているアルゴリズムはシンプルで、自分のローカルビデオを最も最近有効にした出席者を選択します。アプリケーション開発者は、このアルゴリズムを応用して、会議中に表示されるビデオを動的に選択することができます。デモのコードは、GitHub リポジトリの amazon-chime-sdk-smart-video-sending-demo の master ブランチで確認してください。

役割ベースのスマートビデオ送信 ソリューション

役割ベースのスマートビデオ送信は、講師やファシリテーターなどの会議のロールに追加して割り当てることができます。そして、共有される参加者のビデオストリームを選択することができます。役割ベースのロジックを使用して、講師は会議で共有される出席者のビデオをライブでコントロールすることができます。これには参加者の異なるグループのページ割りを有効にしたり、会議中にストリーミングされるビデオの頻度、選択、数をカスタマイズすることが含まれます。このロジックを応用すれば、教師が生徒の異なるグループを選択して、ビデオを徐々に共有することも可能です。またパネルファシリテーターは仮想の質疑応答セッションにおいて、異なるスピーカーや参加者のビデオを動的に選択して共有することができます。このロジックでは会議で共有するビデオストリームの数を設定または制限することもできます。これは、参加者の相互作用と帯域幅を管理するためのもので、例えば、一度に共有する参加者のビデオストリームの数を4つのグループに限定することができます。役割ベースのロジックの実装例は、同じGitHubリポジトリのrole-based-video-sendingブランチにあります。

インストラクタービュー – 生徒のビデオ送信の承認前

生徒ビュー – インストラクタービデオ + ローカルプレビュービデオ

インストラクタービュー – 生徒のビデオ送信の承認後

生徒ビュー – インストラクタービデオ + ローカルビデオ (インストラクターにより承認)

アーキテクチャ

WebアプリケーションはReactで構築されたサーバーレスのシングルページアプリケーションで、Amazon Chime SDK for JavaScriptとWebブラウザのWebRTCスタックを使用してビデオ会議に参加します。

バックエンドスタックは標準的なサーバーレスアーキテクチャを採用しています。Amazon API Gatewayを使用して、Amazon DyanamoDBにアクセスするAWS Lambda関数にルーティングし、ビデオ共有の状態を永続的に管理しています。またAmazon Chime APIを使用してビデオ会議を管理します。最後に、Amazon API GatewayWebSocket APIを採用して、サーバー間のやり取りをサポートしています。

はじめに

このソリューションでは、開発者が自身のAWSアカウントで必要なリソースをセットアップできるようなAWS CloudFormationテンプレートを提供しています。

前提条件

  • Nodeをインストールします。
  • AWS CLI version2をインストールします。
  • AWS SAM CLIをインストールします。
  • AdministratorAccess policyを持つIAMロールでAWSアカウントにログインします。
  • AWSアカウントでは、us-east-1 (N. Virginia) リージョンを利用します。

デモのデプロイ

このソリューションアプリは、amazon-chime-sdk-smart-video-sending-demoとしてGitHubにホストされています。ターミナルで以下のコマンドを使用して、アプリケーションのリポジトリをクローンします。

git clone https://github.com/aws-samples/amazon-chime-sdk-smart-video-sending-demo.git
cd amazon-chime-sdk-smart-video-sending-demo

以下のスクリプトはデモを実行するために、Amazon S3バケットと、AWS LambdaAPI Gatewayを含むAWS CloudFormationスタックを作成します。引数をお好みの名前に置き換えてください。なおバケット名は小文字でグローバルに一意である必要があります。

cd serverless
node ./deploy.js -r us-east-1 -b <YOUR-S3-BUCKET-NAME> -s <YOUR-CLOUDFORMATION-STACK-NAME>

スクリプトの実行が終了すると、ターミナルにURLが出力されます。このURLをブラウザで開くとスマートビデオ送信会議アプリケーションにアクセスできます。

クリーンアップ

このプロジェクトからすべてのリソースを削除するには、AWS CloudFormationコンソールに表示された作成済みのAWS CloudFormationスタックを削除するだけです。


参考リンク

AWS Media Services
AWS Media & Entertainment Blog (日本語)
AWS Media & Entertainment Blog (英語)

AWSのメディアチームの問い合わせ先: awsmedia@amazon.co.jp
※ 毎月のメルマガをはじめました。最新のニュースやイベント情報を発信していきます。購読希望は上記宛先にご連絡ください。

翻訳は BD山口とSA小林が担当しました。原文はこちらをご覧ください。