本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從視頻流中提取圖像
您可以使用 Amazon Kinesis Video Streams,APIs並協SDKs助您從視訊串流擷取影像。您可以將這些影像用於增強的播放應用程式,例如縮圖或增強型拖曳,或用於機器學習管線。Kinesis Video Streams 透過擷取視訊中的中繼資料標籤或自動擷取影像API,提供隨選影像擷取。
如需使用 Kinesis Video Streams 受管理映像支援的相關資訊,請參閱:
隨選影像產生 (GetImages)-這API可讓客戶從儲存在 Kinesis Video Streams 中的視訊擷取單一或多個影像。
自動產生影像 (Amazon S3 交付)-將 Kinesis Video Streams 設定為根據上傳影片中的標籤即時從視訊資料擷取影像,並將映像傳送至客戶指定的 S3 儲存貯體。
自動產生影像 (Amazon S3 交付)
目前,客戶會執行並管理自己的影像轉碼管道,以建立用於各種用途的映像,例如清洗、影像預覽、在映像上執行 ML 模型等。Kinesis Video Streams 提供轉碼和交付影像的功能。Kinesis Video Streams 會根據標籤即時從影片資料中自動擷取影像,並將映像傳送至客戶指定的 S3 儲存貯體。
主題
UpdateImageGenerationConfiguration
若要設定 Kinesis 影片串流,以便將影像產生到 Amazon S3,請執行下列動作:
-
根據SDK使用新的中新增的標籤,建立 S3 儲存貯體以產生映像檔API。更新串流的映像產生組態時,請注意下一個步驟所需的 S3 URI。
-
創建一個名為 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 } }
您可以使用 AWS CLI 來叫用UpdateImageGenerationConfigurationAPI操作來新增先前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 分鐘才能啟動映像產生工作流程。請等待至少 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
此功能,請參閱 Amazon Kinesis Video Streams 開發人員指南DescribeImageGenerationConfiguration 中的。
生產者MKV標籤
您可以使用 Kinesis Video Streams 產生器SDK來標記感興趣的特定片段,方法是API在. SDK 有關標籤的示例,請參閱此代碼
與 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 Video Streams 會設定以 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
-產生影像之片段中的 Epoch 時間碼。
5. RandomID
-隨GUID機
6. file-extension
-JPG 或PNG根據要求的圖像格式。
Amazon S3 防止節流的URI建議
如果您將數千個映像寫入 Amazon S3,則存在節流的風險。如需詳細資訊,請參閱 S3 前置字元放置請求限制
Amazon S3 前綴的開頭PUT限制為每秒 3,500 個PUT請求,而且會隨著時間的推移逐漸增加唯一的前綴。避免使用日期和時間作為 Amazon S3 前綴。時間編碼的資料將一次影響一個前綴,並且也會定期更改,使之前的前綴縮放無效。為了實現更快、一致的 Amazon S3 擴展,我們建議您新增一個隨機前綴,例如十六進位代碼或 UUID Amazon S3 目的地URI。例如,十六進位程式碼前置詞會自然地將您的請求隨機分割為 16 個不同的前置字元 (每個唯一十六進位字元的前置詞),在 Amazon S3 自動調整大小之後,每秒允許 56,000 個PUT請求。