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á.
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. Este formato é baseado na especificação Matroska (MKV).
O formato MKV
Faça o upload para o Kinesis Video StreamsEle 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
As seções a seguir descrevem os componentes de dados formatados pelo MKV produzidos pela C++.
Tópicos
Elementos do cabeçalho de streaming
Os seguintes elementos de cabeçalho do MKV são usados por StreamDefinition
(definido no StreamDefinition.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, dos dados do stream é mantida 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/kinesisvideo |
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 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_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 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_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 da trilha do MKV são usados por StreamDefinition
(definidos no StreamDefinition.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 trilha 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 um valor enum de MKV_TRACK_INFO_TYPE_AUDIO para áudio. | MKV_TRACK_INFO_TYPE_AUDIO |
Elementos do cabeçalho de quadros
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. 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
Dados do quadro MKV
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