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á.
Você pode usar as estruturas a seguir para fornecer dados a uma instância de um stream de vídeo do Kinesis.
StreamDefinition/StreamInfo
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
Campo | Tipo de dados | Descrição | Valor padrão |
---|---|---|---|
stream_name | string |
Nome de stream opcional. Para obter mais informações sobre o tamanho do nome do streaming, consulte SDKQuotas de produção. 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. | A KMS chave 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 do 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 fluxo de áudio Advanced Audio Coding (AAC) tem cada quadro como 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 do MKV timecode em milissegundos, que especifica a granularidade dos timecodes para os quadros dentro do cluster. MKV O timecode do MKV quadro é sempre relativo ao início do cluster. MKVusa um valor assinado de 16 bits (0-32767) 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, que é 10 segundos. | 1 |
key_frame_fragmentation | bool |
Se fragmentos devem ser produzidos em um quadro chave. Setrue , o SDK produz um início do fragmento toda vez que há 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 MKV Streams usa como mecanismo de empacotamento subjacente. A MKV especificação é estrita quanto aos timecodes de frame 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 timestamps forem relativos, a API chamada de PutMedia serviço usará o timestamp opcional de início do stream e ajustará os timestamps 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 eles SDK receberão o ACKs e agirão de acordo. |
restart_on_error | bool |
Determina se será reiniciado em erros específicos. | true , o que significa que SDK ele tenta reiniciar o streaming se ocorrer algum erro. |
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. CPU Talvez seja necessário configurá-lo para dispositivos de false baixo/consumo de energia para poupar os ciclos. 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 unidade Network Abstraction Layer (NALU). Se o fluxo de bits for codificado em H.264, ele poderá ser processado como bruto ou empacotado. NALUs Eles estão no formato Anexo-B ou AVCC no formato. 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 AVCC formato, que é o formato padrão paraMPEG, HLSDASH, e assim por diante. A reprodução do console usa o navegador MSE (extensões de fonte de mídia) para decodificar e reproduzir o stream que usa o AVCC formato. Para H.264 (e para M- JPEG e H.265), ele fornece recursos de adaptação. SDK Muitos streams elementares estão no seguinte formato. Neste exemplo,
No caso do H.264, os dados privados do codec (CPD) estão nos parâmetros (conjunto de parâmetros de sequência) e PPS (conjunto de parâmetros de imagem) e podem ser adaptados ao formato. SPS AVCC A menos que o pipeline de mídia forneça CPD separadamente, o aplicativo pode extraí-las CPD do quadro. Ele pode fazer isso procurando o primeiro IDR quadro (que deve conter o SPS ePPS), extrair os dois NALUs (que estão Para obter mais informações, consulte Referência do sinalizador de adaptação da Network Abstraction Layer (NAL). |
O padrão é adaptar o formato Annex-B ao AVCC formato dos dados do quadro e dos 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. SDKManté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 é reduzido para o próximo início do fragmento quando o fragmento persistido é recebido. ACK 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 tenha acabado de iniciar a transmissão ou tenha surgido a persistênciaACK). 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 recebido. ACK 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 SDK não receber o buffer. ACK 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 do codec para a MKV faixa. | V_MPEG4/ISO/AVC |
track_name | string |
O nome da MKV faixa. | kinesis_video |
codecPrivateData | unsigned char* |
O buffer de dados privados (CPD) do codec. Se o canal de mídia tiver as informações sobre CPD antes do início da transmissão, ele poderá ser configuradoStreamDefinition.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
O ClientMetricsobjeto é preenchido por meio de uma chamadagetKinesisVideoMetrics
.
Campos de membros
Campo | Tipo de dados | Descrição |
---|---|---|
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
O StreamMetricsobjeto é preenchido por meio de uma chamadagetKinesisVideoMetrics
.
Campos de membros
Campo | Tipo de dados | Descrição |
---|---|---|
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 é especificada em unidades de 100 ns, que é a unidade de tempo padrão para a PIC camada. |
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 persistente ACK é recebido, o buffer é reduzido para o próximo quadro-chave. Isso ocorre porque o ACK timestamp 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 PIC camada. |
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. |