

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

# Estruturas de transmissão de vídeo do Kinesis
<a name="producer-reference-structures-stream"></a>

Você pode usar as estruturas a seguir para fornecer dados a uma instância de um stream de vídeo do Kinesis.

**Topics**
+ [StreamDefinition/StreamInfo](#producer-reference-structures-stream-streaminfo)
+ [ClientMetrics](#producer-reference-structures-stream-clientmetrics)
+ [StreamMetrics](#producer-reference-structures-stream-streammetrics)

## StreamDefinition/StreamInfo
<a name="producer-reference-structures-stream-streaminfo"></a>

O objeto `StreamDefinition` na camada C\+\+ encapsula o objeto `StreamInfo` no Platform Independent Code (PIC - Código independente de plataforma) e fornece alguns valores padrão no construtor. 

### Campos de membros
<a name="producer-reference-structures-stream-streaminfo-fields"></a>


****  

| Campo | Tipo de dados | Description | Valor padrão  | 
| --- | --- | --- | --- | 
| stream\_name | string | Nome de stream opcional. Para obter mais informações sobre o tamanho do nome do streaming, consulte [Cotas do Producer SDK](limits.md#producer-sdk-limits). Cada stream deve ter um nome exclusivo. | Se nenhum nome for especificado, ele será gerado aleatoriamente. | 
| retention\_period | duration<uint64\_t, ratio<3600>> | O período de retenção do streaming em segundos. Especificar 0 indica que não há retenção. | 3.600 (uma hora) | 
| tags | const map<string, string>\*  | Um mapa de pares de chave-valor que contêm as informações do usuário. Se o streaming já tiver um conjunto de tags, as novas tags serão acrescentadas ao conjunto de tags existente.  | Sem tags | 
| kms\_key\_id | string | O ID da AWS KMS chave a ser usado para criptografar o fluxo. Para obter mais informações, consulte [Proteção de dados no Kinesis Video Streams](how-kms.md). | O nome da chave KMS padrão (aws/kinesisvideo.) | 
| tipo de streaming | Enumeração STREAMING\_TYPE | O único valor aceito é STREAMING\_TYPE\_REALTIME. |  | 
| tipo de conteúdo | string | O formato do conteúdo do stream. O console Kinesis Video Streams pode reproduzir conteúdo video/h264 no formato. | video/h264 | 
| latência máxima | duration<uint64\_t, milli> | A latência máxima em milissegundos para o stream. O retorno de chamada de pressão de latência de streaming (se especificado) será chamado quando a duração do buffer exceder esse intervalo. A especificação de 0 indica que nenhum retorno de pressão de latência de stream será chamado.  | milliseconds::zero() | 
| fragment\_duration | duration<uint64\_t>  | A duração do fragmento desejada, em segundos. Esse valor é usado juntamente com o valor de key\_frame\_fragmentation. Se esse valor forfalse, o Kinesis Video Streams gerará fragmentos em um quadro-chave após o término dessa duração. Por exemplo, um streaming de áudio Advanced Audio Coding (AAC - Codificação de áudio avançada) tem cada quadro como um quadro chave. A especificação de key\_frame\_fragmentation = false fará com que a fragmentação aconteça em um quadro chave após o término desse período, resultando em fragmentos de dois segundos.  | 2 | 
| escala de código de hora | duration<uint64\_t, milli>  | A escala de timecode de MKV em milissegundos, que especifica a granularidade dos timecodes dos quadros no cluster do MKV. O código de hora do quadro do MKV sempre é relativo ao início do cluster. O MKV usa um valor de 16 bits (0 a 32767) assinado para representar o timecode dentro do cluster (fragmento). Verifique se o timecode do quadro pode ser representado com a escala de timecode fornecida. O valor padrão da escala do timecode de 1 ms garante que o maior quadro que pode ser representado seja 32767 ms \~= 32 segundos. Isso está acima da duração máxima de fragmentos especificada em [Cotas do serviço Amazon Kinesis Video Streams](limits.md), que é 10 segundos. | 1 | 
| key\_frame\_fragmentation | bool | Se fragmentos devem ser produzidos em um quadro chave. Se true, o SDK produzirá um início de fragmento sempre que houver um quadro chave. Sefalse, o Kinesis Video Streams espera pelo menos e produz um novo fragmento fragment\_duration no quadro-chave que o segue. | true | 
| frame\_timecodes | bool | Determina se usará códigos de hora de quadros ou gerará carimbos de hora usando o retorno de hora atual. Muitos codificadores não produzem time stamps com os quadros. Portanto, especificar false esse parâmetro garante que os quadros tenham um registro de data e hora à medida que são inseridos no Kinesis Video Streams. | true | 
| absolute\_fragment\_times | bool | O Kinesis Video Streams usa o MKV como mecanismo de empacotamento subjacente. A especificação do MKV é rigorosa quanto aos timecodes de quadros serem relativos ao início do cluster (fragmento). No entanto, os timecodes do cluster podem ser absolutos ou relativos em relação à hora de início do streaming. Se os time stamps forem relativos, a chamada de API do serviço PutMedia usará o time stamp opcional de início do streaming e ajustará os time stamps do cluster. O serviço sempre armazena os fragmentos com seus carimbos de data e hora absolutos. | true | 
| fragment\_acks | bool | Se deve receber um fragmento no nível do aplicativo ACKs (confirmações).  | true, o que significa que o SDK receberá o ACKs e agirá de acordo. | 
| restart\_on\_error | bool | Determina se será reiniciado em erros específicos. | true, o que significa que o SDK tentará reiniciar o streaming se ocorrerem erros. | 
| recalculate\_metrics | bool | Se as métricas devem ser recalculadas. Cada chamada para recuperar as métricas pode recalculá-las para obter o valor "em execução" mais recente, o que pode criar um pequeno impacto na CPU. Talvez seja necessário definir isso como false em dispositivos de ocupação de espaço/energia extremamente baixos para poupar os ciclos da CPU. Caso contrário, não recomendamos o false uso desse valor. | true | 
| nal\_adaptation\_flags | uint32\_t  | Especifica os sinalizadores de adaptação da Network Abstraction Layer unit (NALU, unidade da Camada de abstração de rede). Se o fluxo de bits for codificado em H.264, ele poderá ser processado como bruto ou empacotado. NALUs Esses são em formato Annex-B ou AVCC. A maioria dos produtores e consumidores de streams elementares (codificadores e decodificadores de leitura) usa o formato Annex-B porque ele tem vantagens, como recuperação de erros. Os sistemas de nível superior usam o formato AVCC, que é o formato padrão para MPEG, HLS, DASH e assim por diante. A reprodução do console usa MSE (media source extensions - extensões de fonte de mídia) do navegador para decodificar e reproduzir o streaming que usa o formato AVCC. Para H.264 (e M-JPEG e H.265), o SDK fornece recursos de adaptação.<br />Muitos streams elementares estão no seguinte formato. Neste exemplo, `Ab` é o código de início do Annex-B (001 ou 0001).<pre>Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)…. Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)</pre><br />No caso do H.264, os dados privados do codec (CPD) estão nos parâmetros SPS (conjunto de parâmetros de sequência) e PPS (conjunto de parâmetros de imagem) e podem ser adaptados ao formato AVCC. A menos que o pipeline de mídia ofereça o CPD separadamente, o aplicativo pode extrair o CPD do quadro. Ele pode fazer isso procurando o primeiro quadro IDR (que deve conter o SPS e o PPS), extrair os dois NALUs (que estão`Ab(Sps)Ab(Pps)`) e configurá-lo no CPD. `StreamDefinition`<br />Para obter mais informações, consulte [Referência de sinalizadores de adaptação do Network Abstraction Layer (NAL)](producer-reference-nal.md). | O padrão é adaptar o formato Annex-B ao formato AVCC para os dados do quadro e para os dados privados do codec.  | 
| frame\_rate | uint32\_t  | A taxa de quadros esperada. Esse valor é usado para calcular melhor as necessidades de armazenamento em buffer. | 25 | 
| avg\_bandwidth\_bps | uint32\_t  | A largura de banda média esperada para o stream. Esse valor é usado para calcular melhor as necessidades de armazenamento em buffer. | 4 \* 1024 \* 1024  | 
| buffer\_duration | duration<uint64\_t>  | A duração do buffer de streaming, em segundos. O SDK mantém os quadros no armazenamento de conteúdo por atébuffer\_duration, após o qual os quadros anteriores são eliminados à medida que a janela avança. Se o quadro que está sendo eliminado não tiver sido enviado para o back-end, o retorno de chamada do quadro descartado será chamado. Se a duração atual do buffer for maior que max\_latency, o retorno de chamada de pressão de latência do streaming será chamado. O buffer é ajustado para o início do próximo fragmento quando a ACK do fragmento persistido é recebida. Isso indica que o conteúdo foi persistido de forma durável na nuvem, de forma que o armazenamento do conteúdo no dispositivo local não é mais necessário. | 120 | 
| replay\_duration | duration<uint64\_t> | A duração, em segundos, para reverter o leitor atual para reproduzir durante um erro, se a reinicialização estiver ativada. A reversão é interrompida no início do buffer (caso o streaming tenha acabado de iniciar ou a ACK persistida tiver ocorrido). A reversão tenta atingir um quadro chave que indica o início de um fragmento. Se o erro “causando a reinicialização” não for indicativo de um host inativo (o host ainda está ativo e contém os dados do quadro em seus buffers internos), a reversão é interrompida no último quadro ACK recebido. Em seguida, ele avança para o próximo quadro chave, pois o fragmento inteiro já está armazenado na memória do host.  | 40 | 
| connection\_staleness | duration<uint64\_t> | O tempo, em segundos, após o qual o retorno de chamada de inatividade do stream é chamado se o SDK não receber o ACK de buffer. Isso indica que os quadros estão sendo enviados do dispositivo, mas o back-end não os reconhece. Essa condição indica uma conexão rompida no salto intermediário ou no load balancer.  | 30 | 
| codec\_id | string | O ID codec da trilha do MKV. | V\_MPEG4/ISO/AVC | 
| track\_name | string | O nome da trilha do MKV. | kinesis\_video | 
| codecPrivateData | unsigned char\*  | O buffer de codec private data (CPD - dados privados do codec). Se o pipeline de mídia tiver as informações sobre o CPD antes do início do stream, ele poderá ser definido em StreamDefinition.codecPrivateData. Os bits são copiados, e o buffer pode ser reutilizado ou liberado depois que a chamada criar o streaming. No entanto, se os dados não estiverem disponíveis quando o fluxo for criado, eles poderão ser definidos em uma das sobrecargas da KinesisVideoStream.start(cpd) função. | null | 
| codecPrivateDataTamanho | uint32\_t  | O tamanho do buffer dos dados privados do codec. | 0 | 

## ClientMetrics
<a name="producer-reference-structures-stream-clientmetrics"></a>

O **ClientMetrics**objeto é preenchido pela chamada`getKinesisVideoMetrics`.

### Campos de membros
<a name="producer-reference-structures-stream-clientmetrics-fields"></a>


****  

| Campo | Tipo de dados | Description | 
| --- | --- | --- | 
| version | UINT32 | A versão da estrutura, definida na macro CLIENT\_METRICS\_CURRENT\_VERSION. | 
| contentStoreSize  | UINT64 | O tamanho total em bytes do armazenamento de conteúdo. Esse é o valor especificado em DeviceInfo.StorageInfo.storageSize. | 
| contentStoreAvailableTamanho | UINT64 | Tamanho atual do armazenamento disponível em bytes.  | 
| contentStoreAllocatedTamanho | UINT64 | Tamanho atual alocado. Os tamanhos alocados mais os tamanhos disponíveis devem ser um pouco menores que o tamanho total do armazenamento, devido à contabilidade interna e à implementação do armazenamento de conteúdo. | 
| totalContentViewsTamanho | UINT64 | O tamanho da memória alocada para todas as visualizações de conteúdo de todos os streams. Isso não é contabilizado em relação ao tamanho do armazenamento. Essa memória é alocada usando a macro MEMALLOC, que pode ser substituída para fornecer um alocador personalizado. | 
| totalFrameRate | UINT64 | A taxa de quadros total observada em todos os streams. | 
| totalTransferRate | UINT64 | A taxa de stream total observada em bytes por segundo em todos os streams. | 

## StreamMetrics
<a name="producer-reference-structures-stream-streammetrics"></a>

O **StreamMetrics**objeto é preenchido pela chamada`getKinesisVideoMetrics`.

### Campos de membros
<a name="producer-reference-structures-stream-clientmetrics-fields"></a>


****  

| Campo | Tipo de dados | Description | 
| --- | --- | --- | 
| version | UINT32 | A versão da estrutura, definida na macro STREAM\_METRICS\_CURRENT\_VERSION. | 
| currentViewDuration  | UINT64 | A duração dos quadros acumulados. No caso de rede rápida, essa duração é zero ou a duração do quadro (à medida que o quadro está sendo transmitido). Se a duração for maior do que a max\_latency especificada noStreamDefinition, o retorno de chamada de latência do stream será chamado se for especificado. A duração é especificado em unidades de 100ns, que é a unidade de tempo padrão para a camada PIC. | 
| overallViewDuration  | UINT64 | A duração geral da visualização. Se o stream for configurado sem nenhuma ACKs ou com persistência, esse valor aumentará à medida que os quadros forem inseridos no stream de vídeo do Kinesis e se tornarão iguais aos buffer\_duration do. StreamDefinition Quando ACKs estão habilitados e o ACK persistente é recebido, o buffer é reduzido para o próximo quadro-chave. Isso ocorre porque o timestamp ACK indica o início de todo o fragmento. A duração é especificada em unidades de 100 ns, que é a unidade de tempo padrão para a camada PIC. | 
| currentViewSize  | UINT64 | O tamanho em bytes do buffer atual. | 
| overallViewSize  | UINT64 | O tamanho geral da visualização em bytes. | 
| currentFrameRate  | UINT64 | A taxa de quadros observada para o stream atual. | 
| currentTransferRate | UINT64 | A taxa de transferência observada em bytes por segundo para o stream atual. | 