Kinesis Video Streams APIとプロデューサーライブラリのサポート - Amazon Kinesis Video Streams

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Kinesis Video Streams APIとプロデューサーライブラリのサポート

Kinesis Video Streams では、ストリームを作成および管理し、ストリームとの間でメディアデータを読み書きAPIsできます。Kinesis Video Streams コンソールは、管理機能に加えて、ライブと video-on-demand再生もサポートしています。Kinesis Video Streams は、アプリケーションコードで使用すると、データをメディアソースから抽出したり、Kinesis のビデオストリームにアップロードすることができる一連のプロデューサーライブラリも提供します。

Kinesis Video Streams API

Kinesis Video Streams は、Kinesis Video Streams を作成および管理APIsするための を提供します。また、次のようにメディアデータの読み取りとストリームへの書き込みAPIsも可能です。

  • プロデューサー API – Kinesis Video Streams は、Kinesis ビデオストリームにメディアデータを書き込むPutMediaAPIための を提供します。PutMedia リクエストで、プロデューサーはメディアフラグメントのストリームを送信します。フラグメントとは、自己完結型のフレームのシーケンスです。フラグメントに属するフレームは、他のフラグメントからのフレームに依存していないことが求められます。詳細については、「PutMedia」を参照してください。

    フラグメントが届くと、Kinesis Video Streams では一意のフラグメント番号を昇順で割り当てます。また、各フラグメントのプロデューサー側とサーバー側のタイムスタンプを Kinesis Video Streams 固有のメタデータとして保存します。

  • コンシューマー APIs – コンシューマーは以下を使用してストリームからデータAPIsを取得できます。

    • GetMedia - この を使用する場合API、コンシューマーは開始フラグメントを識別する必要があります。API 次に、 は、ストリームに追加された順序でフラグメントを返します (フラグメント番号の順に増加)。フラグメント内のメディアデータは、Matroska (MKV) などの構造化された形式にまとめられます。詳細については、「GetMedia」を参照してください。

      注記

      GetMedia では、フラグメントの場所を認識します (データストア内にアーカイブされているか、リアルタイムで利用可能)。たとえば、開始フラグメントがアーカイブされていることを GetMedia が判断すると、フラグメントがデータストアから返され始めます。まだアーカイブされていない新しいフラグメントを返す必要がある場合、 はインメモリストリームバッファからのフラグメントの読み取りGetMediaに切り替えます。

      これは、ストリームによって取り込まれた順番でフラグメントを処理する継続的なコンシューマーの例です。

      GetMedia では、動画処理アプリケーションが失敗したり、遅延した後でも、問題なく処理を挽回することができます。GetMedia を使用すると、アプリケーションでは、データストアにアーカイブされているデータを処理でき、アプリケーションが処理に追いついてきたところで、届いたメディアデータを GetMedia がリアルタイムで引き続き配信するようになります。

    • GetMediaFromFragmentList (および ListFragments) - バッチ処理アプリケーションはオフラインコンシューマーと見なされます。オフラインコンシューマーは、 ListFragmentsと を組み合わせて、特定のメディアフラグメントまたは動画範囲を明示的にフェッチすることを選択できますGetMediaFromFragmentListAPIs。ListFragmentsまた、アプリケーションが特定の時間範囲またはフラグメント範囲の動画セグメントを識別し、それらのフラグメントを順次または並列にフェッチして処理GetMediaFromFragmentListできるようにします。このアプローチは、大量のデータを並行して迅速に処理する必要がある MapReduce アプリケーションに適しています。

      たとえば、コンシューマーが 1 日分の動画フラグメントを処理する必要があるとします。コンシューマーは次のことを行います。

      1. を呼び出しListFragmentsAPI、時間範囲を指定してフラグメントのリストを取得し、目的のフラグメントのコレクションを選択します。

        は、指定された時間範囲内のすべてのフラグメントからメタデータAPIを返します。メタデータは、フラグメント番号、プロデューサー側およびサーバー側のタイムスタンプなどの情報を提供します。

      2. フラグメントのメタデータリストを使用して、フラグメントを任意の順序で取得します。例えば、その日のすべてのフラグメントを処理するために、コンシューマーはリストをサブリストに分割し、ワーカー (複数の Amazon EC2インスタンスなど) に を使用してフラグメントを並列にフェッチさせGetMediaFromFragmentList、並列に処理することを選択できます。

次の図は、これらのAPI呼び出し中のフラグメントとチャンクのデータフローを示しています。

API 呼び出し中のフラグメントとチャックのデータフローを示す図

プロデューサーが PutMedia リクエストを送信するときは、ペイロード内のメディアメタデータを送信してから、メディアデータフラグメントのシーケンスを送信します。Kinesis Video Streams はデータを受け取ると、Kinesis Video Streams のチャンクとして着信メディアデータを保存します。各チャンクは以下で構成されています。

  • メディアメタデータのコピー

  • フラグメント

  • Kinesis Video Streams 固有のメタデータ。フラグメント番号、サーバー側およびプロデューサー側のタイムスタンプなど

コンシューマーがメディアメタデータをリクエストすると、Kinesis Video Streams は、リクエストで指定されたフラグメント番号から始まるチャンクのストリームを返します。

ストリームのデータの永続性を有効にした場合、ストリームでフラグメントを受け取った後に、Kinesis Video Streams もフラグメントのコピーをデータストアに保存します。

エンドポイント検出パターン

コントロールプレーン REST APIs

Kinesis Video Streams コントロールプレーン REST APIsにアクセスするには、Kinesis Video Streams サービスエンドポイント を使用します。

データプレーン REST APIs

Kinesis Video Streams はセルラーアーキテクチャを使用して構築されており、スケーリングとトラフィック分離のプロパティが向上します。各ストリームはリージョン内の特定のセルにマッピングされるため、アプリケーションはストリームがマッピングされている正しいセル固有のエンドポイントを使用する必要があります。データプレーン REST にアクセスするときはAPIs、正しいエンドポイントを自分で管理してマッピングする必要があります。エンドポイント検出パターンであるこのプロセスを以下に示します。

  1. エンドポイント検出パターンは、いずれかのGetEndpointsアクションの呼び出しから始まります。これらのアクションはコントロールプレーンに属します。

    1. Amazon Kinesis Video Streams Media または Amazon Kinesis Video Streams Archived Mediaサービスのエンドポイントを取得する場合は、 を使用しますGetDataEndpoint

    2. Amazon Kinesis Video Signaling Channels、、Amazon Kinesis Video WebRTC Storageまたは Kinesis Video Signaling のエンドポイントを取得する場合は、 を使用しますGetSignalingChannelEndpoint

  2. エンドポイントをキャッシュして再利用します。

  3. キャッシュされたエンドポイントが機能しなくなった場合は、 を新規呼び出しGetEndpointsてエンドポイントを更新します。

プロデューサーライブラリ

Kinesis のビデオストリームの作成後は、ストリームへのデータの送信を開始できます。アプリケーションコードで、これらのライブラリを使用してデータをメディアソースから抽出したり、Kinesis のビデオストリームにアップロードすることができます。使用可能なプロデューサーライブラリの詳細については、「Kinesis Video Streams へのアップロード」を参照してください。