As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Extraia imagens de streams de vídeo
Você pode usar o Amazon Kinesis APIs Video SDKs Streams para ajudá-lo a extrair imagens dos seus streams de vídeo. Você pode usar essas imagens para aplicativos de reprodução aprimorados, como miniaturas ou depuração aprimorada, ou para uso em pipelines de aprendizado de máquina. O Kinesis Video Streams oferece extração de imagens sob demanda API por meio de uma extração automática de imagens a partir de tags de metadados em um vídeo ingerido.
Para obter informações sobre como usar o suporte gerenciado do Kinesis Video Streams para imagens, consulte:
Geração de imagens sob demanda (GetImages) - Isso API permite que os clientes extraiam uma única imagem ou várias imagens do vídeo armazenado no Kinesis Video Streams.
Geração automatizada de imagens (entrega do Amazon S3)- Configure o Kinesis Video Streams para extrair automaticamente imagens dos dados de vídeo em tempo real com base nas tags de um vídeo enviado e entregar as imagens ao bucket S3 especificado pelo cliente.
Geração automatizada de imagens (entrega do Amazon S3)
Atualmente, os clientes executam e gerenciam seu próprio pipeline de transcodificação de imagens para criar imagens para várias finalidades, como depuração, visualização de imagens, execução de modelos de ML em imagens e muito mais. O Kinesis Video Streams oferece a capacidade de transcodificar e entregar as imagens. O Kinesis Video Streams extrairá automaticamente imagens dos dados de vídeo em tempo real com base em uma tag e entregará as imagens a um bucket S3 especificado pelo cliente.
Tópicos
UpdateImageGenerationConfiguration
Para configurar um stream de vídeo do Kinesis para permitir a geração de imagens para o Amazon S3:
-
Crie um bucket S3 para geração de imagens com base nas tags adicionadas SDK usando o novoAPI. Observe o S3 URI, que é necessário na próxima etapa, ao atualizar as configurações de geração de imagem para os fluxos.
-
Crie um JSON arquivo chamado update-image-generation-input.json com o conteúdo a seguir como entrada.
{ "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 } }
Você pode usar o AWS CLI para invocar a UpdateImageGenerationConfigurationAPIoperação para adicionar o Amazon ARN S3 criado anteriormente e alterar o status para. ENABLED
aws kinesisvideo update-image-generation-configuration \ --cli-input-json file://./update-image-generation-input.json \
Solicitação:
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). } }
Resposta:
HTTP/1.1 200 Content-type: application/json Body: { }
nota
É necessário pelo menos 1 minuto para iniciar o fluxo de trabalho de geração de imagem depois de atualizar a configuração de geração de imagem. Aguarde pelo menos 1 minuto antes de invocar PutMedia
após a chamada de atualização.
DescribeImageGenerationConfiguration
Para visualizar as configurações de geração de imagens que já estão definidas para um stream, os clientes podem fazer uma DescribeImageGenerationConfiguration
solicitação da seguinte maneira.
Solicitação:
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 }
Resposta:
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' } }
Para saber mais sobre o DescribeImageGenerationConfiguration
recurso, consulte DescribeImageGenerationConfiguration o Guia do desenvolvedor do Amazon Kinesis Video Streams.
MKVEtiquetas do produtor
Você pode usar o produtor do Kinesis Video SDK Streams para marcar fragmentos específicos de interesse API expondo uma operação no. SDK Para ver um exemplo de tag, consulte esse código
Todos os metadados de fragmentos fornecidos junto com as tags de geração de imagem do Amazon S3 serão salvos como metadados do Amazon S3.
Sintaxe para etiquetas de produtores 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
Adicione tags de metadados no produtor usando SDK PutEventMetaData
A PutEventMetaData
função anexa um MKV arquivo associado a um evento. PutEventMetaData
usa dois parâmetros. O primeiro parâmetro é um evento cujo valor vem do STREAM_EVENT_TYPE
enum. O segundo parâmetro, pStreamEventMetadata
Limites
A tabela a seguir lista as limitações associadas às tags de metadados. Se o limite da tag de metadados for ajustável, você poderá solicitar um aumento por meio do seu gerente de conta.
Limite | Valor máximo | Ajustável |
---|---|---|
Comprimento do prefixo da imagem |
256 |
não |
Tamanho opcional da chave de metadados |
128 |
não |
Tamanho opcional do valor dos metadados |
256 |
não |
Número máximo de metadados opcionais |
10 |
yes |
Metadados do objeto S3
Por padrão, o Kinesis Video Streams definirá o número do fragmento, o produtor e a data e hora do servidor da imagem gerada como metadados do objeto Amazon S3. Se algum dado de fragmento adicional for especificado nas MKV tags, essas tags também serão adicionadas aos metadados do objeto Amazon S3. O exemplo a seguir mostra a sintaxe correta para os metadados do objeto 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
, }
Caminho do objeto Amazon S3 (imagem)
A lista a seguir mostra o formato correto do caminho do objeto e descreve cada elemento dentro do caminho.
Formato:
ImagePrefix
_AccountID
_StreamName
_ImageTimecode
_RandomID
.file-extension
1. ImagePrefix
- Valor deAWS_KINESISVIDEO_IMAGE_PREFIX
.
2.AccountID
- ID da conta sob a qual o stream é criado.
3. StreamName
- Nome do fluxo para o qual a imagem é gerada.
4. ImageTimecode
- Timecode de época no fragmento no qual a imagem é gerada.
5. RandomID
- AleatórioGUID.
6. file-extension
- JPG ou PNG com base no formato de imagem solicitado.
URIRecomendações do Amazon S3 para proteção contra limitação
Se você gravar milhares de imagens no Amazon S3, há o risco de limitação. Para obter mais informações, consulte S3 Prefix Put Request Limits
Um prefixo do Amazon S3 começa com um PUT limite de 3.500 PUT solicitações por segundo e aumentará gradualmente com o tempo para prefixos exclusivos. Evite usar datas e horários como prefixos do Amazon S3. Os dados codificados por tempo afetarão um prefixo por vez e também mudarão regularmente, invalidando os aumentos de prefixo anteriores. Para permitir uma escalabilidade mais rápida e consistente do Amazon S3, recomendamos adicionar um prefixo aleatório, como um código hexadecimal ou ao destino do UUID Amazon S3. URI Por exemplo, prefixos de código hexadecimal naturalmente dividirão suas solicitações aleatoriamente entre 16 prefixos diferentes (um prefixo para cada caractere hexadecimal exclusivo), o que permitirá 56.000 solicitações por PUT segundo após a escalabilidade automática do Amazon S3.