Kinesis Video Streams データモデル - Amazon Kinesis Video Streams

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

Kinesis Video Streams データモデル

Kinesis Video Streams へのアップロード および パーサーライブラリを使用してカメラからの出力をモニタリングする は、動画データに伴う情報の埋め込みをサポートする形式で動画データを送受信します。この形式は Matroska (MKV) 仕様に基づいています。

MKV 形式は、メディアデータのオープン仕様です。Amazon Kinesis Video Streams デベロッパーガイドのすべてのライブラリとコード例は、 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 ミリ秒です。0 を指定すると、デフォルト値の 1 ミリ秒も割り当てられます。この値は 100 ナノ秒~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 コーデックでエンコードする必要がありますが、Kinesis Video Streams は任意の形式で時系列化されたデータストリームを受信できます。