翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Kinesis Video Streams データモデル
Kinesis Video Streams へのアップロード および パーサーライブラリを使用してカメラからの出力をモニタリングする は、動画データに伴う情報の埋め込みをサポートする形式で動画データを送受信します。この形式は Matroska (MKV) 仕様に基づいています。
MKV 形式
Kinesis Video Streams へのアップロード は、 StreamDefinition
および MKV Frame
タイプを使用して、ストリームヘッダー、フレームヘッダー、フレームデータを生成します。
MKV 仕様の詳細については、「Matroska 仕様
以下のセクションでは、 によって生成される MKV形式のデータのコンポーネントについて説明しますC++。
ストリームヘッダー要素
次のMKVヘッダー要素は ( でStreamDefinition
定義) によって使用されますStreamDefinition.h
。
要素 | 説明 | 一般的な値 |
---|---|---|
stream_name | Kinesis のビデオストリームの名前。 | my-stream |
retention_period | ストリームデータが Kinesis Video Streams によって保持される時間 単位の期間。データを保持しないストリーム0 には を指定します。 |
24 |
タグ | ユーザーデータのキーと値のコレクション。このデータは AWS Management Console に表示され、クライアントアプリケーションにより読み取ることでストリームに関する情報をフィルタリングまたは取得できます。 | |
kms_key_id | 存在する場合、ユーザー定義 AWS KMS キーを使用してストリーム上のデータを暗号化します。存在しない場合、データは Kinesis が提供するキー () によって暗号化されますaws/kinesis-video 。 |
01234567-89ab-cdef-0123-456789ab |
streaming_type | 現在、有効なストリーミングタイプは STREAMING_TYPE_REALTIME のみです。 |
STREAMING_TYPE_REALTIME |
content_type | ユーザー定義のコンテンツタイプ。動画データをストリーミングしてコンソールで再生する場合、コンテンツタイプは video/h264 である必要があります。 |
video/h264 |
max_latency | この値は現在使用されていないため、0 に設定する必要があります。 | 0 |
fragment_duration | フラグメントの継続時間 (推定)。この時間が最適化に使用されます。実際のフラグメント継続時間は、ストリーミングデータによって決定します。 | 2 |
timecode_scale | フレームタイムスタンプで使用されるスケールを示します。デフォルト値は 1 ミリ秒です。 詳細については、Matroska ドキュメントTimecodeScale |
|
key_frame_fragmentation | true の場合、ストリームはキーフレームが受信された場合に新たなクラスターを開始します。 |
true |
frame_timecodes | の場合true 、Kinesis Video Streams は受信したフレームのプレゼンテーションタイムスタンプ (pts) とデコードタイムスタンプ (dts) の値を使用します。の場合false 、Kinesis Video Streams は、システム生成の時間値でフレームを受信したときにフレームをスタンプします。 |
true |
absolute_fragment_time | true の場合、クラスタータイムコードは絶対時間 (プロデューサーのシステムクロックなど) を用いて解釈されます。false の場合、クラスタータイムコードはストリームの開始時刻の相対値として解釈されます。 |
true |
fragment_acks | の場合true 、Kinesis Video Streams がデータを受信すると確認応答 (ACKs) が送信されます。は、 KinesisVideoStreamFragmentAck または KinesisVideoStreamParseFragmentAck コールバックを使用して受信ACKsできます。 |
true |
restart_on_error | ストリームのエラーが発生した後、ストリームが送信を再開すべきかどうかを示します。 | true |
nal_adaptation_flags | NAL (Network Abstraction Layer) 適応またはコーデックプライベートデータがコンテンツに存在するかどうかを示します。有効なフラグには NAL_ADAPTATION_ANNEXB_NALS および NAL_ADAPTATION_ANNEXB_CPD_NALS が含まれます。 |
NAL_ADAPTATION_ANNEXB_NALS |
frame_rate | コンテンツの推定フレームレート。この値は最適化に使用され、実際のフレームレートは受信データのレートにより決定されます。0 を指定すると、デフォルトの 24 が割り当てられます。 |
24 |
avg_bandwidth_bps | コンテンツ帯域幅の Mbps 単位の推定値。この値は最適化に使用され、実際のレートは受信データの帯域幅により決定されます。例えば、25 で実行されている 720 p 解像度のビデオストリームの場合FPS、平均帯域幅は 5 Mbps と予想できます。 | 5 |
buffer_duration | コンテンツがプロデューサー上でバッファされる時間。ネットワークレイテンシーが低い場合、この値は減少する可能性があります。ネットワークレイテンシーが高い場合、この値を大きくすると、割り当てが小さいバッファにフレームを配置できないため、送信前にフレームがドロップされるのを防ぐことができます。 | |
replay_duration | 接続が失われた場合にビデオデータストリームが「巻き戻し」される時間。接続損失によるフレームの損失が問題でない場合は、この値はゼロになる可能性があります。消費するアプリケーションが冗長フレームを削除できる場合は、値を増やすことができます。この値はバッファ期間より短くする必要があります。そうでない場合はバッファ期間が使用されます。 | |
connection_staleness | データが受信されない場合に接続を維持する期間。 | |
codec_id | コンテンツで使用されるコーデック。詳細情報については Matroska 仕様の「CodecID |
V_MPEG2 |
track_name | ユーザー定義のトラック名。 | my_track |
codecPrivateData | 多くのダウンストリームコンシューマーにおいて必要となる、フレームデータのデコードのためにエンコーダーが提供するデータ (ピクセル単位でのフレーム幅および高さなど)。C++ プロデューサーライブラリ では、 のgMkvTrackVideoBits 配列にはフレームのピクセル幅と高さMkvStatics.cpp が含まれます。 |
|
codecPrivateDataサイズ | codecPrivateData パラメータのデータのサイズ。 |
|
track_type | ストリームのトラックのタイプ。 | MKV_TRACKINFO_TYPE_AUDIO または MKV_TRACK_INFOTYPE__VIDEO |
segment_uuid | ユーザー定義のセグメント uuid (16 バイト)。 | |
default_track_id | トラックの、一意のゼロ以外の数。 | 1 |
トラックデータのストリーミング
次のMKVトラック要素は ( でStreamDefinition
定義) によって使用されますStreamDefinition.h
。
要素 | 説明 | 一般的な値 |
---|---|---|
track_name | ユーザー定義のトラック名。たとえば、オーディオトラック用の「audio」。 | audio |
codec_id | トラック用のコーデック ID。例えば、オーディオトラックの「A_AAC」などです。 | A_AAC |
cpd | フレームデータのデコードのためにエンコーダーが提供するデータ。このデータには、フレームの幅と高さ (ピクセル単位) を含めることができます。この情報は多くのダウンストリームコンシューマーで必要となります。C++ プロデューサーライブラリ では、 MkvStatics.cpp の gMkvTrackVideoBits 配列にはフレームのピクセル幅と高さが含まれます。 | |
cpd_size | codecPrivateData パラメータ内のデータのサイズ。 | |
track_type | トラックのタイプ。例えば、音声には MKV_TRACK_INFOTYPE_AUDIO の列挙値を使用できます。 | MKV_TRACK_INFO_TYPE_AUDIO |
フレームヘッダー要素
次のMKVヘッダー要素は、 Frame
( KinesisVideoPic
パッケージで定義され、 で定義) によって使用されますmkvgen/Include.h
。
-
Frame Index: 一定間隔で増加する値。
-
Flags: フレームのタイプ。有効な値には次のようなものがあります。
-
FRAME_FLAGS_NONE
-
FRAME_FLAG_KEY_FRAME
:key_frame_fragmentation
がストリーム上で設定されている場合、キーフレームは新たなフラグメントを開始します。 -
FRAME_FLAG_DISCARDABLE_FRAME
: デコーダーに対し、デコーディングが遅い場合はこのフレームを破棄できることを通知します。 -
FRAME_FLAG_INVISIBLE_FRAME
: このブロックの時間は 0 です。
-
-
デコードタイムスタンプ: このフレームがデコードされた時刻のタイムスタンプ。以前のフレームがこのフレームにデコードに依存している場合、このタイムスタンプは以前のフレームよりも前になる可能性があります。この値はフラグメントの開始の相対値です。
-
プレゼンテーションタイムスタンプ: このフレームが表示されるときのタイムスタンプ。この値はフラグメントの開始の相対値です。
-
Duration: フレームの再生時間。
-
Size: フレームデータのサイズ (バイト単位)
MKV フレームデータ
frame.frameData
内のデータには、使用されるエンコーディングスキーマに応じ、フレームのメディアデータのみが含まれている場合、あるいはさらにネスト化されたヘッダー情報が含まれている場合があります。に表示するには AWS Management Console、データを H.264