GetDASHStreamingSessionURL - Amazon Kinesis Video Streams

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

GetDASHStreamingSessionURL

ストリームの HTTP (DASH) 経由でMPEG動的アダプティブURLストリーミングを取得します。その後、メディアプレイヤーURLで を開いて、ストリームの内容を表示できます。

パラメータStreamNameStreamARNパラメータはどちらもオプションですが、このAPIオペレーションを呼び出すStreamARNときは StreamNameまたは を指定する必要があります。

Amazon Kinesis ビデオストリームには、 MPEG- を介してデータを提供するための以下の要件がありますDASH。

  • 動画再生トラックの要件

  • データの保持期間が 0 より大きい。

  • 各フラグメントのビデオトラックには、H.264 形式および H.265 形式の高度なビデオコーディング (AVC) HEVC のコーデックプライベートデータが含まれている必要があります。詳細については、MPEG「-4 仕様 ISO/IEC 14496-15」を参照してください。ストリームデータを特定の形式に適応させる方法については、NAL「適応フラグ」を参照してください。

  • 各フラグメントのオーディオトラック (存在する場合) には、 AAC形式 ( AAC仕様 ISO/IEC 13818-7) または MS Wave 形式 のコーデックプライベートデータが含まれている必要があります。

次の手順は、Kinesis Video Streams で MPEG-DASH を使用する方法を示しています。

  1. を呼び出しGetDataEndpointAPIてエンドポイントを取得します。次に、--endpoint-url parameter を使用して GetDASHStreamingSessionURL リクエストをこのエンドポイントに送信します。

  2. URL を使用して MPEG-DASH を取得しますGetDASHStreamingSessionURL。Kinesis Video Streams は、 MPEG-DASH プロトコルを使用してストリーム内のコンテンツにアクセスするために使用する MPEG-DASH ストリーミングセッションを作成します。 は、セッションの MPEG-DASH マニフェスト URL ( MPEG- によるストリーミングに必要なルートリソース) に対して認証された (暗号化されたセッショントークンを含む) GetDASHStreamingSessionURLを返しますDASH。

    注記

    許可されていないエンティティがアクセスできる場所に、このトークンを共有したり保存したりしないでください。トークンがストリームのコンテンツへのアクセスを提供します。 AWS 認証情報で使用するのと同じ方法でトークンを保護します。

    マニフェストを通じて利用できるメディアは、要求されたストリーム、時間範囲、および形式のみで構成されます。他のメディアデータ(リクエストされた画面外のフレーム、代替ビットレートなど)は利用できません。

  3. - プロトコルをサポートするメディアプレーヤーに、 MPEG-DASH マニフェストの URL (暗号化されたセッショントークンを含む) MPEGDASHを指定します。Kinesis Video Streams は、初期化フラグメントとメディアフラグメントをマニフェスト から利用できるようにしますURL。初期化フラグメントには、ストリームのコーデックプライベートデータ、およびビデオまたはオーディオデコーダーとレンダラーのセットアップに必要なその他のデータが含まれています。        メディアフラグメントには、エンコードされたビデオフレームまたはエンコードされたオーディオサンプルが含まれます。

  4. メディアプレイヤーは認証された を受け取りURL、ストリームメタデータとメディアデータを正常にリクエストします。メディアプレーヤーがデータを要求すると、次のアクションが呼び出されます。

    • G etDASHManifest: 再生するメディアのメタデータを含むMPEGDASHマニフェストを取得します。

    • Get MP4InitFragment: MP4初期化フラグメントを取得します。通常、メディアプレーヤーがメディアフラグメントをロードする前に、初期化フラグメントをロードします。このフラグメントには、fytp「」と「」のmoovMP4原子と、メディアプレーヤーデコーダーの初期化に必要な子原子が含まれています。

      初期化フラグメントは、Kinesis ビデオストリームのフラグメントには対応していません。これには、メディアプレーヤーがメディアフレームをデコードするために必要な、ストリームと各トラックのコーデックプライベートデータだけが含まれます。

    • を取得するMP4MediaFragment: MP4メディアフラグメントを取得します。これらのフラグメントには、エンコードされたフラグメントのメディアフレームmoofとそのタイムスタンプを含む「」と「」のmdatMP4原子とその子原子が含まれています。

      重要

      各フラグメントに含まれるコーデックプライベートデータ (CPD) には、フラグメントを適切にデコードするために必要なフレームレート、解像度、エンコーディングプロファイルなどのコーデック固有の初期化情報が含まれています。CPD ストリーミングセッション中は、 の変更はサポートされていません。は、クエリされたメディアを通じて一貫性を維持CPDする必要があります。

      重要

      トラックの変更はサポートされていません。トラックは、クエリされたメディア全体で一貫性を維持する必要があります。ストリーム内のフラグメントがビデオのみからオーディオとビデオの両方に変わった場合、またはAACオーディオトラックが A-Law オーディオトラックに変更された場合、ストリーミングは失敗します。

      このアクションで取得されたデータは請求対象です。詳細については、「料金」を参照してください。

注記

MPEG-DASH セッションに適用される制限については、「Kinesis Video Streams のクォータ」を参照してください。

GetMP4MediaFragment.OutgoingBytes Amazon CloudWatch メトリクスをモニタリングすることで、メディアプレーヤーが消費するデータ量をモニタリングできます。を使用して Kinesis Video Streams をモニタリング CloudWatch する方法については、「Kinesis Video Streams のモニタリング」を参照してください。料金情報については、Amazon Kinesis Video Streams」を参照してください。 AWSHLS セッションと送信 AWS データの両方に料金が適用されます。

の詳細についてはHLS、Apple デベロッパーサイトのHTTP「ライブストリーミング」を参照してください。

重要

Kinesis Video Streams アーカイブメディア を呼び出した後にエラーがスローされた場合API、HTTPステータスコードとレスポンス本文に加えて、次の情報が含まれます。

  • x-amz-ErrorType HTTP header – HTTPステータスコードが提供するものに加えて、より具体的なエラータイプが含まれます。

  • x-amz-RequestId HTTP ヘッダー – サポートチームに問題を報告したい場合は AWS 、リクエスト ID が与えられていれば問題をより適切に診断できます。

HTTP ステータスコードと ErrorType ヘッダーの両方を使用して、エラーが再試行可能かどうか、どのような条件下で再試行できるかをプログラムで決定したり、クライアントプログラマーが再試行を正常に行うためにどのようなアクションを実行する必要があるかに関する情報を提供したりできます。

詳細については、このトピックの下部にある[Errors] (エラー) セクションおよび「Common Errors」を参照してください。

リクエストの構文

POST /getDASHStreamingSessionURL HTTP/1.1 Content-type: application/json { "DASHFragmentSelector": { "FragmentSelectorType": "string", "TimestampRange": { "EndTimestamp": number, "StartTimestamp": number } }, "DisplayFragmentNumber": "string", "DisplayFragmentTimestamp": "string", "Expires": number, "MaxManifestFragmentResults": number, "PlaybackMode": "string", "StreamARN": "string", "StreamName": "string" }

URI リクエストパラメータ

リクエストはURIパラメータを使用しません。

リクエスト本文

リクエストは、 JSON形式の次のデータを受け入れます。

DASHFragmentSelector

要求されたフラグメントの時間範囲とタイムスタンプのソース。

このパラメーターは、PlaybackModeON_DEMAND または LIVE_REPLAY の場合に必要です。が の場合、このパラメータ PlaybackMode はオプションですLIVEPlaybackModeLIVE の場合、FragmentSelectorType は設定できますが、TimestampRange は設定しないでください。PlaybackModeON_DEMAND または LIVE_REPLAY の場合、FragmentSelectorTypeTimestampRange の両方を設定する必要があります。

型: DASHFragmentSelector オブジェクト

必須:いいえ

DisplayFragmentNumber

フラグメントは、セッション内のシーケンス番号に基づいてマニフェストファイルで識別されます。 DisplayFragmentNumber が に設定されている場合ALWAYS、Kinesis Video Streams フラグメント番号は、属性名「kvs:fn」のマニフェストファイル内の各 S 要素に追加されます。これらのフラグメント番号は、ログ記録や他の APIs (例: GetMediaおよび GetMediaForFragmentList) で使用できます。これらのカスタム属性を利用するには、カスタム MPEG-DASH メディアプレーヤーが必要です。

デフォルト値は NEVER です。

型: 文字列

有効な値: ALWAYS | NEVER

必須:いいえ

DisplayFragmentTimestamp

MPEG-DASH 仕様では、マニフェストファイル内のフラグメントのウォールクロック時間は、マニフェスト自体の属性を使用して導き出すことができます。ただし、通常、 MPEGとDASH互換性のあるメディアプレーヤーは、メディアタイムラインのギャップを適切に処理しません。Kinesis Video Streams は、マニフェストファイルのメディアタイムラインを調整して、不連続があるメディアを再生可能にします。  したがって、マニフェストファイルから得られるウォールクロック時刻が不正確になる可能性があります。 DisplayFragmentTimestamp が に設定されている場合ALWAYS、マニフェストファイル内の各 S 要素に属性名「kvs:ts」で正確なフラグメントタイムスタンプが追加されます。このカスタム属性を利用するには、カスタム MPEG-DASH メディアプレーヤーが必要です。

デフォルト値は NEVER です。DASHFragmentSelectorSERVER_TIMESTAMP の場合、タイムスタンプはサーバーの開始タイムスタンプになります。同様に、DASHFragmentSelectorPRODUCER_TIMESTAMP の場合、タイムスタンプはプロデューサーの開始タイムスタンプになります。

型: 文字列

有効な値: ALWAYS | NEVER

必須:いいえ

Expires

要求されたセッションの有効期限が切れるまでの時間(秒)。この値は 300 (5 分) から 43200 (12 時間) の間です。

セッションの有効期限が切れると、そのセッションに対して GetDashManifestGetMP4InitFragment、または GetMP4MediaFragment への新しい呼び出しを行うことはできません。

デフォルトは300(5分)です。

型: 整数

値の範囲: 最小値 は 300 です。最大値は 43200 です。

必須:いいえ

MaxManifestFragmentResults

MPEG-DASH マニフェストで返されるフラグメントの最大数。

PlaybackModeLIVE の場合、最新のフラグメントがこの値まで返されます。PlaybackModeON_DEMAND の場合、この最大数まで、最も古いフラグメントが返されます。

ライブDASHマMPEGニフェストで使用できるフラグメントの数が多い場合、ビデオプレーヤーは再生を開始する前にコンテンツをバッファリングすることがよくあります。バッファサイズを大きくすると再生レイテンシーが増加しますが、再生中にバッファリングが発生する可能性は低くなります。ライブ MPEG-DASH マニフェストには、最低 3 つのフラグメントと最大 10 のフラグメントを含めることをお勧めします。

デフォルトでは、PlaybackModeLIVE または LIVE_REPLAY の場合は 5 個のフラグメント、PlaybackModeON_DEMAND の場合は 1,000 個のフラグメントです。 

1,000 個のフラグメントの最大値は、1 秒のフラグメントを含むストリームで 16 分を超える動画、および 10 秒のフラグメントを含むストリームで 2 時間 30 分を超える動画に対応します。 

型: Long

有効範囲: 最小値は 1 です。最大値は 5,000 です。

必須:いいえ

PlaybackMode

ライブ、ライブリプレイ、またはアーカイブ済のオンデマンドデータを取得するかどうか。

3 種類のセッションの機能は次のとおりです。

  • LIVE : このタイプのセッションでは、 MPEG-DASH マニフェストは、利用可能な最新のフラグメントで継続的に更新されます。メディアプレーヤーは 1 秒間隔で新しいマニフェストを取得することをお勧めします。このタイプのセッションがメディアプレーヤーで再生される場合、ユーザーインターフェイスには、通常「live (ライブ)」通知が表示されます。再生ウィンドウ内の位置を選択するためのスクラバーコントロールはありません。

    注記

    LIVE モードでは、フラグメント間にギャップがある場合 (つまり、フラグメントがない場合) でも、利用可能な最新のフラグメントが MPEG-DASH マニフェストに含まれます。このようなギャップにより、メディアプレーヤーが再生中に停止したり、途切れたりすることがあります。このモードでは、プレイリスト内の最新のフラグメントよりも古いフラグメントは MPEG-DASH マニフェストに追加されません。後続のフラグメントがマニフェストに追加された後に欠落フラグメントが使用可能になっても、古いフラグメントは追加されず、ギャップは埋められません。

  • LIVE_REPLAY : このタイプのセッションの場合、 MPEG-DASH マニフェストは、特定の開始時刻のフラグメントを含めることによって開始される点を除いて、 LIVE モードの更新方法と同様に更新されます。フラグメントは、取り込まれるときに追加されるのではなく、次のフラグメントの期間が経過すると追加されます。例えば、セッション内のフラグメントの長さが 2 秒の場合、2 秒ごとに新しいフラグメントがマニフェストに追加されます。このモードは、イベントの検出で再生を開始し、セッションの作成時点でまだ取り込まれていないライブストリーミングメディアを継続できるようにする場合に便利です。また、ON_DEMAND モードの 1,000 フラグメントの制限に制約されることなく、以前にアーカイブされたメディアをストリーミングする場合にも役立ちます。

  • ON_DEMAND : このタイプのセッションの場合、 MPEG-DASH マニフェストには、 で指定された数までのセッションのすべてのフラグメントが含まれますMaxManifestFragmentResults。マニフェストは、セッションごとに 1 回だけ取得する必要があります。このタイプのセッションがメディアプレーヤーで再生される場合、ユーザーインターフェイスには、通常再生ウィンドウ内の位置を選択するためのスクラバーコントロールが表示されます。

すべての再生モードで、 FragmentSelectorTypeが でPRODUCER_TIMESTAMP、開始タイムスタンプが同じフラグメントが複数ある場合、フラグメント番号が大きいフラグメント (つまり、新しいフラグメント) が MPEG-DASH マニフェストに含まれます。他のフラグメントは含まれません。タイムスタンプは異なるが期間が重複しているフラグメントは、 MPEG-DASH マニフェストにまだ含まれています。これにより、メディアプレーヤーで予期しない動作が発生する場合があります。

デフォルト: LIVE

型: 文字列

有効な値: LIVE | LIVE_REPLAY | ON_DEMAND

必須:いいえ

StreamARN

MPEG-DASH マニフェストを取得するストリームの Amazon リソースネーム (ARN)URL。

StreamName または StreamARN のパラメータを指定する必要があります。

型: 文字列

長さの制限: 最小長は 1 です。最大長は 1,024 です。

パターン: arn:[a-z\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+

必須: いいえ

StreamName

MPEG-DASH マニフェスト を取得するストリームの名前URL。

StreamName または StreamARN のパラメータを指定する必要があります。

型: 文字列

長さの制限:最小長は 1 です。最大長は 256 です。

Pattern: [a-zA-Z0-9_.-]+

必須:いいえ

レスポンスの構文

HTTP/1.1 200 Content-type: application/json { "DASHStreamingSessionURL": "string" }

レスポンス要素

アクションが成功すると、サービスは 200 HTTP レスポンスを返します。

次のデータは、 サービスによって JSON 形式で返されます。

DASHStreamingSessionURL

メディアプレーヤーが MPEG-DASH マニフェストを取得するために使用できる URL (セッショントークンを含む)。

型: 文字列

エラー

すべてのアクションに共通のエラーについては、「共通エラー」を参照してください。

ClientLimitExceededException

制限を超えたため、Kinesis Video Streams がリクエストをスロットリングしました。後で呼び出しを試みてください。制限の詳細については、「Kinesis Video Streams のクォータ」を参照してください。

HTTP ステータスコード: 400

InvalidArgumentException

指定されたパラメータが制限を超えているか、サポートされていない、または使用できません。

HTTP ステータスコード: 400

InvalidCodecPrivateDataException

ビデオストリームの少なくとも 1 つのトラックにあるコーデックのプライベートデータは、この操作には無効です。

HTTP ステータスコード: 400

MissingCodecPrivateDataException

ビデオストリームの少なくとも 1 つのトラックにコーデックのプライベートデータがありませんでした。

HTTP ステータスコード: 400

NoDataRetentionException

GetImages は、データを保持しない (つまり、 が 0 DataRetentionInHoursである) ストリームに対してリクエストされました。

HTTP ステータスコード: 400

NotAuthorizedException

ステータスコード: 403 呼び出し元が指定されたストリームで操作を実行する権限がないか、トークンの有効期限が切れています。

HTTP ステータスコード: 401

ResourceNotFoundException

GetImages は、指定したストリームが Kinesis Video Streams で見つからない場合に、このエラーをスローします。

GetHLSStreamingSessionURL リクエストされた時間範囲内にフラグメントがないストリームに対して ON_DEMANDまたは PlaybackModeのセッションLIVE_REPLAYがリクエストされた場合、または過去 30 秒以内にフラグメントがないストリームに対して PlaybackModeのセッションLIVEがリクエストされた場合、 と はこのエラーをGetDASHStreamingSessionURLスローします。

HTTP ステータスコード: 404

UnsupportedStreamMediaTypeException

メディアのタイプ (例えば、h.264 または h.265 ビデオ、AACまたは G.711 オーディオ) は、再生セッションの最初のフラグメントのトラックIDsのコーデックから決定できませんでした。トラック 1 のコーデック ID は V_MPEG/ISO/AVC である必要があります。また、オプションでトラック 2 のコーデック ID は A_AAC である必要があります。

HTTP ステータスコード: 400

以下の資料も参照してください。

言語固有の のいずれかAPIでこれを使用する方法の詳細については AWS SDKs、以下を参照してください。