本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從影片串流擷取影像
您可以使用 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 》中的 。 Amazon Kinesis Video Streams
生產者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 字首以每秒 3,500 個PUT請求PUT的限制開始,並會隨著時間逐漸增加唯一字首。避免使用日期和時間做為 Amazon S3 字首。時間編碼資料一次會影響一個字首,也會定期變更,使先前的字首擴展失效。若要啟用更快速、一致的 Amazon S3 擴展,我們建議新增隨機字首,例如十六進位碼或 UUID Amazon S3 目的地 URI。例如,十六進位碼字首會自然地將您的請求隨機分割為 16 個不同的字首 (每個唯一的十六進位字元的字首),這在 Amazon S3 自動擴展之後,每秒允許 56,000 個PUT請求。