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
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++
Tópicos
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 Para obter mais informações, consulte a TimecodeScale |
|
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 |
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
: sekey_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