翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Kinesis Video Streams へのアップロード および パーサーライブラリを使用してカメラからの出力を監視する は、動画データに伴う情報の埋め込みをサポートする形式で動画データを送受信します。この形式は Matroska (MKV) 仕様に基づいています。
MKV 形式
Kinesis Video Streams へのアップロード は StreamDefinition
および Frame
タイプを使用して、MKV ストリームヘッダー、フレームヘッダー、フレームデータを生成します。
MKV 仕様の詳細については「Matroska Specification
以下のセクションでは、C++ によって作成された MKV 形式データのコンポーネントについて説明します。
ストリームヘッダー要素
StreamDefinition
では次の MKV ヘッダー要素が使用されます (StreamDefinition.h
で定義)。
要素 | 説明 | 一般的な値 |
---|---|---|
stream_name | Kinesis のビデオストリームの名前。 | my-stream |
retention_period | ストリームデータが Kinesis Video Streams によって保持される時間単位の期間。データを保持しないストリーム0 には を指定します。 |
24 |
[タグ] | ユーザーデータのキーと値のコレクション。このデータは AWS Management Console に表示され、クライアントアプリケーションにより読み取ることでストリームに関する情報をフィルタリングまたは取得できます。 | |
kms_key_id | 存在する場合、ユーザー定義 AWS KMS キーを使用してストリーム上のデータを暗号化します。存在しない場合、データは Kinesis が提供するキー () によって暗号化されますaws/kinesisvideo 。 |
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 がデータを受信した際に確認 (ACK) が送信されます。ACK は KinesisVideoStreamFragmentAck または KinesisVideoStreamParseFragmentAck コールバックを用いて受信できます。 |
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 FPS で動作する 720p の解像度のビデオストリームでは、平均 5 Mbps の帯域幅を期待できます。 | 5 |
buffer_duration | コンテンツがプロデューサー上でバッファされる時間。ネットワークレイテンシーが低い場合は、この値を減らすことができます。ネットワークレイテンシーが高い場合、この値を大きくすると、割り当てがフレームをより小さいバッファに入れることに失敗したため、送信前にフレームがドロップされるのを防ぎます。 | |
replay_duration | 接続が失われた場合にビデオデータストリームが「巻き戻し」される時間。この値は、接続損失によるフレームの損失が懸念されない場合、ゼロになることがあります。消費側アプリケーションが冗長フレームを削除できる場合は、値を増やすことができます。この値はバッファ期間より短くする必要があります。そうでない場合はバッファ期間が使用されます。 | |
connection_staleness | データが受信されない場合に接続を維持する期間。 | |
codec_id | コンテンツで使用されるコーデック。詳細情報については Matroska 仕様の「CodecID |
V_MPEG2 |
track_name | ユーザー定義のトラック名。 | my_track |
codecPrivateData | 多くのダウンストリームコンシューマーにおいて必要となる、フレームデータのデコードのためにエンコーダーが提供するデータ (ピクセル単位でのフレーム幅および高さなど)。C++ プロデューサーライブラリでは、 のgMkvTrackVideoBits 配列にフレームのピクセル幅と高さMkvStatics.cpp が含まれます。 |
|
codecPrivateDataSize | codecPrivateData パラメータのデータのサイズ。 |
|
track_type | ストリームのトラックのタイプ。 | MKV_TRACK_INFO_TYPE_AUDIO または MKV_TRACK_INFO_TYPE_VIDEO |
segment_uuid | ユーザー定義のセグメント uuid (16 バイト)。 | |
default_track_id | トラックの、一意のゼロ以外の数。 | 1 |
トラックデータのストリーミング
StreamDefinition
では次の MKV トラック要素が使用されます (StreamDefinition.h
で定義)。
要素 | 説明 | 一般的な値 |
---|---|---|
track_name | ユーザー定義のトラック名。たとえば、オーディオトラック用の「audio」。 | audio |
codec_id | トラック用のコーデック ID。たとえば、オーディオトラック用の「A_AAC」。 | A_AAC |
cpd | フレームデータのデコードのためにエンコーダーが提供するデータ。このデータには、フレームの幅と高さ (ピクセル単位) を含めることができます。この情報は多くのダウンストリームコンシューマーで必要となります。C++ プロデューサーライブラリでは、MkvStatics.cpp の gMkvTrackVideoBits 配列にフレームのピクセル幅と高さが含まれています。 MkvStatics.cpp | |
cpd_size | codecPrivateData パラメータのデータサイズ。 | |
track_type | トラックのタイプ。たとえば、オーディオ用の MKV_TRACK_INFO_TYPE_AUDIO の列挙値を使用できます。 | MKV_TRACK_INFO_TYPE_AUDIO |
フレームヘッダー要素
Frame
では次の MKV ヘッダー要素が使用されます (mkvgen/Include.h
の KinesisVideoPic
パッケージで定義)。
-
Frame Index: 一定間隔で増加する値。
-
Flags: フレームのタイプ。有効な値には次のようなものがあります。
-
FRAME_FLAGS_NONE
-
FRAME_FLAG_KEY_FRAME
:key_frame_fragmentation
がストリーム上で設定されている場合、キーフレームは新たなフラグメントを開始します。 -
FRAME_FLAG_DISCARDABLE_FRAME
: デコーダーに対し、デコーディングが遅い場合はこのフレームを破棄できることを通知します。 -
FRAME_FLAG_INVISIBLE_FRAME
: このブロックの時間は 0 です。
-
-
Decoding Timestamp: このフレームがデコードされた時刻のタイムスタンプ。以前のフレームがデコードのためにこのフレームに依存している場合、このタイムスタンプは以前のフレームよりも前になる可能性があります。この値はフラグメントの開始の相対値です。
-
プレゼンテーションタイムスタンプ: このフレームが表示されるときのタイムスタンプ。この値はフラグメントの開始の相対値です。
-
Duration: フレームの再生時間。
-
Size: フレームデータのサイズ (バイト単位)
MKV フレームデータ
frame.frameData
内のデータには、使用されるエンコーディングスキーマに応じ、フレームのメディアデータのみが含まれている場合、あるいはさらにネスト化されたヘッダー情報が含まれている場合があります。に表示するには AWS Management Console、データを H.264