全般
Q: Amazon Kinesis Video Streams とは何ですか?
Amazon Kinesis Video Streams を使用すると、保存、分析、機械学習 (ML)、再生、およびその他の処理のために、接続されたデバイスから AWS へメディアを簡単かつ安全にストリーミングできるようになります。Kinesis Video Streams は、数百万ものデバイスからストリーミングしたメディアを取り込むために必要なすべてのインフラストラクチャを、自動的にプロビジョニングして、伸縮自在にスケールします。ストリーム内のメディアの保存、暗号化、インデックス作成を永続的に行い、使い勝手のよい API を介したメディアへのアクセスも可能にします。Kinesis Video Streams を使用すれば、Amazon Rekognition Video や Amazon SageMaker との統合、および Apache MxNet、TensorFlow、OpenCV といった ML フレームワーク向けライブラリとの統合により、コンピュータビジョンアプリケーションや ML アプリケーションのすばやい構築が可能になります。ライブ再生向けにもオンデマンド再生向けにも、Kinesis Video Streams は HTTP Live Streaming (HLS) および Dynamic Adaptive Streaming over HTTP (DASH) にフルマネージド型機能を提供します。Kinesis Video Streams はまた、フルマネージド型機能として、WebRTC を使用した超低レイテンシーの双方向メディアストリーミングもサポートしています。
Q: 時間符号化データとは何ですか?
時間符号化データは、時系列で記録され、各記録が前後の記録と関連しているあらゆるデータです。動画は時間符号化データの一例です。動画では各フレームが、空間変換によって前後のフレームと関連付けられます。時間符号化データのその他の例としては、オーディオ信号、RADAR 信号、LIDAR 信号などがあります。Amazon Kinesis Video Streams は、分析と ML のユースケースに向けて、あらゆる時間符号化データをコスト効率よく効果的に取り込み、ストレージできるように設計されています。
Q: Kinesis Video Streams の一般的なユースケースには、どのようなものがありますか?
Kinesis Video Streams は、カメラ対応 IoT デバイス用のメディアストリーミングアプリケーションの構築に最適です。また、リアルタイムのコンピュータビジョン対応 ML アプリケーションなど、幅広い用途で普及しつつあるアプリケーションの構築にも最適です。用途には次のようなものがあります:
スマートホーム
Kinesis Video Streams を使用すれば、ベビーモニタ、ウェブカメラ、防犯システムといったカメラを装備した家庭用機器からの動画と音声を、AWS へ簡単にストリーミングできます。その後、ストリームを使用して、シンプルなメディア再生から、インテリジェント照明、温度制御システム、セキュリティソリューションに至るまで、さまざまなスマートホームアプリケーションを構築できます。
スマートシティー
多くの都市では、信号機、駐車場、ショッピングモール、およびほとんどの公共イベント会場に多数のカメラが設置され、動画が 24 時間年中無休でキャプチャされています。Kinesis Video Streams を使用することで、この膨大な量のメディアデータの取り込み、保存、再生、分析を安全かつコスト効率に優れた方法で実行でき、交通問題の解決、犯罪の防止、緊急事態への対応人員派遣といったさまざまな用途に活用できます。
工業オートメーション
Kinesis Video Streams を使用して、RADAR 信号や LIDAR 信号、温度プロファイル、工業用機器からの深度データといった、さまざまな時間符号化データを収集できます。その後、Apache MxNet、TensorFlow、OpenCV など好みの機械学習フレームワークによってデータを分析し、予知保全などの工業オートメーション分野のユースケースに役立てることができます。例えば、ガスケットやバルブの寿命を予測し、部品交換を事前にスケジュールすることで、製造ラインのダウンタイムや不具合を減少できます。
Q: Amazon Kinesis Video Streams では何を管理しますか?
Amazon Kinesis Video Streams は、メディアの取り込み、保存、処理を行う、フルマネージド型サービスです。ロボット、スマートシティー、産業オートメーション、セキュリティモニタリング、機械学習 (ML) などに必要なアプリケーションに対して、あらゆる規模の動画を安全に取り込み、処理し、保存できます。また、Kinesis Video Streams では、オーディオ信号、RADAR 信号、LIDAR 信号など、他の種類の時間符号化データも取り込むことができます。Kinesis Video Stream では、デバイスにインストールできる SDK を利用できるため、メディアを AWS に簡単かつ安全にストリーミングできます。Kinesis Video Streams によって、数百万ものデバイスからのメディアストリームを取り込むために必要なすべてのインフラストラクチャが自動的にプロビジョニングされ、伸縮自在にスケールされます。また、メディアストリームを永続的に保存、暗号化、インデックス化して使いやすい API を提供しているため、アプリケーションを使って、タグとタイムスタンプに基づくインデックス付きのメディアフラグメントに取得して処理できます。Kinesis Video Streams では、Apache MxNet、TensorFlow、OpenCV などの ML フレームワークを動画ストリームと統合して、機械学習アプリケーションを構築するためのライブラリを提供しています。Kinesis Video Streams は Amazon Rekognition Video と統合されているため、オブジェクト、イベント、および人物を検出するコンピュータビジョンアプリケーションを構築できます。
主要な概念
Q: 動画ストリームとは何ですか?
動画ストリームとは、ライブ動画やその他の時間符号化データをキャプチャし、必要に応じて保存し、リアルタイムでもバッチまたはアドホックベースでもデータを使用できるようにするリソースです。動画ストリームにデータを保存することを選択すると、Kinesis Video Streams はデータを暗号化し、保存されたデータに時間ベースのインデックスを生成します。通常の構成では、Kinesis 動画ストリームには 1 つのプロデューサーのみがデータを公開します。Kinesis 動画ストリームは、動画ストリームのコンテンツを処理する複数の消費アプリケーションを有することができます。
Q: フラグメントとは何ですか?
フラグメントはメディアフレームの自己完結型シーケンスです。フラグメントに属するフレームは、他のフラグメントからのフレームに依存することはできません。フラグメントが到着すると、Kinesis Video Streams は一意のフラグメント番号を昇順に割り当てます。また、Kinesis Video Streams 固有のメタデータとして、各フラグメントのプロデューサー側およびサーバー側のタイムスタンプを保存します。
Q: プロデューサーとは何ですか?
プロデューサーとは、Kinesis 動画ストリームにデータを格納するデバイスまたはソースを指すために使用される一般的な用語です。プロデューサーは、セキュリティカメラ、身体装着カメラ、スマートフォンカメラ、またはダッシュボードカメラなど、どのような動画生成デバイスであっても構いません。プロデューサーは、オーディオフィード、画像、または RADAR データなど、ビデオ以外の時間符号化データを送信することもできます。1 つのプロデューサーが 1 つ以上の動画ストリームを生成できます。例えば、ビデオカメラは動画データを 1 つの Kinesis 動画ストリームにプッシュし、音声データを別の動画ストリームにプッシュできます。
Q: コンシューマーとは何ですか?
コンシューマーは、Kinesis 動画ストリームのデータをリアルタイムで (または低レイテンシー処理が不要な場合にデータが永続的に保存されて時間インデックスが作成された後に) 消費して処理するカスタムアプリケーションです。これらのコンシューマーアプリケーションを作成して、Amazon EC2 インスタンスで実行することができます。Amazon Rekognition などの他の Amazon AI サービスやサードパーティーの動画分析プロバイダーを使用して、動画ストリームを処理することもできます。
Q: チャンクとは何ですか?
プロデューサーからデータを受信すると、Kinesis Video Streams は受信するメディアデータをチャンクとして保存します。各チャンクは、実際のメディアフラグメント、プロデューサーによって送信されたメディアメタデータのコピー、およびフラグメント番号、サーバー側およびプロデューサー側のタイムスタンプなどの Kinesis Video Streams 固有のメタデータで構成されます。コンシューマーが GetMedia API オペレーションを通じてメディアデータをリクエストすると、Kinesis Video Streams は、リクエストで指定したフラグメント番号から始まるチャンクのストリームを返します。
Q: Amazon Kinesis Video Streams のレイテンシーについてどう考えればよいですか?
エンドツーエンドのメディアデータフローには、レイテンシーに対する 4 つの重要な要因があります。
- デバイスのハードウェアメディアパイプラインで費やされる時間: このパイプラインは、イメージセンサーと任意のハードウェアエンコーダーで構成できます。理論的には、これは単一フレーム期間と同程度になる可能性があります。実際には、そうなることはまれです。すべてのエンコーダーは、メディアエンコーディング (圧縮) に効果的に機能するように、複数のフレームを蓄積してフラグメントを構築します。このプロセスおよび対応するいずれかの動き補償アルゴリズムは、データが伝送用にパッケージ化される前に、デバイスで 1 秒から数秒のレイテンシーを追加します。
- インターネットの実際のデータ伝送に生じるレイテンシー: ネットワークスループットとレイテンシーの品質は、プロデューサーデバイスの配置場所に応じて大きく異なる可能性があります。
- プロデューサーデバイスからデータを受信するときに Kinesis Video Streams によって追加されるレイテンシー: 受信データはすべての消費側アプリケーションに対して、GetMedia API オペレーションですぐに利用できるようになります。データを保持することを選択した場合、Kinesis Video Streams は AWS Key Management Service (AWS KMS) を使用してデータを暗号化し、動画ストリーム内の個々のフラグメントに時間ベースのインデックスを生成します。GetMediaforFragmentList API を使用してこの保持されたデータにアクセスすると、Kinesis Video Streams は永続ストレージからフラグメントを取り出し、データを復号化し、消費側アプリケーションでデータを使用できるようにします。
- コンシューマーに戻すデータ送信のレイテンシー時間: インターネットや他の AWS リージョンで、メディアデータを要求するデバイスが存在することがあります。ネットワークスループットとレイテンシーの品質は、消費側デバイスの配置場所に応じて大きく異なる可能性があります。
ストリームへのデータの公開
Q: Kinesis 動画ストリームにデータを公開するにはどうすればよいですか?
PutMedia オペレーションで Kinesis 動画ストリームにメディアデータを公開したり、Java、C++、または Android で Kinesis Video Streams プロデューサー SDK を使用したりできます。PutMedia オペレーションを直接使用する場合は、Kinesis Video Streams データ仕様に従ってメディアストリームをパッケージ化し、ストリームの作成、トークンローテーション、およびメディアデータを AWS クラウドに確実にストリーミングするために必要なその他のアクションを処理します。プロデューサー SDK を使用して、これらのタスクをより簡単にし、より早く開始することをお勧めします。
Q: Kinesis Video Streams の PutMedia オペレーションとは何ですか?
Kinesis Video Streams では、メディアデータを Kinesis の動画ストリームに書き込むための PutMedia API が提供されています。PutMedia リクエストでは、プロデューサーによってメディアフラグメントのストリームが送信されます。フラグメントが到着すると、Kinesis Video Streams は一意のフラグメント番号を昇順に割り当てます。また、Kinesis Video Streams 固有のメタデータとして、各フラグメントのプロデューサー側とサーバー側のタイムスタンプも保存されます。
Q: Kinesis Video Streams プロデューサー SDK とは何ですか?
Amazon Kinesis Video Streams プロデューサー SDK は、特定のプロデューサーのためにインストールしてカスタマイズできる、使いやすく設定の容易なライブラリのセットです。SDK を使用すると、動画ストリームに安全に接続し、動画やその他のメディアデータを Kinesis Video Streams に確実に公開するオンデバイスアプリケーションを簡単に構築できます。これは、デバイスのメディアパイプラインによって生成されたフレームとフラグメントをパッケージ化するために必要なすべての基本的なタスクを処理します。また、SDK は、ストリームの作成、セキュアなストリーミングや中断のないストリーミングのためのトークンローテーション、Kinesis Video Streams から返された確認応答の処理などのタスクも処理します。
Q: Kinesis Video Streams プロデューサー SDK はどのプログラミングプラットフォームで利用できますか?
Kinesis Video Streams プロデューサー SDK のコアは C 言語で構築されているため、さまざまなハードウェアプラットフォームで効率的に利用できます。大抵の開発者は、Kinesis Video Streams プロデューサー SDK の C 言語、C++、または Java のバージョンを使用することを好みます。また、Android デバイスから動画データをストリーミングするモバイルアプリケーション開発者用の Android 版のプロデューサー SDK があります。
Q: Kinesis Video Streams プロデューサー SDK を使い始める前に、何を知っておく必要がありますか?
Kinesis Video Streams プロデューサー SDK は、フレームとフラグメントのパッケージ化における手間のかかる処理をすべて行い、安全な接続を確立し、動画を AWS に確実にストリームします。しかし、ハードウェアデバイスと、ハードウェアデバイスで動作するメディアパイプラインにはさまざまな種類があります。メディアパイプラインとの統合プロセスを簡単にするために、1) フレーム境界、2) 境界に使用されるフレームのタイプ (I フレームまたは非 I フレーム)、3) フレーム符号化タイムスタンプについてある程度理解しておくことをお勧めします。
ストリームからのデータの読み取り
Q: GetMedia API とは何ですか?
GetMedia API を使用すると、Kinesis 動画ストリームからメディアコンテンツを取得できます。このリクエストでは、ストリーム名またはストリーム Amazon リソースネーム (ARN) と開始チャンクを指定します。Kinesis Video Streams はフラグメント番号順にチャンクのストリームを返します。メディアデータ (フラグメント) をストリームに配置すると、Kinesis Video Streams は各受信フラグメントと関連メタデータを "チャンク" と呼ばれるものに格納します。 GetMedia API は、リクエストで指定したチャンクから始まるこうしたチャンクのストリームを返します。
Q: GetMediaForFragmentList API とは何ですか?
GetMediaForFragmentList API を使用すると、Kinesis 動画ストリームのアーカイブデータからフラグメントのリスト (フラグメント番号で指定) のメディアデータを取得できます。通常、この API オペレーションの呼び出しの前に、ListFragments API の呼び出しがあります。
Q: ListFragments API とは何ですか?
ListFragments API を使用すると、保持されたデータ内でフラグメント番号またはタイムスタンプを使用して、指定された動画ストリームおよび開始位置からフラグメントのリストを返すことができます。
Q: Kinesis Video Streams に保存できるデータの長さはどれくらいですか?
ストリームには、ご希望の期間データを保存することができます。Kinesis Video Streams では、アーカイブとストレージの要件に合わせてデータの保存期間を設定できます。
Q: Kinesis Video Streams のパーサーライブラリとは何ですか?
Kinesis Video Streams パーサーライブラリによって、開発者は Kinesis Video Streams GetMedia オペレーションの出力を簡単に消費して処理できます。アプリケーション開発者は、動画ストリームで動作する動画分析および処理アプリケーションにライブラリを含めることになります。アプリケーション自体は EC2 インスタンスで実行されますが、他の場所で実行することもできます。ライブラリには、フレームレベルのオブジェクトとそれに関連するメタデータの取得や、フラグメントに添付された Kinesis Video Streams 固有のメタデータと、連続するフラグメントの抽出および収集を簡単に行える機能があります。これにより、ユースケースに合わせて生の動画データをより簡単に使用できるカスタムアプリケーションを構築できます。
Q: Kinesis 動画ストリームで運ばれるフレーム (およびフラグメント) を使用する必要があるカスタム処理アプリケーションがある場合、どうすればよいですか?
一般に、動画ストリームを消費してカスタムアプリケーションのニーズに合わせて操作する場合、考慮すべき重要なステップが 2 つあります。まず、GetMedia API によって提供されるフォーマットされたストリームからフレーム内のバイトを取得します。ストリームパーサーライブラリを使用してフレームオブジェクトを取得できます。次に、ピクセルの高さ、幅、コーデック ID、コーデックのプライベートデータなど、フレームをデコードするために必要なメタデータを取得します。そのようなメタデータはトラック要素に埋め込まれます。パーサーライブラリは、フラグメントのトラック情報を収集するヘルパークラスを提供することにより、この情報の抽出を容易にします。
この後の手順は、アプリケーションによって大きく異なります。フレームをデコードしたり、再生エンジン用にフォーマット設定したり、コンテンツ配信用にトランスコードしたり、カスタムの深層学習アプリケーション形式にフィードしたりすることができます。Kinesis Video Streams のストリームパーサーライブラリはオープンソースなので、特定のユースケースに合わせて拡張できます。
ストリームからの動画の再生
Q: 自分のアプリケーションにキャプチャしたビデオはどのようにして再生できますか?
Amazon Kinesis Video Streams の HTTP Live Streams (HLS) および Dynamic Adaptive Streaming over HTTP (DASH) 機能を使用して、フラグメント化された MP4 または MPEG_TS のパッケージ形式で取り込んだビデオを再生できます。HLS および DASH は業界標準の、HTTP ベースのメディアストリーミングプロトコルです。Amazon Kinesis Video Streams を用いてデバイスから動画をキャプチャすると、HLS API や DASH API を用いてライブで、または録画した動画を再生できます。この機能はフルマネージド型であるため、動画再生のためのクラウドベースのインフラストラクチャを構築する必要はありません。低レイテンシー再生や双方向メディアストリーミングについては、WebRTC ベースのストリーミングに関するよくある質問を参照してください。
Q: Kinesis Video Streams の HLS API や DASH API はどのように使用開始できますか?
Kinesis 動画ストリームを HLS や DASH で見るには、まず GetHLSStreamingSessionURL または GetDASHStreamingSessionURL の API を使用してストリーミングセッションを作成します。このアクションは HLS セッションや DASH セッションにアクセスするための URL (セッショントークンを含む) を返します。これをメディアプレイヤーまたはスタンドアロンのアプリケーションで使用してストリームを再生できます。サードパーティーのプレイヤー (Video.js や Google Shaka Player など) を使用し、HLS および DASH のストリーミングセッション URL をプログラムで、またはマニュアルで入れて動画ストリームを表示できます。また、HLS ストリーミングや DASH ストリーミングのセッション URL を Apple Safari または Microsoft Edge ブラウザのロケーションバーに入れても動画を再生できます。さらに、モバイルアプリケーションの Android (Exoplayer) と iOS (AVMediaPlayer) の動画プレイヤーを用いることもできます。
Q: Kinesis Video Streams HLS API を使用する基本的な要件は何ですか?
Amazon Kinesis 動画ストリームには、HLS でのデータ提供に以下の要件があります:
- メディアには、h.264 または h.265 でエンコードしたビデオと、場合によっては AAC でエンコードしたオーディオが含まれていなければなりません。具体的には、トラック 1 のコーデック ID は、h.264 の場合は V_MPEG/ISO/AVC、h.265 の場合は V_MPEG/ISO/HEVC である必要があります。必要な場合、トラック 2 のコーデック ID は A_AAC となります。
- 各フラグメントのビデオトラックには、h.264 形式の場合は Advanced Video Coding (AVC)、h.265 形式の場合は HEVC (MPEG-4 仕様 ISO/IEC 14496-15) のコーデックプライベートデータを持たせるものとします。特定のフォーマットに対するストリームデータの適合情報については、NAL 適合フラグを参照してください。
- データ保持は 0 より大きい値で行います。
- 各フラグメントのオーディオトラック (存在する場合) には、AAC 形式 (AAC 仕様 ISO/IEC 13818-7) のコーデックプライベートデータを持たせるものとします。
Q: Kinesis Video Streams DASH API を使用するための基本的な要件は何ですか?
Amazon Kinesis 動画ストリームには、DASH でのデータ提供に以下の要件があります:
- メディアには、h.264 または h.265 でエンコードしたビデオと、場合によっては AAC もしくは G.711 でエンコードしたオーディオが含まれていなければなりません。具体的には、トラック 1 のコーデック ID は、(h.264 の場合は) V_MPEG/ISO/AVC、(H.265 の場合は) V_MPEGH/ISO/HEVC である必要があります。必要な場合、トラック 2 のコーデック ID は (AAC の場合は) A_AAC、(G.711 の場合は) A_MS/ACM となります。
- 各フラグメントのビデオトラックには、h.264 形式の場合は Advanced Video Coding (AVC)、H.265 形式の場合は HEVC のコーデックプライベートデータを持たせるものとします。詳細については、MPEG-4 仕様 ISO/IEC 14496-15 を参照してください。特定のフォーマットに対するストリームデータの適合情報については、NAL 適合フラグを参照してください。
- データ保持は 0 より大きい値で行います。
- 各フラグメントのオーディオトラック (存在する場合) には、AAC 形式 (AAC 仕様 ISO/IEC 13818-7)、または MS Wave 形式のコーデックプライベートデータを持たせるものとします。
Q: Kinesis Video Streams での HLS や DASH のストリーミングで使える再生モードにはどのようなものがありますか?
HLS と DASH の両方でサポートされている再生モードには、ライブとオンデマンドの 2 種類があります。
ライブ: ライブセッションでは、HLS メディアプレイリストは最新のフラグメントが表れるたびに、それらのフラグメントによって継続的にアップデートされます。このタイプのセッションがメディアプレイヤーで再生されるとき、ユーザーインターフェイスには通常 "ライブ" と表示され、再生ウィンドウで再生位置を選択できるバーは表示されません。
オンデマンド: オンデマンドでは、HLS メディアプレイリストにセッションの全フラグメントが、MaxMediaPlaylistFragmentResults で指定された番号まで含まれています。プレイリストは各セッションで 1 度しか取得できません。
また、HLS では LIVE_REPLAY モードでの再生もサポートしています。このモードでは、HLS メディアプレイリストは、特定の時刻から開始するフラグメントを含めて開始する場合を除き、ライブモードと同じ方法で更新されます。このモードは、保存済みのメディアから過去のある時点を指定して、その時点から再生を開始し、ライブストリーミングを続けたい場合に役立ちます。
Q: API を用いたビデオ再生での遅延はどのようなものですか?
ライブ再生でのレイテンシーは通常 3~5 秒ですが、これは場合によります。独自にテストを実行して PoC (概念実証) を行い、ターゲットとするレイテンシーを定めることを強くお勧めします。レイテンシーは、ユースケース、プロデューサーがどのように動画フラグメントを生成するか、動画フラグメントのサイズ、プレイヤーのチューニング、ネットワーク条件 (AWS へのストリーミングと AWS からの再生の両方) など、さまざまな要因に影響を受けます。低レイテンシー再生については、WebRTC ベースのストリーミングに関するよくある質問を参照してください。
Q: HLS や DASH の使用に関する制限にはどのようなものがありますか?
Kinesis 動画ストリームでは、アクティブな HLS および DASH ストリーミングセッションを最大で 10 セッションまでサポートしています。セッションの最大数が既にアクティブなときに新しいセッションが生成された場合、最も古い (最初に生成された) セッションが閉じられます。Kinesis 動画ストリームでのアクティブな GetMedia 接続数はこの制限の中に含まれず、アクティブな HLS セッションはアクティブな GetMedia 接続制限数に含まれません。詳細については Kinesis Video Streams の制限を参照してください。
Q: Kinesis Video Streams と AWS Elemental MediaLive の違いは何ですか?
AWS Elemental MediaLive は、ブロードキャストグレードのライブ動画エンコードサービスです。テレビ放送やインターネット接続のマルチスクリーンデバイス (インターネット接続対応の TV、タブレット、スマートフォン、セットトップボックス) での配信用に、高品質なビデオストリームを作成できます。このサービスは独立して、または AWS メディアサービスの一部として機能します。
Amazon Kinesis Video Streams を使用すると、リアルタイムとバッチ処理用の機械学習 (ML)、動画再生、分析、およびその他の処理のために、接続されたデバイスから AWS へ動画を簡単かつ安全にストリーミングできます。マシンビジョンに基づいたアプリケーションを構築して、スマートホーム、スマートシティー、産業用オートメーション、セキュリティモニタリングなどに組み込むことができます。
Q: この機能を使うのに料金はかかりますか?
Kinesis Video Streams はシンプルな従量課金制で使用できます。前払いはなく、使用したリソースに対してのみお支払いただきます。Kinesis Video Streams の料金は、アカウント内のすべての動画ストリームについて、取り込まれたデータ量 (GB)、HLS API や DASH API 経由のものを含む消費されたデータ量 (GB)、および格納されたデータ (GB/月) に基づいて算出されます。詳細については、料金ページを参照してください。
Amazon Kinesis Video Streams エッジエージェントとは
Q: Amazon Kinesis Video Streams エッジエージェントとは何ですか?
Kinesis Video Streams エッジエージェントは、ローカルビデオストレージやクラウドへのスケジュールされたアップロード用にインストールしてカスタマイズできる、使いやすく設定が非常に容易なライブラリのセットです。エッジエージェントをダウンロードして、オンプレミスのエッジコンピューティングデバイスにデプロイできます。代わりに、Amazon EC2 マシンで実行されている Docker コンテナに簡単にデプロイすることもできます。デプロイが完了したら、Amazon Kinesis Video Streams API を使用して、動画の録画とクラウドアップロードの設定を更新できます。この機能は RTSP プロトコルでストリーミングできる任意の IP カメラで利用でき、追加のファームウェアをカメラにデプロイする必要はありません。Amazon Kinesis Video Streams エッジエージェントは、AWS Snowball Edge デバイスに、AWS Greengrass コンポーネントとして、またはネイティブ IoT デプロイにインストールできます。 Amazon Kinesis Video Streams エッジエージェントへのアクセスについては、こちらを参照してください。
WebRTC を使用した低レイテンシーの双方向メディアストリーミング
Q: WebRTC とは何ですか? また、Kinesis Video Streams はこの機能をどのようにサポートしていますか?
WebRTC は、簡易な API を経由してブラウザとモバイルアプリケーションとの間でリアルタイム通信 (RTC) ができるようにするためのオープンテクノロジー仕様です。接続されたピア同士でデータ交換をリアルタイムで行うためにピアリング技術を活用し、人間同士の通信に要するメディアストリーミングのレイテンシーを低くします。WebRTC 仕様には、Interactive Connectivity Establishment (ICE RFC5245)、Traversal Using Relay around NAT (TURN RFC5766)、および Session Traversal Utilities for NAT (STUN RFC5389) を含む IETF プロトコルのセットが含まれており、ピアツーピア接続の確立や、リアルタイムのメディアおよびデータストリーミング向けのプロトコル仕様の確立を目的としています。Kinesis Video Streams は、フルマネージド型の機能として、標準規格に準拠した WebRTC 実装を提供します。この機能を使用して、メディアを安全にライブストリーミングしたり、IoT カメラデバイスと WebRTC に準拠したモバイルやウェブプレイヤーとの間で行われるオーディオやビデオの双方向の通信を実行したりできます。フルマネージド型の機能として、シグナリングやメディア中継サーバーなどの WebRTC 関連のクラウドインフラストラクチャを構築、運用、またはスケールする必要なしに、アプリケーションやデバイスをまたいで安全にメディアをストリーミングできます。
Q: WebRTC でライブメディアストリーミングを可能にするために、Amazon Kinesis Video Streams では何を管理しますか?
Kinesis Video Streams は、WebRTC のシグナリングのためのマネージド型エンドポイントを提供します。これにより、アプリケーションは安全に相互接続してピアツーピアのライブメディアストリーミングを実現できます。それから、Kinesis Video Streams には TURN のマネージド型エンドポイントが含まれるため、アプリケーションがピアツーピアメディアをストリーミングできない場合には、クラウドを介したメディアの中継が可能になります。また、STUN のマネージド型エンドポイントも含まれており、アプリケーションが NAT やファイアウォールの背後にあるときにはパブリック IP アドレスの検出が可能です。さらに、使い勝手のよい SDK を提供しているため、WebRTC 機能を備えた IoT カメラデバイスを使用することもできます。最後に、Android、iOS、およびウェブアプリケーション用のクライアント SDK を提供しており、Kinesis Video Streams WebRTC のシグナリング、TURN 機能、および STUN 機能を WebRTC 準拠のモバイルやウェブプレーヤーと統合します。
Q: Kinesis Video Streams WebRTC 機能を使用して何を構築できますか?
Kinesis Video Streams WebRTC を使用すると、ライブメディアストリーミング用のアプリケーションや、IoT カメラデバイス、ウェブブラウザ、モバイルデバイス間で行われるオーディオやビデオのリアルタイム相互通信機能用のアプリケーションを簡単に構築することができます。これには、たとえば親が乳幼児の部屋を監視したり、ビデオドアベルで玄関前に誰がいるかを家の所有者が確認できるようになったり、カメラ対応のロボット掃除機の所有者がライブカメラストリームを表示して携帯電話でロボットをリモート制御できたり、といった導入事例が考えられます。
Q: Kinesis Video Streams WebRTC 機能はどのように使用開始できますか?
使用開始にあたり、まずはウェブブラウザ、Android ベースや iOS ベースのモバイルデバイス、Linux、Raspbian、および MacOS ベースの IoT デバイスで使用可能なサンプルアプリケーションを、WebRTC 向け Kinesis Video Streams SDK で構築、実行することができます。Kinesis Video Streams のマネジメントコンソールでこの機能のクイックデモを実行することもできます。シグナリングチャネルを作成し、デモアプリケーションを実行してラップトップの内蔵カメラとマイクからオーディオとビデオをライブストリーミングします。
Q: シグナリングチャネルとは何ですか?
シグナリングチャネルは、シグナリングメッセージを交換することにより、アプリケーションがピアツーピア接続を検出、設定、制御、および終了できるようにするリソースです。シグナリングメッセージは、2 つのアプリケーションが相互に交換してピアツーピア接続を確立するメタデータです。このメタデータには、メディアコーデックやコーデックパラメータなどのローカルメディア情報が含まれます。ライブストリーミングのために相互に接続する 2 つのアプリケーションのネットワーク候補パスが含まれることもあります。
Q: アプリケーションはどのようにシグナリングチャネルを使用して、ピアツーピア接続を有効にしますか?
ストリーミングアプリケーションは、シグナリングチャネルとの永続的な接続を維持し、他のアプリケーションからの接続を待ちます。もしくは、メディアをライブストリーミングする必要があるときだけシグナリングチャネルに接続することもできます。シグナリングチャネルにより、1 つのマスターが複数の視聴者に接続するという概念を使用して、1 つのアプリケーションを数台のアプリケーションと相互接続させることができます。接続を開始するアプリケーションは、ConnectAsMaster API を介してマスターの責任を引き受け、視聴者を待ちます。その後、ConnectAsViewer API を介して視聴者の責任を引き受けることにより、最大 10 個のアプリケーションがそのシグナリングチャネルに接続できます。シグナリングチャネルに接続すると、マスターアプリケーションと視聴者のアプリケーションは相互にシグナリングメッセージを送受信して、ライブメディアストリーミング用のピアツーピア接続を確立できます。
Q: アプリケーションが NAT またはファイアウォールの背後にある場合、ピアツーピアメディアはどのようにライブストリーミングされますか?
アプリケーションは、Kinesis Video Streams STUN エンドポイントを使用して、アプリケーションが NAT またはファイアウォールの背後にあるときにパブリック IP アドレスを検出します。アプリケーションは、ライブストリーミング用に他のアプリケーションから接続要求を受信できる場所として、パブリック IP アドレスを提供します。WebRTC 通信はすべて、デフォルトオプションが直接ピアツーピア接続になっていますが、NAT またはファイアウォールが直接接続を許可する場合 (Symmetric NAT の場合など)、アプリケーションは Kinesis Video Streams TURN エンドポイントに接続し、クラウドを介してメディアを中継します。GetIceServerConfig API は、アプリケーションが WebRTC 設定する際に使用するのに必要な TURN エンドポイント情報を提供します。この設定により、アプリケーションは、ライブストリーミング用の直接的なピアツーピア接続を確立できない場合に、TURN 中継をフォールバックとして使用できます。
Q: Kinesis Video Streams は、WebRTC を使用してライブメディアストリーミングをどのように保護していますか?
エンドツーエンドの暗号化は WebRTC の必須機能ですが、Kinesis Video Streams では、シグナリングや、メディアストリーミング、データストリーミングを含むすべてのコンポーネントでこれを実施します。通信がピアツーピアであるか、Kinesis Video Streams TURN エンドポイント経由で中継されるかどうかに関係なく、すべての WebRTC 通信が標準化された暗号プロトコルを使用して安全に暗号化されます。シグナリングメッセージの交換にはセキュアな Websocket (WSS) が、データストリームの暗号化には Datagram Transport Layer Security (DTLS) が、メディアストリームの暗号化には セキュアなリアルタイム転送プロトコル (SRTP) が、それぞれ使用されています。
コンソール
Q: Kinesis Video Streams マネジメントコンソールとは何ですか?
Kinesis Video Streams マネジメントコンソールを使用すると、動画ストリームを作成、更新、管理、モニタリングすることができます。また、ストリーム内のコンテンツがサポートされているメディアタイプであれば、コンソールでライブやオンデマンドでメディアストリームを再生することもできます。プレイヤーコントロールを使用すると、ライブストリームを表示したり、前後に 10 秒間スキップしたり、日付と時刻のピッカーを使用して、動画ストリームの対応する保持期間を設定した過去の時点に巻き戻したりすることができます。Kinesis Video Streams マネジメントコンソールの動画再生機能は、開発者が Kinesis Video Streams を使用してソリューションを構築する際の開発とテストの用途向けに簡単な診断ツールとして提供されています。
Q: コンソールはどのメディアタイプをサポートしていますか?
Kinesis Video Streams マネジメントコンソールでの再生用にサポートされている動画メディアタイプは、一般的な H.264 フォーマットのみです。このメディアフォーマットは、デバイス、ハードウェアおよびソフトウェアのエンコーダー、再生エンジンで幅広くサポートされています。独自のコンシューマーアプリケーションやユースケースに合わせてさまざまな動画、音声、その他のカスタムの時間符号化データ型を取り込むことができますが、マネジメントコンソールではこうしたデータ型を再生できません。
Q: Kinesis Video Streams 管理コンソールでの動画再生の遅延はどのくらいですか?
動画データを動画ストリームに送信するプロデューサーの場合、Kinesis Video Streams マネジメントコンソールでのライブ再生において 2~10 秒の遅れが発生することがあります。レイテンシーの大部分は、プロデューサーデバイスがインターネットを介してデータを送信する前に、フレームをフラグメントに蓄積するときに発生します。データが Kinesis Video Streams エンドポイントに入力され、ユーザーが再生をリクエストすると、コンソールでは H.264 メディアタイプのフラグメントが永続ストレージから取得され、異なるインターネットブラウザでの再生に適したメディアフォーマットにフラグメントがパッケージ変換されます。パッケージ変換されたメディアコンテンツは、ユーザーがインターネット経由での再生をリクエストした場所に転送されます。
暗号化
Q: Kinesis Video Streams のサーバー側の暗号化とは何ですか?
サーバー側の暗号化は、ユーザーが指定する AWS KMS キーを使用して、データが保存される前にデータを自動的に暗号化する Kinesis Video Streams の機能です。データは Kinesis Video Streams ストレージレイヤーに書き込まれる前に暗号化され、ストレージから取得された後に復号化されます。その結果、データは Kinesis Video Streams サービス内で常に暗号化された状態で保管されます。
Q: サーバー側の暗号化を開始するにはどのようにすればよいですか?
サーバー側の暗号化は、Kinesis 動画ストリームで常に有効になっています。ストリームの作成時にユーザー指定のキーが指定されていない場合は、デフォルトキー (Kinesis Video Streams によって提供) が使用されます。
ユーザー指定の AWS KMS キーは、Kinesis Video Streams ストリームの作成時に割り当てる必要があります。後で UpdateStream API を使用して別のキーをストリームに割り当てることはできません。
ユーザー指定の AWS KMS キーを 2 つの方法で Kinesis 動画ストリームに割り当てることができます。コンソールで Kinesis 動画ストリームを作成するときに、[Create new Kinesis Video stream] ページの [Encryption] セクションで AWS KMS キーを指定します。または、CreateStream API を使用して Kinesis Video Streams ストリームを作成するときに、KmsKeyId パラメータでキー ID を指定します。
Q: サーバー側の暗号化を使用するのに必要な費用はいくらになりますか?
サーバー側の暗号化を適用すると、AWS KMS API の使用およびキーのコストがかかります。カスタムの AWS KMS キーとは異なり、(デフォルトの) aws/kinesis-video KMS キーは無料で提供されます。ただし、Kinesis Video Streams で使用される API の使用料金は支払う必要があります。API 使用料金は、カスタマイズされたものを含め、KMS キーごとに適用されます。データキーのローテーションが行われている場合は、Kinesis Video Streams により約 45 分ごとに AWS KMS が呼び出されます。1 か月を 30 日とした場合、Kinesis Video Streams により開始される AWS KMS API コールの料金は合計数ドル未満です。この料金は、データプロデューサーとデータコンシューマーで使用するユーザー認証情報の数に応じて異なります (ユーザー認証情報ごとに AWS KMS に対する一意の API コールが必要なため)。
料金と請求
Q: Amazon Kinesis Video Streams は AWS 無料利用枠の対象ですか?
いいえ。Amazon Kinesis Video Streams は AWS 無料利用枠の対象外です。
Q: Kinesis Video Streams の費用はどの程度ですか?
Kinesis Video Streams はシンプルな従量課金制で使用できます。前払い料金や最低料金はなく、使用したリソースに対してのみお支払いいただきます。Kinesis Video Streams の料金は、アカウント内のすべての動画ストリームについて、取り込まれたデータ量 (GB)、消費されたデータ量 (GB)、格納されたデータ (GB/月) に基づいて算出されます。
さらに、Kinesis Video Streams では、受信に成功したメディアデータに対してのみ課金され、最小チャンクサイズは 4 KB です。ちなみに 64 kbps の音声サンプルのサイズは 8 KB であるため、最小のチャンクサイズは、最小の音声や動画ストリームに対応できるよう十分に低く設定されています。
Q: Kinesis Video Streams では、ストリームに保存したデータに対してどのような請求が行われますか?
Kinesis Video Streams では、任意のストリームで永続的に保存されたデータの総量に対して請求されます。動画ストリームごとに格納されるデータの総量は、保持時間を使用して制御できます。
Q: Kinesis Video Streams WebRTC 機能に対してどのように課金されますか?
Amazon Kinesis Video Streams WebRTC 機能を使用する場合、特定の月にアクティブなシグナリングチャネルの数、送受信されるシグナリングメッセージの数、およびメディアの中継に使用される TURN ストリーミング時間 (分) に基づいて課金されます。シグナリングチャネルは、1 か月の中でデバイスやアプリケーションが接続した時間がある場合、その月はアクティブだったと見なされます。TURN ストリーミングの時間は、1 分単位で計測されます。詳細については、料金ページを参照してください。
サービスレベルアグリーメント (SLA)
Q: Amazon Kinesis Video Streams SLA では何が保証されますか?
Amazon Kinesis Video Streams SLA では、Amazon Kinesis Video Streams について少なくとも 99.9% の月間稼働率が保証されます。
Q: SLA サービスクレジットの資格を有しているかどうかは、どうすればわかりますか?
同じリージョン内の複数のアベイラビリティーゾーンでタスクを実行しており、任意の月間課金期間中に月間稼働率が 99.9% 未満であった場合、Amazon Kinesis Video Streams SLA に基づいて Amazon Kinesis Video Streams に対する SLA クレジットを受け取る資格があります。
SLA の利用規約に関するすべての詳細、およびクレジット請求方法の詳細については、Amazon Kinesis Video Streams SLA の詳細ページを参照してください。