開始使用亞馬遜 S3 交付 - Amazon Kinesis Video Streams

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

開始使用亞馬遜 S3 交付

目前,客戶會執行並管理自己的影像轉碼管道,以建立用於各種用途的映像,例如清洗、影像預覽、在映像上執行 ML 模型等。Kinesis 視訊串流提供轉碼和交付影像的功能。Kinesis Video Streams 會根據標籤即時從影片資料中自動擷取影像,並將映像傳送至客戶指定的 S3 儲存貯體。

UpdateImageGenerationConfiguration

若要設定 Kinesis 影片串流,以便向 Amazon S3 產生影像:
  1. 創建一個儲存貯體根據使用新 API 在 SDK 中添加的標籤生成圖像。請注意S3 類型更新串流的映像產生組態時,下一個步驟是必要的。

  2. 建立名為的 JSON 檔案update-image-generation-input.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 } }

您可以使用AWS CLI以呼叫UpdateImageGenerationConfiguration用於新增先前建立的 Amazon S3 ARN 的 API 操作,並將狀態變更為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 分鐘才能啟動映像產生工作流程。調用之前至少等待 1 分鐘PutMedia在更新調用之後。

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 亞馬遜 Kinesis 視頻流開發人員指南。

製作人 MKV 標籤

您可以透過在 SDK 中公開 API 作業,使用 Kinesis 視訊串流製作工具開發套件來標記感興趣的特定片段。如需標籤範例,請參閱這段代碼。調用此 API 時,SDK 將添加一組預定義的 MKV 標籤以及片段數據。Kinesis 視訊串流會辨識這些特殊的 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 文件。PutEventMetaData需要兩個參數。第一個參數是一個事件,其值來自STREAM_EVENT_TYPE枚舉。第二個參數,pStreamEventMetadata,是選用的,可用來包含其他中繼資料做為鍵值配對。可以新增的中繼資料的五個索引鍵值配對有限制。

限制

下表列出與中繼資料標籤相關聯的限制。如果可調整中繼資料標籤限制,您可以透過帳戶管理員要求提高。

限制 最大值 可調整

影像字首長度

256

可選中繼資料金鑰長

128

可選中繼資料值長度

256

可選中繼資料的最大數目

10

S3 物件中繼資料

根據預設,Kinesis 影片串流會設定片段編號,製片人,以及伺服器時戳以 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, }

S3 物件路徑 (影像)

下列清單顯示物件路徑的正確格式,並說明路徑中的每個元素。

格式:

ImagePrefix_帳號 ID_StreamName_ImageTimecode_隨機中文件擴展名

1.ImagePrefix -的價值AWS_KINESISVIDEO_IMAGE_PREFIX

2.AccountID -用來建立串流的帳戶 ID。

3.StreamName -產生影像的串流名稱。

4.ImageTimecode -產生影像之片段中的 Epoch 時間碼。

5.RandomID -隨機指南。

6.file-extension -根據要求的圖像格式提供 JPG 或 PNG 格式。

亞馬遜 S3 URI 建議,以防止節流

如果您將數千個映像寫入 Amazon S3,則存在節流的風險。如需詳細資訊,請參閱S3 前綴放置請求限制

Amazon S3 前綴以每秒 3,500 個 PUT 請求的 PUT 限制開始,並會隨著時間逐漸增加唯一前綴。避免使用日期和時間作為 Amazon S3 前綴。時間編碼的資料將一次影響一個前綴,並且也會定期更改,使之前的前綴縮放無效。為了實現更快、一致的 Amazon S3 擴展,我們建議在 Amazon S3 目的地 URI 新增一個隨機前綴,例如十六進位代碼或 UUID。例如,十六進位程式碼前置字元會自然地將您的請求隨機分割為 16 個不同的前置字元 (每個唯一十六進位字元的前置字元),在 Amazon S3 自動調整規模後,每秒允許 56,000 個 PUT 請求。