本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
亚马逊 S3 交付入门
当前,客户运行和管理自己的图像转码管道,以创建用于各种目的的图像,例如清理、图像预览、在图像上运行 ML 模型等。Kinesis Video Streams 提供了对图像进行转码和传送的功能。Kinesis Video Streams 将根据标签自动实时从视频数据中提取图像,并将图像传送到客户指定的 S3 存储桶。
UpdateImageGenerationConfiguration
要设置 Kinesis 视频流以允许向 Amazon S3 生成图像,请执行以下操作:
-
创建一个S3 存储桶用于基于使用新 API 在 SDK 中添加的标签生成图像。请注意S3 网址,这是下一步更新流的图像生成配置时所必需的。
-
创建一个名为的 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 } }
你可以使用Amazon 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 标签
您可以使用 Kinesis Video Streams Producer SDK 通过在 SDK 中公开 API 操作来标记感兴趣的特定片段。有关标签的示例,请参见这段代码
与 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
使用 Producer SDK 添加元数据标签PutEventMetaData
这个PutEventMetaData
函数追加与事件关联的 MKV 文件。PutEventMetaData
需要两个参数。第一个参数是一个事件,其值来自STREAM_EVENT_TYPE
枚举。第二个参数,pStreamEventMetadata
Limits
下表列出了与元数据标签相关的限制。如果元数据标签限制是可调整的,您可以通过您的客户经理申请增加。
限制 | 最大值 | 可调整 |
---|---|---|
图像前缀长度 |
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
, }
S3 对象路径(图片)
以下列表显示了对象路径的正确格式并描述了路径中的每个元素。
格式:
ImagePrefix
_账户 ID
_StreamName
_ImageTimecode
_随机 ID
。文件扩展名
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 前缀放置请求限制
Amazon S3 前缀的起始限制为每秒 3,500 个 PUT 请求,随着时间的推移,唯一前缀的 PUT 限制将逐渐增加。避免使用日期和时间作为 Amazon S3 前缀。时间编码的数据一次只能影响一个前缀,并且还会定期更改,从而使之前的前缀扩展无效。为了实现更快、一致的 Amazon S3 扩展,我们建议在 Amazon S3 目标 URI 中添加一个随机前缀,例如十六进制代码或 UUID。例如,十六进制代码前缀自然会将您的请求随机拆分为 16 个不同的前缀(每个唯一十六进制字符的前缀),这将允许在 Amazon S3 自动扩展后每秒 56,000 个 PUT 请求。