

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á.

# Modelo de dados do Kinesis Video Streams
<a name="how-data"></a>

As [Faça o upload para o Kinesis Video Streams](producer-sdk.md) e a [Veja a saída das câmeras usando a biblioteca de analisadores](parser-library.md) enviam e recebem dados de vídeo em um formato que oferece suporte à incorporação de informações junto com os dados do vídeo. Este formato é baseado na especificação Matroska (MKV).

O [formato MKV](https://en.wikipedia.org/wiki/Matroska) é uma especificação aberta para dados de mídia. Todas as bibliotecas e exemplos de código no Guia do desenvolvedor do *Amazon Kinesis Video Streams* enviam ou recebem dados no formato MKV. 

[Faça o upload para o Kinesis Video Streams](producer-sdk.md)Ele usa os `Frame` tipos `StreamDefinition` e para produzir cabeçalhos de fluxo MKV, cabeçalhos de quadro e dados de quadro.

Para obter informações sobre a especificação completa do MKV, consulte [Especificações do Matroska](https://www.matroska.org/technical/specs/index.html).

As seções a seguir descrevem os componentes de dados formatados pelo MKV produzidos pela [C\$1\$1](producer-sdk-cpp.md).

**Topics**
+ [Elementos do cabeçalho de streaming](#how-data-header-streamdefinition)
+ [Transmita dados da trilha](#how-data-header-streamtrack)
+ [Elementos do cabeçalho de quadros](#how-data-header-frame)
+ [Dados do quadro MKV](#how-data-frame)

## Elementos do cabeçalho de streaming
<a name="how-data-header-streamdefinition"></a>

Os seguintes elementos de cabeçalho do MKV são usados ​​por `StreamDefinition` (definido no `StreamDefinition.h`).


****  

| Elemento | Description | Valores típicos | 
| --- | --- | --- | 
| stream\$1name | Corresponde ao nome do stream de vídeo do Kinesis. | my-stream | 
| retention\$1period | A duração, em horas, em que os dados do stream são persistidos pelo Kinesis Video Streams. Especifique 0 para um stream que não retém dados.  | 24 | 
| tags | uma coleção de valores-chave de dados do usuário. Esses dados são exibidos no Console de gerenciamento da AWS e podem ser lidos por aplicativos do cliente para filtrar ou obter informações sobre um streaming. |  | 
| kms\$1key\$1id | Se presente, a AWS KMS chave definida pelo usuário é usada para criptografar dados no stream. Se ausentes, os dados são criptografados pela chave () fornecida pelo Kinesis. aws/kinesisvideo | 01234567-89ab-cdef-0123-456789ab | 
| tipo de streaming | Atualmente, o único tipo de streaming válido é STREAMING\$1TYPE\$1REALTIME. | STREAMING\$1TYPE\$1REALTIME | 
| tipo de conteúdo | O tipo de conteúdo definido pelo usuário. Para que os dados de vídeo de streaming sejam reproduzidos no console, o tipo de conteúdo precisa ser video/h264. | vídeo/h264 | 
| latência máxima | Esse valor não é usado atualmente e deve ser definido como 0. | 0 | 
| fragment\$1duration | A estimativa de quanto tempo seus fragmentos devem ter, o que é usado para otimização. A duração real do fragmento é determinada por dados de streaming. | 2 | 
| escala de código de hora | Indica a escala usada pelos carimbos de data/hora do quadro. O padrão é 1 milissegundo. Especificar `0` também atribui o valor padrão de 1 milissegundo. Esse valor pode estar entre 100 nanossegundos e 1 segundo. Para obter mais informações, consulte a [TimecodeScale](https://matroska.org/technical/specs/notes.html#TimecodeScale)documentação do Matroska. |  | 
| key\$1frame\$1fragmentation | Se true, o streaming iniciará um novo cluster quando um keyframe for recebido. | true | 
| frame\$1timecodes | Setrue, o Kinesis Video Streams usa os valores de data e hora de apresentação (pts) e de decodificação (dts) dos quadros recebidos. Sefalse, o Kinesis Video Streams carimba os quadros quando eles são recebidos com valores de tempo gerados pelo sistema. | true | 
| absolute\$1fragment\$1time |  Se true, os timecodes do cluster serão interpretados como se estivessem usando a hora absoluta (por exemplo, do relógio do sistema do produtor). Se for false, os códigos de hora do cluster serão interpretados como relativos à hora de início do streaming. | true | 
| fragment\$1acks |  Setrue, confirmações (ACKs) são enviadas quando o Kinesis Video Streams recebe os dados. O ACKs pode ser recebido usando os retornos de KinesisVideoStreamParseFragmentAck chamada KinesisVideoStreamFragmentAck ou. | true | 
| restart\$1on\$1error | Indica se o streaming deve retomar a transmissão depois que ocorrer um erro de streaming. | true | 
| nal\$1adaptation\$1flags | Indica se a adaptação da NAL (camada de abstração de rede) ou os dados privados do codec estão presentes no conteúdo. Sinalizadores válidos incluem NAL\$1ADAPTATION\$1ANNEXB\$1NALS e NAL\$1ADAPTATION\$1ANNEXB\$1CPD\$1NALS. | NAL\$1ADAPTATION\$1ANNEXB\$1NALS | 
| frame\$1rate | Uma estimativa da taxa de quadros do conteúdo. Esse valor é usado para otimização. A taxa de quadros real é determinada pela taxa de dados recebidos. Especificar 0 atribui o padrão de 24. | 24 | 
| avg\$1bandwidth\$1bps | Uma estimativa da largura de banda do conteúdo, em Mbps. Esse valor é usado para otimização. A taxa real é determinada pela largura de banda dos dados recebidos. Por exemplo, para um streaming de vídeo de resolução 720p em execução a 25 FPS, você pode esperar que a média de largura de banda seja 5 Mbps. | 5 | 
| buffer\$1duration | a duração de armazenamento do conteúdo no produtor. Se houver baixa latência de rede, esse valor poderá ser reduzido. Se a latência da rede for alta, o aumento desse valor evita que os quadros sejam descartados antes que possam ser enviados, devido à falha na alocação ao colocar os quadros no buffer menor. |  | 
| replay\$1duration | A quantidade de tempo em que o fluxo de dados de vídeo é “rebobinado” se a conexão for perdida. Esse valor pode ser zero se os quadros perdidos devido à perda de conexão não forem uma preocupação. O valor pode ser aumentado se o aplicativo consumidor puder remover quadros redundantes. Esse valor deve ser menor que a duração do buffer, caso contrário, a duração do buffer será usada. |  | 
| connection\$1staleness | a duração de retenção de uma conexão quando nenhum dado é recebido. |  | 
| codec\$1id | O codec usado pelo conteúdo. Para obter mais informações, consulte [CodecID](https://matroska.org/technical/specs/codecid/index.html) na Especificação do Matroska. | V\$1 MPEG2 | 
| track\$1name | O nome de trilha definido pelo usuário. | my\$1track | 
| codecPrivateData | os dados fornecidos pelo codificador utilizado para decodificar os dados do quadro, como a largura do quadro e a altura em pixels, o que é necessário para muitos consumidores de downstream. Na [biblioteca de produtores de C\$1\$1](producer-sdk-cpp.md), a gMkvTrackVideoBits matriz MkvStatics.cpp inclui largura e altura em pixels para o quadro. |  | 
| codecPrivateDataTamanho | O tamanho dos dados no parâmetro codecPrivateData. |  | 
| track\$1type | O tipo da trilha para o streaming. | MKV\$1TRACK\$1INFO\$1TYPE\$1AUDIO ou MKV\$1TRACK\$1INFO\$1TYPE\$1VIDEO | 
| segment\$1uuid | UUID do segmento definido pelo usuário (16 bytes) |  | 
| default\$1track\$1id | Número exclusivo diferente de zero para a trilha. | 1 | 

## Transmita dados da trilha
<a name="how-data-header-streamtrack"></a>

Os seguintes elementos da trilha do MKV são usados ​​por `StreamDefinition` (definidos no `StreamDefinition.h`).


****  

| Elemento | Description | Valores típicos | 
| --- | --- | --- | 
| track\$1name | Nome da trilha definido pelo usuário. Por exemplo, "audio" para a trilha de áudio.  | audio | 
| codec\$1id | ID de codec da trilha. Por exemplo, "A\$1AAC" para uma trilha de áudio. | A\$1AAC | 
| cpd | Dados fornecidos pelo codificador usado para decodificar os dados do quadro. Esses dados podem incluir a largura e a altura do quadro em pixels, que são informações necessárias para muitos consumidores de downstream. Na [biblioteca de produtores de C\$1\$1](https://docs.aws.amazon.com//kinesisvideostreams/latest/dg/producer-sdk-cpp.html), a gMkvTrack VideoBits matriz em MkvStatics .cpp inclui largura e altura em pixels para o quadro.  |  | 
| cpd\$1size | O tamanho dos dados no codecPrivateData parâmetro. |  | 
| track\$1type | O tipo da trilha. Por exemplo, você pode usar um valor enum de MKV\$1TRACK\$1INFO\$1TYPE\$1AUDIO para áudio. | MKV\$1TRACK\$1INFO\$1TYPE\$1AUDIO | 

## Elementos do cabeçalho de quadros
<a name="how-data-header-frame"></a>

Os elementos de cabeçalho do MKV a seguir são usados ​​por `Frame``KinesisVideoPic` (definido no pacote , em `mkvgen/Include.h`):
+ **Frame Index:** um valor monotonômico crescente.
+ **Flags:** tipo de quadro. Os valores válidos incluem:
  + `FRAME_FLAGS_NONE`
  + `FRAME_FLAG_KEY_FRAME`: se `key_frame_fragmentation` estiver definido no streaming, os keyframes iniciarão um novo fragmento.
  + `FRAME_FLAG_DISCARDABLE_FRAME`: indica ao decodificador que ele pode descartar o quadro se a decodificação for lenta.
  + `FRAME_FLAG_INVISIBLE_FRAME`: a duração deste bloco é 0.
+ **Carimbo de data e hora de decodificação:** o registro de data e hora de quando esse quadro foi decodificado. Se os quadros anteriores dependerem desse quadro para decodificação, esse carimbo de data/hora poderá ser anterior ao dos quadros anteriores. Esse valor é relativo ao início do fragmento.
+ **Timestamp da apresentação:** O timestamp de quando esse quadro é exibido. Esse valor é relativo ao início do fragmento.
+ **Duration:** a duração de reprodução do quadro.
+ **Size:** o tamanho dos dados de quadro em bytes

## Dados do quadro MKV
<a name="how-data-frame"></a>

Os dados em `frame.frameData` podem conter apenas os dados do quadro ou conter mais informações de cabeçalho aninhadas, dependendo do esquema de codificação usado. Para serem exibidos no Console de gerenciamento da AWS, os dados devem ser codificados no codec [H.264](https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC), mas o Kinesis Video Streams pode receber fluxos de dados com serialização temporal em qualquer formato.