翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
GetHLSStreamingSessionURL
ストリームのHTTPライブストリーミング (HLS) URL を取得します。その後、ブラウザまたはメディアプレイヤーURLで を開いて、ストリームの内容を表示できます。
パラメータStreamName
と StreamARN
パラメータはどちらもオプションですが、このAPIオペレーションを呼び出すStreamARN
ときは StreamName
または を指定する必要があります。
Amazon Kinesis ビデオストリームには、 を介してデータを提供するための以下の要件がありますHLS。
-
データの保持期間が 0 より大きい。
-
各フラグメントのビデオトラックには、H.264 形式または H.265 形式 (MPEG-4 仕様 ISO/IEC 14496-15
AVC) HEVCの高度なビデオコーディング () のコーデックプライベートデータが含まれている必要があります。ストリームデータを特定の形式に適応させる方法については、NAL「適応フラグ」を参照してください。 -
各フラグメントのオーディオトラック (存在する場合) には、コーデックのプライベートデータが ( AAC仕様 ISO/IEC 13818-7)
のAAC形式で含まれている必要があります。
Kinesis Video Streams HLSセッションには、フラグメント化された MPEG-4 形式 (fMP4 または とも呼ばれますCMAF) または MPEG-2 形式 (HLS仕様でサポートされている TS チャンクとも呼ばれます) のフラグメントが含まれています。フラグメントタイプの詳細については、HLS「 HLS仕様
次の手順は、Kinesis Video Streams HLSで を使用する方法を示しています。
-
を呼び出し
GetDataEndpoint
APIてエンドポイントを取得します。次に、--endpoint-url parameter を使用してGetHLSStreamingSessionURL
リクエストをこのエンドポイントに送信します。 -
HLS URL を使用して を取得します
GetHLSStreamingSessionURL
。Kinesis Video Streams は、 HLS プロトコルを使用してHLSストリーム内のコンテンツにアクセスするために使用するストリーミングセッションを作成します。 は、セッションのHLSマスタープレイリスト URL ( によるストリーミングに必要なルートリソース) に対して認証された (暗号化されたセッショントークンを含む)GetHLSStreamingSessionURL
を返しますHLS。注記
許可されていないエンティティがアクセスできる場所に、このトークンを共有したり保存したりしないでください。トークンがストリームのコンテンツへのアクセスを提供します。認証情報で使用する AWS のと同じ方法でトークンを保護します。
プレイリストを通じて利用できるメディアは、要求されたストリーム、時間範囲、および形式のみで構成されます。他のメディアデータ(リクエストされた画面外のフレーム、代替ビットレートなど)は利用できません。
-
HLS マスタープレイリストの URL (暗号化されたセッショントークンを含む) を、HLSプロトコルをサポートするメディアプレーヤーに提供します。Kinesis Video Streams は、HLSメディアプレイリスト、初期化フラグメント、およびメディアフラグメントをマスタープレイリスト から利用できるようにしますURL。初期化フラグメントには、ストリームのコーデックプライベートデータ、およびビデオまたはオーディオデコーダーとレンダラーのセットアップに必要なその他のデータが含まれています。 メディアフラグメントには、H.264 でエンコードされたビデオフレームまたは AACでエンコードされたオーディオサンプルが含まれています。
-
メディアプレイヤーは認証された を受け取りURL、ストリームメタデータとメディアデータを正常にリクエストします。メディアプレーヤーがデータを要求すると、次のアクションが呼び出されます。
-
G etHLSMasterプレイリスト: マスタープレイリストを取得します。HLSマスタープレイリストには、各トラックURLの
GetHLSMediaPlaylist
アクション用の と、推定ビットレートや解像度などのメディアプレーヤー用の追加のメタデータが含まれます。 -
G etHLSMediaプレイリスト: HLSメディアプレイリストを取得します。これには、
GetMP4InitFragment
アクションを使用してMP4初期化フラグメントURLにアクセスし、GetMP4MediaFragment
アクションを使用してMP4メディアフラグメントにアクセスURLsするための が含まれます。HLS メディアプレイリストには、PlaybackMode
がLIVE
か かなど、プレイヤーが再生する必要があるストリームに関するメタデータも含まれていますON_DEMAND
。HLS メディアプレイリストは通常、 がPlaybackType
のセッションでは静的ですON_DEMAND
。HLS メディアプレイリストは、 が のセッションの新しいフラグメントで継続的に更新されますPlaybackType
LIVE
。ビデオトラックとオーディオトラック (該当する場合) には、特定のトラックURLsのHLSメディアを含む個別のMP4メディアプレイリストがあります。 -
Get MP4InitFragment: MP4初期化フラグメントを取得します。通常、メディアプレーヤーがメディアフラグメントをロードする前に、初期化フラグメントをロードします。このフラグメントには、
fytp
「」と「」のmoov
MP4原子と、メディアプレーヤーデコーダーの初期化に必要な子原子が含まれています。初期化フラグメントは、Kinesis ビデオストリームのフラグメントには対応していません。これには、メディアプレーヤーがメディアフレームをデコードするために必要な、ストリームと各トラックのコーデックプライベートデータだけが含まれます。
-
を取得するMP4MediaFragment: MP4メディアフラグメントを取得します。これらのフラグメントには、エンコードされたフラグメントのメディアフレーム
moof
とそのタイムスタンプを含む「」と「」のmdat
MP4原子とその子原子が含まれています。注記
各フラグメントに含まれるコーデックプライベートデータ (CPD) には、フラグメントを適切にデコードするために必要なフレームレート、解像度、エンコーディングプロファイルなどのコーデック固有の初期化情報が含まれています。TS と の両方でMP4、ストリーミングセッション中にCPD変更がサポートされます。したがって、セッション内のフラグメントは、再生を中断CPDすることなく、 で異なる情報を持つことができます。ストリーミングセッションごとに許可されるCPD変更は 500 件のみです。
重要
トラックの変更はサポートされていません。トラックは、クエリされたメディア全体で一貫性を維持する必要があります。ストリーム内のフラグメントがビデオのみからオーディオとビデオの両方に変わった場合、またはAACオーディオトラックが A-Law オーディオトラックに変更された場合、ストリーミングは失敗します。
このアクションで取得されたデータは請求対象です。詳細については、「 料金表
」を参照してください。 -
G etTSFragment: ストリーム内のすべてのトラックの初期化データとメディアデータの両方を含む MPEGTS フラグメントを取得します。
注記
ContainerFormat
が の場合MPEG_TS
、ストリームメディアを取得GetMP4MediaFragment
するためにGetMP4InitFragment
および の代わりにAPI使用されます。このアクションで取得されたデータは請求対象です。詳細については、「Amazon Kinesis Video Streams の料金表
」を参照してください。
-
ストリーミングセッションをプレイヤー間で共有URLしないでください。複数のメディアプレーヤーがセッションを共有している場合、サービスはセッションをスロットリングする場合があります。接続制限については、「Kinesis Video Streams のクォータ」を参照してください。
GetMP4MediaFragment.OutgoingBytes
Amazon CloudWatch メトリクスをモニタリングすることで、メディアプレーヤーが消費するデータ量をモニタリングできます。を使用して Kinesis Video Streams をモニタリング CloudWatch する方法については、「Monitoring Kinesis Video Streams」を参照してください。料金情報については、Amazon Kinesis Video Streams
「 ドキュメントガイド」の「動画再生の例: AWS CLI を使用してHLSストリーミングセッションを取得する URL」および「」を参照してください例: HTMLと HLSで を使用する JavaScript。
の詳細についてはHLS、Apple デベロッパーサイトの
重要
Kinesis Video Streams アーカイブメディア を呼び出した後にエラーがスローされた場合API、HTTPステータスコードとレスポンス本文に加えて、次の情報が含まれます。
-
x-amz-ErrorType
HTTP header – HTTPステータスコードが提供するものに加えて、より具体的なエラータイプが含まれます。 -
x-amz-RequestId
HTTP ヘッダー — 問題を に報告したい場合 AWS、リクエスト ID が与えられていれば、サポートチームが問題をより適切に診断できます。
HTTP ステータスコードと ErrorType ヘッダーの両方を使用して、エラーが再試行可能かどうか、どのような条件下で再試行できるかをプログラムで決定したり、クライアントプログラマーが再試行を正常に行うためにどのようなアクションを実行する必要があるかに関する情報を提供したりできます。
詳細については、このトピックの下部にある[Errors] (エラー) セクションおよび「Common Errors」を参照してください。
リクエストの構文
POST /getHLSStreamingSessionURL HTTP/1.1
Content-type: application/json
{
"ContainerFormat": "string
",
"DiscontinuityMode": "string
",
"DisplayFragmentTimestamp": "string
",
"Expires": number
,
"HLSFragmentSelector": {
"FragmentSelectorType": "string
",
"TimestampRange": {
"EndTimestamp": number
,
"StartTimestamp": number
}
},
"MaxMediaPlaylistFragmentResults": number
,
"PlaybackMode": "string
",
"StreamARN": "string
",
"StreamName": "string
"
}
URI リクエストパラメータ
リクエストはURIパラメータを使用しません。
リクエスト本文
リクエストは、 JSON形式の次のデータを受け入れます。
- ContainerFormat
-
メディアのパッケージ化に使用するフォーマットを指定します。
FRAGMENTED_MP4
コンテナ形式を指定すると、メディアがフラグメント (f MP4 MP4 または CMAF) にパッケージ化されます。これは、パッケージのオーバーヘッドが最小限なので、推奨されるパッケージングです。別のコンテナ形式オプションはMPEG_TS
です。HLS は、リリースされてから MPEG TS チャンクをサポートしており、古いHLSプレイヤーでサポートされている唯一のパッケージである場合があります。MPEG TS には通常、5~25% のパッケージングオーバーヘッドがあります。つまりMPEG、TS は通常、f よりも 5~25% 多くの帯域幅とコストを必要としますMP4。デフォルト:
FRAGMENTED_MP4
。型: 文字列
有効な値:
FRAGMENTED_MP4 | MPEG_TS
必須:いいえ
- DiscontinuityMode
-
フラグメント間の不連続性を示すフラグをメディアプレイリストに追加するタイミングを指定します。
メディアプレーヤーは通常、各フラグメントのタイムスタンプに基づいて、再生するメディアコンテンツのタイムラインを作成します。これは、フラグメント間でオーバーラップやギャップがある場合(一般に、HLSFragmentSelector が
SERVER_TIMESTAMP
に設定されている)、メディアプレーヤーのタイムラインでも一部の位置でフラグメント間に小さなギャップがあり、他の位置でフレームが上書きされることを意味します。メディアプレーヤーでタイムラインにギャップがあると、再生が停止したり、オーバーラップによって再生が不安定になる場合があります。フラグメント間に不連続フラグがある場合、メディアプレーヤーはタイムラインをリセットし、前のフラグメントの直後に次のフラグメントを再生します。次のモードがサポートされています。
-
ALWAYS
: HLSメディアプレイリスト内のすべてのフラグメントの間に不連続マーカーが配置されます。フラグメントのタイムスタンプが正確でない場合は、ALWAYS
の値を使用することをお勧めします。 -
NEVER
: 不連続マーカーはどこにでも配置されません。メディアプレーヤーのタイムラインがプロデューサーのタイムスタンプに最適にマップされるように、NEVER
の値を使用することをお勧めします。 -
ON_DISCONTINUITY
:不連続マーカーは、50 ミリ秒を超えるギャップまたはオーバーラップを持つフラグメントの間に配置されます。ほとんどの再生シナリオでは、メディアタイムラインに重大な問題(フラグメントの欠落など)がある場合にのみメディアプレーヤーのタイムラインがリセットされるように、ON_DISCONTINUITY
の値を使用することをお勧めします。
デフォルトでは、HLSFragmentSelector が
SERVER_TIMESTAMP
に設定されている場合はALWAYS
、PRODUCER_TIMESTAMP
に設定されている場合はNEVER
です。型: 文字列
有効な値:
ALWAYS | NEVER | ON_DISCONTINUITY
必須:いいえ
-
- DisplayFragmentTimestamp
-
フラグメント開始タイムスタンプをHLSメディアプレイリストに含めるタイミングを指定します。通常、メディアプレーヤーは、再生セッションの最初のフラグメントの開始に対して相対的な時間として再生ヘッドの位置を報告します。ただし、開始タイムスタンプがHLSメディアプレイリストに含まれている場合、一部のメディアプレイヤーはフラグメントタイムスタンプに基づいて現在のプレイヘッドを絶対時間として報告することがあります。これは、閲覧者にメディアのウォールクロック時刻を表示する再生エクスペリエンスを作成するのに便利です。
デフォルト:
NEVER
。HLSFragmentSelector がSERVER_TIMESTAMP
の場合、タイムスタンプはサーバーの開始タイムスタンプになります。同様に、HLSFragmentSelector がPRODUCER_TIMESTAMP
の場合、タイムスタンプはプロデューサーの開始タイムスタンプになります。型: 文字列
有効な値:
ALWAYS | NEVER
必須:いいえ
- Expires
-
要求されたセッションの有効期限が切れるまでの時間(秒)。この値は 300 (5 分) から 43200 (12 時間) の間です。
セッションの有効期限が切れると、そのセッションに対して
GetHLSMasterPlaylist
、GetHLSMediaPlaylist
、GetMP4InitFragment
、GetMP4MediaFragment
、またはGetTSFragment
への新しい呼び出しは行われません。デフォルトは300(5分)です。
型: 整数
値の範囲: 最小値 は 300 です。最大値は 43200 です。
必須:いいえ
- HLSFragmentSelector
-
要求されたフラグメントの時間範囲とタイムスタンプのソース。
このパラメーターは、
PlaybackMode
がON_DEMAND
またはLIVE_REPLAY
の場合に必要です。が の場合、このパラメータ PlaybackMode はオプションです
LIVE
。PlaybackMode
がLIVE
の場合、FragmentSelectorType
は設定できますが、TimestampRange
は設定しないでください。PlaybackMode
がON_DEMAND
またはLIVE_REPLAY
の場合、FragmentSelectorType
とTimestampRange
の両方を設定する必要があります。型: HLSFragmentSelector オブジェクト
必須:いいえ
- MaxMediaPlaylistFragmentResults
-
HLS メディアプレイリストで返されるフラグメントの最大数。
PlaybackMode
がLIVE
の場合、最新のフラグメントがこの値まで返されます。PlaybackMode
がON_DEMAND
の場合、この最大数まで、最も古いフラグメントが返されます。ライブHLSメディアプレイリストで使用できるフラグメントの数が多い場合、ビデオプレーヤーは再生を開始する前にコンテンツをバッファリングすることがよくあります。バッファサイズを大きくすると再生レイテンシーが増加しますが、再生中にバッファリングが発生する可能性は低くなります。ライブHLSメディアプレイリストには、最低 3 つのフラグメントと最大 10 のフラグメントを含めることをお勧めします。
デフォルトでは、
PlaybackMode
がLIVE
またはLIVE_REPLAY
の場合は 5 個のフラグメント、PlaybackMode
がON_DEMAND
の場合は 1,000 個のフラグメントです。5,000 フラグメントの最大値は、1 秒のフラグメントを含むストリームでは 80 分を超える動画に対応し、10 秒のフラグメント含むストリームでは 13 時間を超える動画に相当します。
型: 長整数
有効範囲: 最小値は 1 です。最大値は 5,000 です。
必須:いいえ
- PlaybackMode
-
ライブ、ライブリプレイ、またはアーカイブ済のオンデマンドデータを取得するかどうか。
3 種類のセッションの機能は次のとおりです。
-
LIVE
: このタイプのセッションでは、HLSメディアプレイリストは、最新のフラグメントが利用可能になると継続的に更新されます。メディアプレーヤーは 1 秒間隔で新しいプレイリストを取得することをお勧めします。このタイプのセッションがメディアプレーヤーで再生される場合、ユーザーインターフェイスには、通常「live (ライブ)」通知が表示されます。再生ウィンドウ内の位置を選択するためのスクラバーコントロールはありません。注記
LIVE
モードでは、フラグメント間にギャップがある場合 (つまり、フラグメントがない場合) でも、利用可能な最新のフラグメントがHLSメディアプレイリストに含まれます。このようなギャップにより、メディアプレーヤーが再生中に停止したり、途切れたりすることがあります。このモードでは、フラグメントがプレイリスト内の最新のフラグメントよりも古い場合、フラグメントはHLSメディアプレイリストに追加されません。後続のフラグメントがプレイリストに追加された後に欠落フラグメントが使用可能になっても、古いフラグメントは追加されず、ギャップは埋められません。 -
LIVE_REPLAY
: このタイプのセッションでは、HLSメディアプレイリストは、特定の開始時刻のフラグメントを含めることによって開始される点を除いて、LIVE
モードの更新方法と同様に更新されます。フラグメントは、取り込まれるときに追加されるのではなく、次のフラグメントの期間が経過すると追加されます。例えば、セッション内のフラグメントの長さが 2 秒の場合、2 秒ごとに新しいフラグメントがメディアプレイリストに追加されます。このモードは、イベントの検出で再生を開始し、セッションの作成時点でまだ取り込まれていないライブストリーミングメディアを継続できるようにする場合に便利です。また、ON_DEMAND
モードの 1,000 フラグメントの制限に制約されることなく、以前にアーカイブされたメディアをストリーミングする場合にも役立ちます。 -
ON_DEMAND
: このタイプのセッションの場合、HLSメディアプレイリストには、 で指定された数までのセッションのすべてのフラグメントが含まれますMaxMediaPlaylistFragmentResults
。プレイリストは、セッションごとに 1 回だけ取得する必要があります。このタイプのセッションがメディアプレーヤーで再生される場合、ユーザーインターフェイスには、通常再生ウィンドウ内の位置を選択するためのスクラバーコントロールが表示されます。
すべての再生モードで、
FragmentSelectorType
が でPRODUCER_TIMESTAMP
、開始タイムスタンプが同じフラグメントが複数ある場合、フラグメント番号が最も大きいフラグメント (つまり、最新のフラグメント) がHLSメディアプレイリストに含まれます。他のフラグメントは含まれません。タイムスタンプは異なるが、期間が重複しているフラグメントは、HLSメディアプレイリストに含まれます。これにより、メディアプレーヤーで予期しない動作が発生する場合があります。デフォルト:
LIVE
。型: 文字列
有効な値:
LIVE | LIVE_REPLAY | ON_DEMAND
必須:いいえ
-
- StreamARN
-
HLS マスタープレイリスト を取得するストリームの 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
-
HLS マスタープレイリスト を取得するストリームの名前URL。
StreamName
またはStreamARN
のパラメータを指定する必要があります。型: 文字列
長さの制限:最小長は 1 です。最大長は 256 です。
Pattern:
[a-zA-Z0-9_.-]+
必須:いいえ
レスポンスの構文
HTTP/1.1 200
Content-type: application/json
{
"HLSStreamingSessionURL": "string"
}
レスポンス要素
アクションが成功すると、サービスは 200 HTTP レスポンスを返します。
次のデータは、 サービスによって JSON 形式で返されます。
- HLSStreamingSessionURL
-
メディアプレイヤーがHLSマスタープレイリストを取得するために使用できる 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
以下の資料も参照してください。
言語固有の のいずれかAPIでこれを使用する方法の詳細については AWS SDKs、以下を参照してください。