翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ストリームの DASH (MPEG Dynamic Adaptive HTTP) の URL を取得します。次に、メディアプレーヤーで URL を開いて、ストリームのコンテンツを表示できます。
StreamName
と StreamARN
のパラメータは両方ともオプションですが、この API 操作を呼び出すときは StreamName
または StreamARN
を指定する必要があります。
Amazon Kinesis ビデオストリームには、MPEG-DASH を介してデータを提供するための次の要件があります。
-
データの保持期間が 0 より大きい。
-
各フラグメントの動画トラックに、AVC (Advanced Video Coding) のコーデックプライベートデータが H.264 形式で、および HEVC のコーデックプライベートデータが H.265 形式で含まれている必要があります。詳細については、「MPEG-4 仕様 ISO/IEC 14496-15
」を参照してください。ストリームデータを特定の形式に適応させる方法については、「NAL 適応フラグ」を参照してください。 -
各フラグメントのオーディオトラック (存在する場合) に、コーデックプライベートデータが AAC 形式 (AAC 仕様 ISO/IEC 13818-7
) または MS Wave 形式 で含まれている必要があります。
以下の手順は、Kinesis Video Streams で MPEG-DASH を使用する方法を示しています。
-
GetDataEndpoint
API を呼び出してエンドポイントを取得します。次に、--endpoint-url parameter を使用してGetDASHStreamingSessionURL
リクエストをこのエンドポイントに送信します。 -
GetDASHStreamingSessionURL
を使用して、MPEG-DASH の URL を取得します。Kinesis Video Streams は、MPEG-DASH プロトコルを使用してストリーム内のコンテンツにアクセスするために使用される MPEG-DASH ストリーミングセッションを作成します。GetDASHStreamingSessionURL
は、セッションの MPEG-DASH マニフェスト(MPEG-DASH でのストリーミングに必要なルートリソース)の認証済みURL(暗号化されたセッショントークンを含む)を返します。注記
許可されていないエンティティがアクセスできる場所に、このトークンを共有したり保存したりしないでください。トークンがストリームのコンテンツへのアクセスを提供します。 AWS 認証情報で使用するのと同じ方法でトークンを保護します。
マニフェストを通じて利用できるメディアは、要求されたストリーム、時間範囲、および形式のみで構成されます。他のメディアデータ(リクエストされた画面外のフレーム、代替ビットレートなど)は利用できません。
-
MPEG-DASH プロトコルをサポートするメディアプレーヤーに MPEG-DASH マニフェストの URL(暗号化されたセッショントークンを含む)を指定します。Kinesis Video Streams は、マニフェスト URL を通じて初期化フラグメントとメディアフラグメントを使用できるようにします。初期化フラグメントには、ストリームのコーデックプライベートデータ、およびビデオまたはオーディオデコーダーとレンダラーのセットアップに必要なその他のデータが含まれています。 メディアフラグメントには、エンコードされたビデオフレームまたはエンコードされたオーディオサンプルが含まれます。
-
メディアプレーヤーは、認証された URL を受け取り、ストリームメタデータとメディアデータを通常通りリクエストします。メディアプレーヤーがデータを要求すると、次のアクションが呼び出されます。
-
getDashManifest: 再生するメディアのメタデータを含む MPEG DASH マニフェストを取得。
-
GetMP4InitFragment: MP4 初期化フラグメントを取得。通常、メディアプレーヤーがメディアフラグメントをロードする前に、初期化フラグメントをロードします。このフラグメントには、「
fytp
」 および 「moov
」MP4 atom 、およびメディアプレーヤーデコーダを初期化するために必要な子 atom が含まれています。初期化フラグメントは、Kinesis ビデオストリームのフラグメントには対応していません。これには、メディアプレーヤーがメディアフレームをデコードするために必要な、ストリームと各トラックのコーデックプライベートデータだけが含まれます。
-
GetMP4MediaFragment: MP4 メディアフラグメントを取得。これらのフラグメントは、「
moof
」および「mdat
」MP4 atom とその子 atom で構成され、エンコードされたフラグメントのメディアフレームとそのタイムスタンプを含みます。重要
各フラグメントに含まれるコーデックプライベートデータ (CPD) には、フラグメントを適切にデコードするために必要なフレームレート、解像度、エンコーディングプロファイルなどのコーデック固有の初期化情報が含まれています。CPD の変更は、ストリーミングセッション中はサポートされていません。CPD は、クエリされたメディアを通じて一貫性を維持する必要があります。
重要
変更の追跡はサポートされていません。トラックは、クエリされたメディア全体で一貫性を維持する必要があります。ストリーム内のフラグメントがビデオのみからオーディオとビデオの両方に変わるか、AAC オーディオトラックが A-Law オーディオトラックに変更されると、ストリーミングは失敗します。
このアクションで取得されたデータは請求対象です。詳細については、「料金
」を参照してください。
-
注記
MPEG-DASH セッションに適用される制限については、「Kinesis Video Streams クォータ」を参照してください。
GetMP4MediaFragment.OutgoingBytes
Amazon CloudWatch メトリックスをモニタリングすることで、メディアプレーヤーが消費するデータの量をモニタリングできます。CloudWatch を使用して Kinesis Video Streams をモニタリングする方法については、「Monitoring Kinesis Video Streams」を参照してください。料金情報については、Amazon Kinesis Video Streams の料金
HLSの詳細については、Apple 開発者サイト
重要
Kinesis Video Streams アーカイブメディア API を呼び出した後にエラーがスローされた場合、HTTP ステータスコードとレスポンス本文に加えて、次の情報が含まれます。
-
x-amz-ErrorType
HTTP ヘッダー — 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
-
要求されたフラグメントの時間範囲とタイムスタンプのソース。
このパラメーターは、
PlaybackMode
がON_DEMAND
またはLIVE_REPLAY
の場合に必要です。このパラメーターは、PlaybackMode がLIVE
の場合にはオプションになります。PlaybackMode
がLIVE
の場合、FragmentSelectorType
は設定できますが、TimestampRange
は設定しないでください。PlaybackMode
がON_DEMAND
またはLIVE_REPLAY
の場合、FragmentSelectorType
とTimestampRange
の両方を設定する必要があります。型: DASHFragmentSelector オブジェクト
必須: いいえ
- DisplayFragmentNumber
-
フラグメントは、セッション内のシーケンス番号に基づいてマニフェストファイルで識別されます。DisplayFragmentNumber が
ALWAYS
に設定されている場合、Kinesis Video Streams のフラグメント番号は、属性名「kvs:fn」でマニフェストファイルの各 S 要素に追加されます。これらのフラグメント番号は、ロギングや他の API (例:GetMedia
、GetMediaForFragmentList
) で使用できます。これらのカスタム属性を活用するには、カスタム MPEG-DASH メディアプレーヤーが必要です。デフォルト値は
NEVER
です。タイプ: 文字列
有効な値:
ALWAYS | NEVER
必須: いいえ
- DisplayFragmentTimestamp
-
MPEG-DASH 仕様に従って、マニフェストファイル内のフラグメントのウォールクロック時刻は、マニフェスト自体の属性を使用して派生できます。ただし、通常、MPEG-DASH 互換メディアプレーヤーは、メディアタイムラインのギャップを適切に処理しません。Kinesis Video Streams は、マニフェストファイルのメディアタイムラインを調整して、不連続があるメディアを再生可能にします。 したがって、マニフェストファイルから得られるウォールクロック時刻が不正確になる可能性があります。DisplayFragmentTimestamp が
ALWAYS
に設定されている場合、正確なフラグメントタイムスタンプが属性名「kvs:ts」でマニフェストファイルの各 S 要素に追加されます。このカスタム属性を活用するには、カスタム MPEG-DASH メディアプレーヤーが必要です。デフォルト値は
NEVER
です。DASHFragmentSelector がSERVER_TIMESTAMP
の場合、タイムスタンプはサーバーの開始タイムスタンプになります。同様に、DASHFragmentSelector がPRODUCER_TIMESTAMP
の場合、タイムスタンプはプロデューサーの開始タイムスタンプになります。タイプ: 文字列
有効な値:
ALWAYS | NEVER
必須: いいえ
- Expires
-
要求されたセッションの有効期限が切れるまでの時間(秒)。この値は 300 (5 分) から 43200 (12 時間) の間です。
セッションの有効期限が切れると、そのセッションに対して
GetDashManifest
、GetMP4InitFragment
、またはGetMP4MediaFragment
への新しい呼び出しを行うことはできません。デフォルトは300(5分)です。
型: 整数
値の範囲: 最小値 は 300 です。最大値は 43200 です。
必須: いいえ
- MaxManifestFragmentResults
-
MPEG-DASH マニフェストで返されるフラグメントの最大数。
PlaybackMode
がLIVE
の場合、最新のフラグメントがこの値まで返されます。PlaybackMode
がON_DEMAND
の場合、この最大数まで、最も古いフラグメントが返されます。ライブ MPEG-DASH マニフェストで利用可能なフラグメントの数が多い場合、ビデオプレーヤーは再生を開始する前にコンテンツをバッファリングすることがよくあります。バッファサイズを大きくすると再生レイテンシーが増加しますが、再生中にバッファリングが発生する可能性は低くなります。ライブ MPEG-DASH マニフェストには、最低 3 個のフラグメントと最大 10 個のフラグメントを持つことをお勧めします。
デフォルトでは、
PlaybackMode
がLIVE
またはLIVE_REPLAY
の場合は 5 個のフラグメント、PlaybackMode
がON_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 マニフェスト URL を取得するストリームの Amazon リソースネーム (ARN)。
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"
}
レスポンス要素
アクションが成功すると、サービスは HTTP 200 レスポンスを返します。
サービスから以下のデータが 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
は、データを保持しない (つまり、 が 0DataRetentionInHours
である) ストリームに対してリクエストされました。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
以下の資料も参照してください。
言語固有の AWS SDKs のいずれかでこの API を使用する方法の詳細については、以下を参照してください。