ビデオストリームから画像を抽出する - Amazon Kinesis Video Streams

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

ビデオストリームから画像を抽出する

Amazon Kinesis Video Streams と を使用してSDKs、ビデオストリームからイメージを抽出できます。 APIsこれらのイメージは、サムネイルやスクラブなどの拡張再生アプリケーションや、機械学習パイプラインでの使用に使用できます。Kinesis Video Streams は、 を介したオンデマンドイメージ抽出API、または取り込まれたビデオ内のメタデータタグからの自動イメージ抽出を提供します。

Kinesis Video Streams マネージドイメージサポートの使用については、以下を参照してください。

  • オンデマンドイメージ生成 (GetImages) - これによりAPI、Kinesis Video Streams に保存されているビデオから 1 つまたは複数のイメージを抽出できます。

  • 自動イメージ生成 (Amazon S3 配信) - アップロードされたビデオのタグに基づいてリアルタイムでビデオデータから画像を自動的に抽出し、お客様が指定した S3 バケットに画像を配信するように Kinesis Video Streams を設定します。

自動イメージ生成 (Amazon S3 配信)

現在、お客様は独自のイメージトランスコードパイプラインを実行および管理して、スクラブ、イメージプレビュー、イメージでの ML モデルの実行など、さまざまな目的でイメージを作成します。Kinesis Video Streams は、イメージをトランスコードして配信する機能を提供します。Kinesis Video Streams は、タグに基づいてリアルタイムで動画データから画像を自動的に抽出し、お客様が指定した S3 バケットに画像を配信します。

UpdateImageGenerationConfiguration

Amazon S3 へのイメージ生成を有効にするように Kinesis ビデオストリームを設定するには:
  1. 新しい SDKを使用して、 で追加されたタグに基づいて、イメージ生成用の S3 バケットを作成しますAPI。ストリームのイメージ生成設定を更新するときは、次のステップで必要な S3 URIに注意してください。

  2. 次のコンテンツを入力として update-image-generation-input.json というJSONファイルを作成します。

{ "StreamName": "TestStream", "ImageGenerationConfiguration": { "Status": "ENABLED", "DestinationConfig": { "DestinationRegion": "us-east-1", "Uri": "s3://bucket-name" }, "SamplingInterval": 200, "ImageSelectorType": "PRODUCER_TIMESTAMP", "Format": "JPEG", "FormatConfig": { "JPEGQuality": "80" }, "WidthPixels": 320, "HeightPixels": 240 } }

を使用して UpdateImageGenerationConfigurationAPIオペレーション AWS CLI を呼び出し、以前にARN作成した Amazon S3 を追加し、ステータスを に変更することができますENABLED

aws kinesisvideo update-image-generation-configuration \ --cli-input-json file://./update-image-generation-input.json \

リクエスト:

UpdateImageGenerationConfiguration HTTP/1.1 Method: 'POST' Path: '/updateImageGenerationConfiguration' Body: { StreamName: 'String', // Optional. Either stream name or arn should be passed StreamArn: 'String', // Optional. Either stream name or arn should be passed ImageGenerationConfiguration : { // required Status: 'Enum', // ENABLED | DISABLED, ImageSelectorType: 'Enum', // SERVER_TIMESTAMP | PRODUCER_TIMESTAMP.. DestinationConfig: { DestinationRegion: 'String', Uri: string, }, SamplingInterval: 'Number'// Format: 'Enum', // JPEG | PNG // Optional parameters FormatConfig: { 'String': 'String', }, WidthPixels: 'Number', // 1 - 3840 (4k). HeightPixels: 'Number' // 1 - 2160 (4k). } }

レスポンス:

HTTP/1.1 200 Content-type: application/json Body: { }
注記

イメージ生成設定を更新してからイメージ生成ワークフローを開始するには、少なくとも 1 分かかります。更新呼び出しPutMedia後、 を呼び出す前に少なくとも 1 分待ちます。

DescribeImageGenerationConfiguration

ストリームにすでに設定されているイメージ生成設定を表示するには、次のようにDescribeImageGenerationConfigurationリクエストを行います。

リクエスト:

DescribeImageGenerationConfiguration HTTP/1.1 Method: 'POST' Path: '/describeImageGenerationConfiguration' Body: { StreamName: 'String', // Optional. Either stream name or arn should be passed StreamArn: 'String', // Optional. Either stream name or arn should be passed }

レスポンス:

HTTP/1.1 200 Content-type: application/json Body: { ImageGenerationConfiguration : { Status: 'Enum', ImageSelectorType: 'Enum', // SERVER_TIMESTAMP | PRODUCER_TIMESTAMP DestinationConfig: { DestinationRegion: 'String' Uri: 'string', }, SamplingInterval: 'Number', Format: 'Enum', FormatConfig: { 'String': 'String', }, WidthPixels: 'Number', HeightPixels: 'Number' } }

DescribeImageGenerationConfiguration この機能の詳細については、DescribeImageGenerationConfiguration Amazon Kinesis Video Streams「」を参照してください。

プロデューサーMKVタグ

Kinesis Video Streams プロデューサーを使用するとSDK、 で APIオペレーションを公開することで、特定の対象フラグメントにタグを付けることができますSDK。タグの例については、このコード を参照してください。この を呼び出すとAPI、 SDKはフラグメントデータとともに事前定義されたMKVタグのセットを追加します。Kinesis Video Streams はこれらの特別なMKVタグを認識し、そのストリームのイメージ処理設定に基づいてイメージ生成ワークフローを開始します。

Amazon S3 イメージ生成タグとともに提供されるフラグメントメタデータは、Amazon S3 メタデータとして保存されます。

プロデューサーMKVタグの構文

|+ Tags | + Tag | // MANDATORY: Predefined MKV tag to trigger image generation for the fragment | + Simple | + Name: AWS_KINESISVIDEO_IMAGE_GENERATION | // OPTIONAL: S3 prefix which will be set as prefix for generated image. | + Simple | + Name: AWS_KINESISVIDEO_IMAGE_PREFIX | + String: image_prefix_in_s3 // 256 bytes max m | // OPTIONAL: Key value pairs that will be persisted as S3 Image object metadata. | + Simple | + Name: CUSTOM_KEY_1 // Max 128 bytes | + String:CUSTOM_VALUE_1 // Max 256 bytes | + Simple | + Name: CUSTOM_KEY_2 // Max 128 bytes | + String: CUSTOM_VALUE_2 // Max 256 bytes

SDK を使用してプロデューサーにメタデータタグを追加する PutEventMetaData

PutEventMetaData 関数は、イベントに関連付けられた MKV ファイルを追加します。 は 2 つのパラメータPutEventMetaDataを取ります。最初のパラメータは、値がSTREAM_EVENT_TYPE列挙型からのイベントです。2 番目のパラメータ はオプションでpStreamEventMetadata、キーと値のペアとして追加のメタデータを含めるために使用できます。追加できるメタデータのキーと値のペアは 5 つに制限されています。

制限

次の表に、メタデータタグに関連する制限を示します。メタデータタグの制限が調整可能な場合は、アカウントマネージャーを通じて引き上げをリクエストできます。

制限 最大値 調整可能

イメージプレフィックスの長さ

256

なし

オプションのメタデータキーの長さ

128

なし

オプションのメタデータ値の長さ

256

なし

オプションのメタデータの最大数

10

はい

S3 オブジェクトメタデータ

デフォルトでは、Kinesis Video Streams は Amazon S3 オブジェクトメタデータとして生成されたイメージのフラグメント番号 、プロデューサー 、およびサーバータイムスタンプを設定します。 Amazon S3 MKV タグで追加のフラグメントデータを指定すると、それらのタグも Amazon S3 オブジェクトメタデータに追加されます。次の例は、Amazon S3 オブジェクトメタデータの正しい構文を示しています。

{ // KVS S3 object metadata x-amz-meta-aws_kinesisvideo_fragment_number : 'string', x-amz-meta-aws_kinesisvideo_producer_timestamp: 'number', x-amz-meta-aws_kinesisvideo_server_timestamp: 'number', // Optional key value pair sent as part of the MKV tags custom_key_1: custom_value_1, custom_key_2: custom_value_2, }

Amazon S3 オブジェクトパス (イメージ)

次のリストは、オブジェクトパスの正しい形式と、パス内の各要素を示しています。

形式:

ImagePrefix_AccountID_StreamName_ImageTimecode_RandomID.file-extension

1。ImagePrefix- の値AWS_KINESISVIDEO_IMAGE_PREFIX

2.AccountID - ストリームが作成されるアカウント ID。

3.StreamName - イメージが生成されるストリームの名前。

4.ImageTimecode - イメージが生成されるフラグメント内のタイムコードをエポックします。

5。RandomID- ランダム GUID。

6。file-extension- JPG またはリクエストされたイメージ形式PNGに基づきます。

スロットリングから保護するための Amazon S3 のURI推奨事項

Amazon S3 に何千ものイメージを書き込むと、スロットリングのリスクがあります。詳細については、S3 プレフィックスの Put リクエストの制限」を参照してください。

Amazon S3 プレフィックスは 1 秒あたり 3,500 PUTリクエストPUTの制限で始まり、一意のプレフィックスでは時間の経過とともに徐々に増加します。Amazon S3 プレフィックスとして日付と時刻を使用しないでください。タイムコードされたデータは、一度に 1 つのプレフィックスに影響し、定期的に変更され、以前のプレフィックスのスケールアップが無効になります。より高速で一貫性のある Amazon S3 スケーリングを有効にするには、16 進数コードや UUID Amazon S3 送信先 などのランダムなプレフィックスを追加することをお勧めしますURI。例えば、16 進コードプレフィックスは、リクエストを 16 の異なるプレフィックス (一意の 16 進文字ごとのプレフィックス) にランダムに分割します。これにより、Amazon S3 が自動スケーリングされた後、1 秒あたり 56,000 PUTリクエストが許可されます。