Modelo de dados do Kinesis Video Streams - Amazon Kinesis Video Streams

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

As Faça o upload para o Kinesis Video Streams e a Veja a saída das câmeras usando a biblioteca de analisadores 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. Esse formato é baseado na especificação Matroska (MKV).

O MKVformato é 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 MKV no formato.

O Faça o upload para o Kinesis Video Streams usa os Frame tipos StreamDefinition e para produzir cabeçalhos de MKV fluxo, cabeçalhos de quadros e dados de quadros.

Para obter informações sobre a MKV especificação completa, consulte as especificações da Matroska.

As seções a seguir descrevem os componentes dos dados MKV formatados produzidos pelo. C++

Elementos do cabeçalho de streaming

Os seguintes elementos de MKV cabeçalho são usados por StreamDefinition (definido emStreamDefinition.h).

Elemento Descrição Valores típicos
stream_name Corresponde ao nome do stream de vídeo do Kinesis. my-stream
retention_period 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 AWS Management Console e podem ser lidos por aplicativos do cliente para filtrar ou obter informações sobre um streaming.
kms_key_id 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/kinesis-video 01234567-89ab-cdef-0123-456789ab
tipo de streaming Atualmente, o único tipo de streaming válido é STREAMING_TYPE_REALTIME. STREAMING_TYPE_REALTIME
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_duration 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 TimecodeScaledocumentação do Matroska.

key_frame_fragmentation Se true, o streaming iniciará um novo cluster quando um keyframe for recebido. true
frame_timecodes 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_fragment_time 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_acks 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_on_error Indica se o streaming deve retomar a transmissão depois que ocorrer um erro de streaming. true
nal_adaptation_flags Indica se a adaptação NAL (Network Abstraction Layer) ou os dados privados do codec estão presentes no conteúdo. Sinalizadores válidos incluem NAL_ADAPTATION_ANNEXB_NALS e NAL_ADAPTATION_ANNEXB_CPD_NALS. NAL_ADAPTATION_ANNEXB_NALS
frame_rate 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_bandwidth_bps 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 stream de vídeo com resolução de 720p rodando a 25FPS, você pode esperar que a largura de banda média seja de 5 Mbps. 5
buffer_duration 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_duration 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_staleness a duração de retenção de uma conexão quando nenhum dado é recebido.
codec_id O codec usado pelo conteúdo. Para obter mais informações, consulte CodecID na Especificação do Matroska. V_ MPEG2
track_name O nome de trilha definido pelo usuário. my_track
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++, a gMkvTrackVideoBits matriz MkvStatics.cpp inclui largura e altura em pixels para o quadro.
codecPrivateDataTamanho O tamanho dos dados no parâmetro codecPrivateData.
track_type O tipo da trilha para o streaming. MKV_ TRACK _ INFO _ TYPE _ AUDIO ou MKV_ TRACK _ INFO _ TYPE _ VIDEO
segment_uuid UUID do segmento definido pelo usuário (16 bytes)
default_track_id Número exclusivo diferente de zero para a trilha. 1

Transmita dados da trilha

Os seguintes elementos de MKV rastreamento são usados por StreamDefinition (definido emStreamDefinition.h).

Elemento Descrição Valores típicos
track_name Nome da trilha definido pelo usuário. Por exemplo, "audio" para a trilha de áudio. audio
codec_id ID de codec da trilha. Por exemplo, “A_AAC" para uma faixa de áudio. A_ AAC
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++, a gMkvTrack VideoBits matriz em MkvStatics .cpp inclui largura e altura em pixels para o quadro.
cpd_size O tamanho dos dados no codecPrivateData parâmetro.
track_type O tipo da trilha. Por exemplo, você pode usar o valor de enumeração de MKV _ TRACK _ INFO _ TYPE _ AUDIO para áudio. MKV_TRACK_INFO_TYPE_AUDIO

Elementos do cabeçalho de quadros

Os seguintes elementos de MKV cabeçalho são usados por Frame (definidos no KinesisVideoPic pacote, emmkvgen/Include.h):

  • Frame Index: um valor monotonômico crescente.

  • Flags: tipo de quadro. Entre os valores válidos estão os seguintes:

    • 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

MKVdados do quadro

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 AWS Management Console, os dados devem ser codificados no codec H.264, mas o Kinesis Video Streams pode receber fluxos de dados com serialização temporal em qualquer formato.