Geral
P: O que é o Amazon Kinesis Video Streams?
O Amazon Kinesis Video Streams facilita o streaming seguro de mídia de dispositivos conectados para a AWS, podendo ser usados para armazenamento, análises, machine learning (ML), reprodução e outros processamentos. O Kinesis Video Streams provisiona e escala de maneira elástica e automática toda a infraestrutura necessária para consumir dados de streaming de mídia de milhões de dispositivos. O serviço oferece armazenamento duradouro, criptografa e indexa dados de mídia de streams e permite acessar sua mídia por meio de APIs fáceis de usar. O Kinesis Video Streams permite criar rapidamente aplicativos de visão computadorizada e Machine Learning por meio da integração com o Amazon Rekognition Video, com o Amazon SageMaker e com bibliotecas de estruturas de Machine Learning como Apache MxNet, TensorFlow e OpenCV. Para reproduções ao vivo e sob demanda, o Kinesis Video Streams fornece recursos gerenciados para o HTTP Live Streaming (HLS) e Dynamic Adaptive Streaming over HTTP (DASH). O Kinesis Video Streams também suporta a streaming de mídia bidirecional de latência ultra-baixa com WebRTC como recurso gerenciado.
P: O que são dados de codificação temporal?
Os dados com codificação temporal são quaisquer dados em que os registros estão em uma série temporal e cada registro está relacionado aos registros anterior e posterior. O vídeo é um exemplo de dados com codificação temporal. Cada quadro é relacionado aos quadros anterior e posterior por meio de transformações espaciais. Outros exemplos de dados com codificação temporal incluem sinais de áudio, RADAR e LIDAR. O Amazon Kinesis Video Streams foi criado especificamente para consumir e armazenar de forma econômica e eficiente todos os tipos de dados com codificação temporal para casos de uso de análises e machine learning.
P: Quais são os casos de uso comuns do Kinesis Video Streams?
O Kinesis Video Streams é ideal para criar plicativos de streaming de mídia para dispositivos IoT habilitados pra câmera e para criar aplicativos de aprendizado de Machine Learning habilitados para visão computadorizada em tempo real que estão se tornando predominantes em uma grande variedade de casos de uso, como os seguintes:
Residência inteligente
Com o Kinesis Video Streams, você pode fazer facilmente streaming de vídeo e áudio de dispositivos residenciais equipados com câmera como monitores de bebês, webcams e sistemas de vigilância residencial para a AWS. Esses streamings podem ser usados para criar diversos aplicativos residenciais inteligentes, da simples reprodução de mídia até iluminação inteligente, sistemas de controle climático e soluções de segurança.
Cidade inteligente
Muitas cidades instalaram grandes números de câmeras em semáforos, estacionamentos, shoppings e praticamente em todos os locais públicos. capturando vídeo 24 horas por dia, 7 dias por semana. Você pode usar o Kinesis Video Streams para consumir, armazenar, reproduzir e analisar com segurança e economia esse volume massivo de dados de mídia a fim de ajudar a resolver problemas de trânsito, combater o crime, responder a emergências e muito mais.
Automação industrial
Você pode usar o Kinesis Video Streams para coletar diversos dados com codificação temporal como sinais de RADAR e LIDAR, perfis de temperatura e dados detalhados de equipamentos industriais. Esses dados podem ser analisados usando sua estrutura de machine learning favorita, incluindo Apache MxNet, TensorFlow e OpenCV, em casos de uso de automação industrial como manutenção preditiva. Por exemplo, é possível prever a vida útil de gaxeta ou válvula e programar antecipadamente a substituição das peças para reduzir o tempo de inatividade e os defeitos em uma linha de fabricação.
P: O que o Amazon Kinesis Video Streams pode gerenciar por mim?
O Amazon Kinesis Video Streams é um serviço gerenciado de consumo, armazenamento e processamento de mídia. O serviço permite consumir, processar e armazenar vídeo de forma segura em qualquer escala para aplicativos que equipam robôs, cidades inteligentes, automação industrial, monitoramento de segurança, Machine Learning (ML) e muito mais. Além disso, o Kinesis Video Streams consome outros tipos de dados com codificação temporal como sinais de áudio, RADAR e LIDAR. O Kinesis Video Streams fornece SDKs para instalação em dispositivos que facilitam o streaming seguro de mídia para a AWS. O Kinesis Video Streams provisiona e escala de maneira elástica e automática toda a infraestrutura necessária para consumir streams de mídia de milhões de dispositivos. Além disso, armazena, criptografa e indexa streams de mídia de forma resiliente, além de fornecer APIs fáceis de usar para que os aplicativos possam recuperar e processar fragmentos de vídeos indexados com base em tags e timestamps. O Kinesis Video Streams fornece uma biblioteca para integrar estruturas de ML como Apache MxNet, TensorFlow e OpenCV a streams de vídeo a fim de criar aplicativos de Machine Learning. O Kinesis Video Streams está integrado com o Amazon Rekognition Video, permitindo criar aplicativos de visão computadorizada que detectam objetos, eventos e pessoas.
Principais conceitos
P: O que é um stream de vídeo?
O stream de vídeo é um recurso que permite que você capture vídeo ao vivo e outros dados de codificação temporal, armazene esses dados de forma opcional e disponibilize-os para consumo tanto em tempo real quanto por lotes ou por demanda. Quando você opta por armazenar dados no stream de vídeo, o Kinesis Video Streams criptografa os dados e gera um índice baseado em tempo nos dados armazenados. Em uma configuração típica, um stream de vídeo do Kinesis tem apenas um produtor que publica dados nesse local. O stream de vídeo do Kinesis pode ter vários aplicativos de consumo processando o conteúdo do stream de vídeo.
P: O que é um fragmento?
Um fragmento é uma sequência de quadros de mídia autônoma. Os quadros que pertencem a um fragmento não devem ter dependência alguma de qualquer um dos quadros de outros fragmentos. À medida que os fragmentos chegam, o Kinesis Video Streams atribui um número de fragmento único, em ordem crescente. Ele também armazena timestamps no produtor e no servidor para cada fragmento como metadados específicos do Kinesis Video Streams.
P: O que é um produtor?
Produtor é um termo genérico para se referir a um dispositivo ou origem que introduz os dados em um stream de vídeo do Kinesis. O produtor pode ser qualquer dispositivo de geração de vídeos, como câmeras de segurança, câmeras acopladas ao corpo, câmeras de smartphones ou câmeras para painéis de carros. O produtor também pode enviar dados de codificação temporal que não sejam de vídeo, como feeds de áudio, imagens ou dados de RADAR. Um produtor pode gerar um ou mais streams de vídeo. Por exemplo, uma câmera de vídeo pode lançar dados de vídeo em um stream de vídeo do Kinesis e dados de áudio em outro.
P: O que é um consumidor?
Os consumidores são os aplicativos personalizados que consomem e processam os dados nos streams de vídeo do Kinesis em tempo real ou após os dados estarem armazenados de forma resiliente e indexados em relação ao tempo quando o processamento de baixa latência não é exigido. Você pode criar esses aplicativos consumidores para serem executados nas instâncias do Amazon EC2. Também é possível usar outros serviços do Amazon AI, como Amazon Rekognition, ou provedores de análise de vídeo de terceiros, para processar seus streams de vídeo.
P: O que é uma porção?
Ao receber os dados de um produtor, o Kinesis Video Streams armazena os dados de mídia de entrada como blocos. Cada bloco consiste no fragmento de mídia real, uma cópia dos metadados de mídia enviados pelo produtor e os metatados específicos do Kinesis Video Streams, como por exemplo o número do fragmento, além dos timestamps do servidor e do produtor. Quando um consumidor solicita dados de mídia por meio da operação da API GetMedia, o Kinesis Video Streams retorna um streaming de blocos, começando com o número de fragmento que você especificou na solicitação.
P: Como é a latência no Amazon Kinesis Video Streams?
Há quatro principais componentes na latência de um fluxo de dados de mídia completo.
- O tempo gasto na pipeline de mídia de hardware do dispositivo: essa pipeline pode conter o sensor de imagem e qualquer codificador de hardware, conforme necessário. Em tese, esse tempo pode ser tão breve quanto a duração de um único quadro. Na prática, raramente é. Todos os codificadores acumularão vários quadros para construir um fragmento e, assim, funcionarão de forma eficaz na codificação de mídia. Esse processo e qualquer algoritmo de compensação de movimento correspondente adicionarão um ponto de latência que pode variar de um segundo a vários segundos no dispositivo antes que os dados sejam empacotados para transmissão.
- Latência que resultou na transmissão de dados real na internet: a qualidade do throughput e da latência da rede pode variar de maneira significativa com base no local em que o dispositivo de produção estiver localizado.
- Latência adicionada pelo Kinesis Video Streams à medida que ele recebe os dados do dispositivo produtor: os dados de entrada são disponibilizados imediatamente na operação da API GetMedia para qualquer aplicativo consumidor. Se preferir reter dados, o Kinesis Video Streams assegurará que os dados sejam criptografados com o uso do AWS Key Management Service (AWS KMS) e gerem um índice baseado no tempo nos fragmentos individuais no stream de vídeo. Quando você acessar esses dados retidos usando a API GetMediaforFragmentList, o Kinesis Video Streams seleciona os fragmentos do armazenamento resiliente, decodifica os dados e os disponibiliza para o aplicativo consumidor.
- Latência de tempo na transmissão de dados de volta para o consumidor: pode haver dispositivos na internet ou outras regiões da AWS que solicitem os dados de mídia. A qualidade da latência e do throughput da rede pode variar de maneira significativa dependendo de onde o dispositivo consumidor está localizado.
Publicação de dados em streams
P: Como publico dados no meu stream de vídeo do Kinesis?
Você pode publicar dados de mídia em um stream de vídeo do Kinesis por meio da operação PutMedia, ou usar os SDKs de produtores do Kinesis Video Streams no Java, C++ ou Android. Caso escolha usar a operação PutMedia diretamente, você será responsável pelo empacotamento do stream de mídia de acordo com a especificação de dados do Kinesis Video Streams, pela criação do stream, pela rotação do token e por outras ações necessárias para um streaming de dados de mídia confiável para a Nuvem AWS. Recomendamos usar os SDKs de produtores para realizar tais tarefas de forma mais simples e para começar a usar os recursos mais rápido.
P: O que é a operação de PutMedia no Kinesis Video Streams?
O Kinesis Video Streams fornece uma API PutMedia, que grava dados de mídia em um stream de vídeo do Kinesis. Em uma solicitação do PutMedia, o produtor envia um stream de fragmentos de mídia. À medida que os fragmentos chegam, o Kinesis Video Streams atribui um número de fragmento único, em ordem crescente. Ele também armazena os timestamps do produtor e do servidor para cada fragmento como metadados específicos do Kinesis Video Streams.
P: O que é o SDK produtor do Kinesis Video Streams?
O SDK de produtor do Amazon Kinesis Video Streams é um conjunto de bibliotecas altamente configuráveis e fáceis de usar que você pode instalar e personalizar de acordo com os seus produtores específicos. O SDK facilita a criação de um aplicativo no dispositivo que se conecte de forma segura com um stream de vídeo e publica vídeo e outros dados de mídia de maneira confiável no Kinesis Video Streams. Ele cuida de todas as tarefas subjacentes que são necessárias para empacotar os quadros e os fragmentos gerados pelo pipeline de mídia do dispositivo. O SDK também realiza a criação de streams, a rotação de tokens para um streaming seguro e contínuo, o processamento de notificações de recebimento retornadas pelo Kinesis Video Streams e outras tarefas.
P: Em quais plataformas de programação o SDK produtor do Kinesis Video Streams encontra-se disponível?
O núcleo do SDK de produtor do Kinesis Video Streams é criado em linguagem C, portanto é eficiente e portátil para uma variedade de plataformas de hardware. A maioria dos desenvolvedores preferirão usar as versões do SDK de produtor do Kinesis Video Streams para C, C++ ou Java. Há também uma versão para Android do SDK de produtor para desenvolvedores de aplicativos de dispositivos móveis que querem realizar o stream de dados de vídeo em dispositivos Android.
P: O que devo saber antes de começar a usar o SDK produtor do Kinesis Video Streams?
O SDK de produtor do Kinesis Video Streams realiza todo o levantamento pesado de quadros e fragmentos de empacotamento, estabelece uma conexão segura e faz stream de vídeo para AWS de maneira confiável. Entretanto, há muitas variedades diferentes de dispositivos de hardware e pipelines de mídia em execução neles. Para facilitar o processo de integração com o pipeline de mídia, recomendamos adquirir alguns conhecimentos de 1) limites de quadros, 2) tipo de quadro usado para os limites, I-frame ou não I-frame e 3) timestamp da codificação do quadro.
Leitura de dados de streams
P: O que é a API GetMedia?
Você pode usar a API GetMedia para recuperar conteúdo de mídia de um stream de vídeo do Kinesis. Na solicitação, você identifica o nome do stream ou o Nome de Recurso da Amazon (ARN) do stream e o bloco inicial. O Kinesis Video Streams então retorna um stream de blocos ordenado por número de fragmento. Quando você coloca os dados de mídia (fragmentos) em um stream, o Kinesis Video Streams armazena cada fragmento de entrada e os metadados relacionados no que chamamos de “bloco”. A API GetMedia retorna o stream desses blocos, começando pelo bloco que você especifica na solicitação.
P: O que é a API GetMediaForFragmentList?
Você pode usar a API GetMediaForFragmentList para recuperar dados de mídia (especificados pelo número de fragmento) para uma lista de fragmentos de dados arquivados em um stream de vídeo do Kinesis. Normalmente, uma chamada para essa operação de API é precedida por uma chamada para a API ListFragments.
P: O que é a API ListFragments?
Você pode usar a API ListFragments para retornar uma lista de fragmentos do stream de vídeo especificado e do local de início - usando o número do fragmento ou timestamps - contida nos dados retidos.
P: Por quanto tempo posso armazenar dados no Kinesis Video Streams?
Você pode armazenar dados em seus streams por quanto tempo desejar. O Kinesis Video Streams permite configurar o período de retenção dos dados que atenda às suas necessidades de arquivamento e armazenamento.
P: O que é a biblioteca do analisador do Kinesis Video Streams?
A biblioteca do analisador do Kinesis Video Streams torna fácil para os desenvolvedores o consumo e o processamento da saída da operação GetMedia do Kinesis Video Streams. Os desenvolvedores de aplicativos incluirão a biblioteca em seus aplicativos de análise e processamento de vídeo que operam nos streams de vídeo. Esses aplicativos serão executados em instâncias do EC2 ou em qualquer outro local. A biblioteca tem recursos que facilitam obter um objeto de quadro e seus dados associados, bem como extrair e coletar metadados específicos do Kinesis Video Streams que são anexados a fragmentos e fragmentos consecutivos. Então, você pode criar aplicativos personalizados que podem usar mais facilmente os dados de vídeo brutos para seus casos de uso.
P: Se eu tiver um aplicativo de processamento personalizado que precise usar os quadros (e fragmentos) transportados pelo stream de vídeo do Kinesis, como devo fazer?
Em geral, se você deseja consumir streams de vídeo e depois manipulá-los para que atendam às necessidades de aplicativos personalizados, há duas etapas a serem consideradas. Primeiro, obtenha os bytes em um quadro no stream formatado fornecido pela API GetMedia. Você pode usar a biblioteca do analisador de stream para obter os objetos do quadro. Em seguida, obtenha os metadados necessários para decodificar um quadro, como altura do pixel, sua largura, id do codec e dados privados do codec. Tais metadados são incorporados aos elementos de rastreamento. A biblioteca do analisador facilita a extração dessas informações, pois fornece classes do assistente para coletar as informações de rastreamento de um fragmento.
As etapas seguintes são altamente dependentes do aplicativo. Você pode querer decodificar quadros, formatá-los para um mecanismo de reprodução, transcodificá-los para distribuição de conteúdo ou alimentá-los em um formato personalizado de aplicativo de aprendizado profundo. A biblioteca do analisador de stream do Kinesis Video Streams tem base de código aberto, por isso, você pode ampliá-la para seus casos de uso específicos.
Reprodução de vídeo de streams
P: Como faço para reproduzir o vídeo capturado em um aplicativo?
Você pode usar os recursos HTTP Live Streams (HLS) e Dynamic Adaptive Streaming over HTTP (DASH) do Amazon Kinesis Video Streams para reproduzir o vídeo consumido em pacotes de formato MP4 ou MPEG_TS fragmentados. O HLS e o DASH são protocolos de streaming de mídia padrão do setor e baseados no HTTP. À medida que você captura vídeo de dispositivos usando o Amazon Kinesis Video Streams, você pode usar APIs do HLS ou DASH para reproduzir vídeo ao vivo ou gravado. Esse recurso é gerenciado, portanto, você não precisa criar nenhuma infraestrutura baseada na nuvem para oferecer suporte à reprodução de vídeo. Para reprodução de baixa latência e streaming de mídia bidirecionais, consulte as perguntas frequentes em streaming baseado em WebRTC.
P: Como faço para começar a usar as APIs do HLS ou DASH do Kinesis Video Streams?
Para visualizar um stream de vídeo do Kinesis usando o HLS ou Dash, crie antes uma sessão de streaming usando GetHLSStreamingSessionURL ou APIs GetDASHStreamingSessionURL. Essa ação retorna um URL (com um token de sessão) para acessar a sessão do HLS ou DASH, que você pode usar como um reprodutor de mídia ou um aplicativo autônomo para reproduzir o stream. Você pode usar um reprodutor de terceiros (como Video.js ou Google Shaka Player) para exibir o stream de vídeo mediante. Para isso, basta fornecer de forma programática ou manual o URL da sessão de streaming do HLS ou DASH. Também é possível reproduzir o vídeo inserindo o URL da sessão de streaming do HLS ou DASH na barra de localização dos navegadores Apple Safari ou Microsoft Edge. Além disso, você pode usar os reprodutores de vídeo para Android (Exoplayer) e iOS (AVMediaPlayer) em aplicativos móveis.
P: Quais são os requisitos básicos para usar as APIs do HLS do Kinesis Video Streams?
Um stream de vídeo do Amazon Kinesis apresenta os seguintes requisitos para fornecer dados por meio do HLS:
- A mídia precisa conter vídeos codificados em h.264 ou h.265 e, opcionalmente, áudio codificado em AAC. Especificamente, o ID do codec da faixa 1 deverá ser V_MPEG/ISO/AVC para h.264 ou V_MPEG/ISO/HEVC para h.265. Opcionalmente, o ID do codec da faixa 2 deverá ser A_AAC.
- As faixas de vídeo de cada fragmento devem conter dados privados de codec no formato Advanced Video Coding (AVC) para o formato H.264 ou HEVC para o formato H.265 (especificação MPEG-4 ISO/IEC ISO/IEC 14496-15). Para obter informações sobre a adaptação de dados de streams para um formato específico, consulte Referência de sinalizadores de adaptação do NAL.
- A retenção de dados deve ser maior que 0.
- A trilha de áudio (se estiver presente) de cada fragmento precisa conter dados privados de codec no formato AAC (especificação AAC ISO/IEC 13818-7)
P: Quais são os requisitos básicos para usar as APIs do HLS ou DASH do Kinesis Video Streams?
Um stream de vídeo do Amazon Kinesis apresenta os seguintes requisitos para fornecer dados por meio do DASH:
- A mídia precisa conter vídeos codificados em h.264 ou h.265 e, opcionalmente, áudio codificado em AAC ou G.711. Especificamente, o ID do codec da faixa 1 deverá ser V_MPEG/ISO/AVC para (h.264) ou V_MPEGH/ISO/HEVC (para h.265). Opcionalmente, o ID do codec da faixa 2 deverá ser A_AAC (para AAC) ou A_MS/ACM (para G.711).
- As faixas de vídeo de cada fragmento devem conter dados privados de codec no formato Advanced Video Coding (AVC) para o formato H.264 e HEVC para o formato H.265. Para obter mais informações, consulte a Especificação de MPEG-4 SO/IEC 14496-15. Para obter informações sobre a adaptação de dados de streams para um formato específico, consulte Referência de sinalizadores de adaptação do NAL.
- A retenção de dados deve ser maior que 0.
- A trilha de áudio (se estiver presente) de cada fragmento precisa conter dados privados de codec no formato AAC (especificação AAC ISO/IEC 13818-7) ou o formato MS Wave.
P: Quais são os modos de reprodução disponíveis para streaming em HLS ou DASH no Kinesis Video Streams?
Há dois tipos diferentes de reprodução suportados tanto pelo HLS quanto pelo DASH: ao vivo e sob demanda.
AO VIVO: para sessões ao vivo, a lista de reprodução de mídia do HLS é atualizada constantemente com os fragmentos mais recentes assim que são disponibilizados. Quando esse tipo de sessão é reproduzido em um reprodutor de mídia, a interface de usuário normalmente exibe uma notificação “ao vivo”, sem controle deslizante para escolher a posição a ser exibida na janela de reprodução.
SOB DEMANDA: no modo sob demanda, a lista de reprodução de mídia do HLS contém todos os fragmentos da sessão, até o número especificado em MaxMediaPlaylistFragmentResults. A lista de reprodução somente pode ser recuperada uma única vez em cada sessão.
Além disso, o HLS também suporta reprodução no modo LIVE_REPLAY. Nesse modo, a lista de reprodução de mídia HLS é atualizada de forma similar ao modo LIVE, exceto pelo fato de ela começar incluindo fragmentos de um dado ponto de início. Esse modo é útil para casos em que você quer começar a reproduzir de um ponto no passado de uma mídia armazenada e continuar em um streaming ao vivo.
P: Qual é o atraso na reprodução de vídeo usando a API?
Normalmente, a latência para reprodução ao vivo é de 3 a 5 segundos, mas pode variar. Recomendamos que você execute seus próprios testes e prova de conceito para determinar as latências pretendidas. Há vários fatores que afetam a latência, incluindo o caso de uso, como o produtor gerar os fragmentos de vídeo, o tamanho do fragmento de vídeo, o ajuste do reprodutor e condições de rede no streaming para a AWS e saindo da AWS para reprodução. Para reprodução de baixa latência, consulte as perguntas frequentes em streaming baseado em WebRTC.
P: Quais são os limites relevantes para o uso do HLS ou DASH?
Um stream de vídeo do Kinesis suporta no máximo dez sessões de streaming HLS ou DASH ativas. Se uma nova sessão for criada quando já existir o número máximo de sessões, a sessão mais antiga (a primeira a ser criada) será fechada. O número de conexões GetMedia ativas em um stream de vídeo do Kinesis não é considerado nesse limite. O número de sessões HLS ativas não é considerado no limite de conexões GetMedia ativas. Consulte Limites de Streams de vídeo do Kinesis para ter maiores detalhes.
P: Qual é a diferença entre o Kinesis Video Streams e o AWS Elemental MediaLive?
O AWS Elemental MediaLive é um serviço de codificação de vídeo ao vivo de nível de transmissão. O serviço permite criar streams de vídeo de alta qualidade para transmissão de TV e entrega a dispositivos multitela conectados à Internet, como TVs conectadas, tablets, smartphones e decodificadores. O serviço funciona de forma independente ou como parte dos serviços de mídia da AWS.
O Amazon Kinesis Video Streams facilita o streaming seguro de vídeos de dispositivos conectados para a AWS, onde podem ser usados para machine learning (ML), reprodução de vídeo, análises e outros processamentos em tempo real e voltados a lotes. O serviço permite que clientes criem aplicativos baseados em visão de máquina para residências inteligentes, cidades inteligentes, automação industrial, monitoramento de segurança e outras aplicações.
P: O uso desse recurso é cobrado?
O Kinesis Video Streams usa uma definição de preço simples com pagamento conforme o uso. Não há custos adiantados e você paga apenas pelos recursos que usar. A definição de preço do Kinesis Video Streams é baseada no volume de dados (GB) consumido para processamento, no volume de dados (GB) consumido para visualização (incluindo as APIs do HLS ou DASH) e no armazenamento de dados armazenado (GB-mês) por todos os streams de vídeo da sua conta. Consulte a página de preço para mais saber mais.
O que é o Amazon Kinesis Video Streams Edge Agent
P: O que é o Amazon Kinesis Video Streams Edge Agent?
O Amazon Kinesis Video Streams Edge Agent é um conjunto de bibliotecas fáceis de usar e altamente configuráveis que você pode instalar e personalizar para armazenamento de vídeo local e upload programado para a nuvem. Você pode baixar o agente de borda e implantá-lo em seus dispositivos de computação de ponta locais. Como alternativa, você pode implantá-los facilmente em contêineres do docker executados em máquinas do Amazon EC2. Depois de implantadas, você pode usar as APIs do Amazon Kinesis Video Streams para atualizar as configurações de gravação de vídeo e upload na nuvem. O recurso funciona com qualquer câmera IP que possa transmitir pelo protocolo RTSP e não requer implantação adicional de firmware nas câmeras. Oferecemos as instalações do Amazon Kinesis Video Streams Edge Agent em dispositivos AWS Snowball Edge, como um componente do AWS Greengrass ou em uma implantação nativa de IoT. Para acessar o Amazon Kinesis Video Streams Edge Agent, clique aqui.
Streaming de mídia de baixa latência bidirecional com WebRTC
P: O que é o WebRTC e como o Kinesis Video Streams suporta este recurso?
O WebRTC é uma especificação de tecnologia aberta para permitir comunicação em tempo real (RTC) entre navegadores e aplicativos móveis por meio de APIs simples. Ele otimiza técnicas de emparelhamento para troca de dados em tempo real entre pares conectados e fornece streaming de mídia baixa latência exigido para a interação entre pessoas. A especificação do WebRTC inclui um conjunto de protocolos de IETF, incluindo Interactive Connectivity Establishment (ICE RFC5245), Traversal Using Relay around NAT (TURN RFC5766), e Session Traversal Utilities for NAT (STUN RFC5389) para estabelecer a conectividade peer-to-peer, além de especificações do protocolo para mídia em tempo real e streaming de dados. O Kinesis Video Streams fornece uma implementação do WebRTC compatível com os padrões, como um recurso totalmente gerenciado. Você pode usar esse recurso para fazer streaming de mídia ao vivo de forma segura ou realizar interação de áudio ou vídio bidirecional entre qualquer dispositivo IoT de câmera e dispositivo móvel ou players web compatíveis com o WebRTC. Como um recurso totalmente gerenciado, você não tem que criar, operar ou escalar qualquer infraestrutura de nuvem relacionado ao WebRTC, tais como servidores de sinalização ou de retransmissão de mídia para fazer streaming de mídia de forma segura entre aplicativos e dispositivos.
P: o que o Amazon Kinesis Video Streams gerencia em meu nome para permitir o streaming de mídia ao vivo com o WebRTC?
O Kinesis Video Streams fornece endpoint gerenciado para sinalização do WebRTC, permitindo que os aplicativos se conectem com segurança uns aos outros para o streaming de mídia ao vivo peer-to-peer. Depois, inclui enpoints gerenciados para TURN que possibilita retransmissão de mídia por meio da nuvem quando os aplicativos não podem fazer streming de mídia peer-to-peer. Também inclui endpoints gerenciados para Stun, o que possibilita que os aplicativos descubram seu endereço público de IP quando esses estão localizados atrás de um NAT ou de um firewall. Além disso, fornece um SDK fácil de usar para habilitar dispositivos IoT de câmera com recursos de WebRTC. Finalmente, fornece um cliente SDKs para Android, IOS e aplicativos da Web para integrar recursos de sinalização WebRTC do Kinesis Video Streams, TURN e STUN com qualquer dispositivo móvel ou player da web compatível com WebRTC.
P: O que eu posso criar usando recursos de WebRTC do Kinesis Video Streams?
Com o WebRTC do Kinesis Video Streams, você conseguirá criar aplicativos para streaming de mídia ao vivo ou interatividade de áudio ou vídeo em tempo rel entre dispositivos de IoT com câmera, navegadores da web e dispositivos móveis para casos de uso como ajudar os pais a ficar de olho no quarto do bebê, permitir que os proprietários de casa usem uma campainha com vídeo para checar quem está na porta, permitir que os proprietários de robô aspirador com câmera visualizem o stream da câmera em um telefone móvel e muito mais.
P: Como faço para começar a usar o recurso WebRTC do Kinesis Video Streams?
Você pode começar criando e rodando os aplicativos de exemplo nos SDKs do Kinesis Video Stream para WebRTC disponíveis nos dispositivos móveis baseados nos navegadores web, Android ou iOS e dispositivos IoT baseados em Linux, Raspbian e MacOS. Você também pode rodar uma demonstração rápida para este recurso no console de gerenciamento do Kinesis Video Streams criando um canal de sinalização e rodando o aplicativo de demonstração para fazer um streaming de áudio e vídeo da câmera e microfone incorporados ao seu laptop.
P: O que é um canal de sinalização?
Um canal de sinalização é um recurso que permite que os aplicativos descubram, configurem, controlem e encerrem uma conexão peer-to-peer por meio da troca de mensagens de sinalização. Mensagens de sinalização são metadados que dois aplicativos trocam um com o outro para estabelecer uma conectividade peer-to-peer. Esse metadado inclui informações de mídia local, tais como codecs de mídia e parâmetros de codec e possíveis caminhos candidatos à rede para os dois aplicativos se conectarem entre si para um streaming ao vivo.
P: Como os aplicativos usam um canal de sinalização para possibilitar a conectividade peer-to-peer?
Aplicativos de streaming podem manter conectividade persistente com um canal de sinalização e esperar que outros aplicativos se conectem a eles ou eles poderão se conectar apenas com um canal de sinalização quando eles precisarem fazer um streaming de mídia ao vivo. O canal de sinalização permite que os aplicativos se conectem entre si em um modelo um para poucos usando o conceito de um principal se conectando a diversos visualizadores. O aplicativo que inicializa a conexão assume a responsabilidade de ser o principal por meio da API ConnectAsMaster e espera por visualizadores. Até 10 aplicativos podem, então, se conectar àquele canal de sinalização assumindo a responsabilidade de visualizador por meio da API ConnectAsViewer. Uma vez conectado ao canal de sinalização, os aplicativos principal e visualizadores podem enviar mensagens de sinalização uns para os outros para estabelecer conectividade peer-to-peer para streaming de mídia ao vivo.
P: Como os aplicativos fazem streaming ao vivo de mídia peer-to-peer quando estão localizados atrás de um NAT ou de um firewall?
Os aplicativos usam o endpoint para STUN do Kinesis Video Streams para descobrir seu endereço público de IP quando esses estão localizados atrás de um NAT ou de um firewall. Um aplicativo fornece seu endereço público de IP como uma localização possível onde pode receber solicitações de conexão de outros aplicativos para streaming ao vivo. A opção padrão para toda comunicação WebRTC é a conectividade peer-to-peer direta, mas se o NAT ou o firewall não permitirem conectividade direta (por exemplo, no caso de NATs simétricos), os aplicativos podem se conectar com o endpoint para TURN do Kinesis Video Streaming para retransmitir a mídia por meio da nuven. A API GetIceServerConfig fornece as informações de endpoint do TURN necessárias para que os aplicativos possam usar em suas configurações de WebRTC. Essa configuração permite que os aplicativos usem a retransmissão do TURN como um recuo quando são incapazes de estabelecer uma conexão peer-to-peer direta para um streaming ao vivo.
P: Como o Kinesis Video Streams assegura o streaming de mídia ao vivo com o WebRTC?
A criptografia de ponta a ponta é um recurso obrigatório do WebRTC e o Kinesis Video Streams o força em todos os componentes, incluindo sinalizadores e média ou dados de streaming. Independentemente de se comunicação é peer-to-peer ou retransmitida pelo endpoint para TURN do Kinesis Video Streams, todas as comunicações WebRTC são criptografas de forma segura por meio de protocolos de criptografia padronizados. As mensagens de sinalização são trocadas usando Websockets seguros (WSS), streamins de dados criptografados usando o Datagram Transport Layer Security (DTLS) e streams de mídia que são criptografados usando o Secure Real-time Transport Protocol (SRTP).
Console
P: O que é o console de gerenciamento do Kinesis Video Streams?
O console de gerenciamento do Kinesis Video Streams permite criar, atualizar, gerenciar e monitorar seus streams de vídeo. O console pode também reproduzir os seus streams de mídia ao vivo ou sob demanda, contanto que o conteúdo dos streams esteja em um tipo de mídia compatível. Com o uso dos controles do player, você pode assistir a streams ao vivo, avançar ou retroceder 10 segundos, usar o coletor de data e hora para voltar a um ponto no passado, quando foi feita a configuração do período de retenção correspondente para o stream de vídeo. Os recursos de reprodução de vídeo do console de gerenciamento do Kinesis Video Streams são oferecidos como uma ferramenta de diagnóstico rápido para cenários de desenvolvimento e teste para desenvolvedores durante sua criação de soluções com o uso do Kinesis Video Streams.
P: Com que tipo de mídia o console é compatível?
O único tipo de mídia de vídeo compatível para reprodução no console de gerenciamento do Kinesis Video Streams é o formato popular H.264. Esse formato de mídia tem ampla compatibilidade com dispositivos, decodificadores de hardware e software, bem como mecanismos de reprodução. Apesar de você poder consumir qualquer variedade de vídeo, áudio ou outros tipos de dados personalizados e codificados por tempo para seus próprios aplicativos e casos de uso, o console de gerenciamento não realizará a reprodução desses outros tipos de dados.
P: Qual é o atraso na reprodução de vídeo no console de gerenciamento do Kinesis Video Streams?
Para um produtor que esteja transmitindo dados de vídeo no stream de vídeo, você perceberá um atraso de 2 a 10 segundos na reprodução ao vivo com o console de gerenciamento do Kinesis Video Streams. A maior parte da latência é adicionada pelo dispositivo do produtor à medida que este acumula quadros em fragmentos antes de transmitir dados pela internet. Uma vez que os dados são introduzidos no endpoint do Kinesis Video Streams e você solicita a reprodução, o console obtém fragmentos de tipo de mídia H.264 do armazenamento resiliente, empacota e transforma os fragmentos em um formato de mídia adequado para reprodução em diferentes navegadores da internet. O conteúdo de mídia empacotado e transformado é então transferido para o seu local onde a reprodução foi solicitada pela internet.
Criptografia
P: O que é a criptografia no servidor para o Kinesis Video Streams?
A criptografia no lado do servidor é um recurso do Kinesis Video Streams que criptografa automaticamente os dados antes que se tornem ociosos usando uma chave do AWS KMS especificada por você. Os dados são criptografados antes de serem gravados na camada de armazenamento do Kinesis Video Streams e são descriptografados depois de recuperados do armazenamento. Em consequência disso, os dados estão sempre criptografados quando ociosos dentro do serviço do Kinesis Video Streams.
P: Como faço para começar a usar a criptografia no servidor?
A criptografia no lado do servidor está sempre habilitada nos streams de vídeo do Kinesis. Se uma chave fornecida pelo usuário não for especificada quando a transmissão for criada, a chave padrão (fornecida pelo Kinesis Video Streams) será usada.
Uma chave do AWS KMS fornecida pelo usuário deve ser atribuída na transmissão do Kinesis Video Streams quando for criada. Você não pode atribuir mais tarde uma chave diferente a uma transmissão usando a API UpdateStream.
Há duas maneiras de atribuir uma chave mestra do AWS KMS fornecida pelo usuário: quando criar um stream de vídeo do Kinesis no console, especifique a chave mestra do AWS KMS na seção Encryption da página Create new Kinesis Video stream. Ou então, quando criar uma transmissão do Kinesis Video Streams com a API CreateStream, especifique o ID da chave no parâmetro KmsKeyId.
P: Quanto custa usar a criptografia do servidor?
Quando você aplica a criptografia no lado do servidor, está sujeito ao uso da API do AWS KMS e aos custos da chave. Diferentemente das chaves do AWS KMS, a chave do KMS (padrão) aws/kinesis-video é oferecida gratuitamente. Entretanto, você ainda precisa pagar pelo uso da API, e esses custos são direcionados a você pelo Kinesis Video Streams. Os custos de uso de APIs se aplicam a cada chave KMS, inclusive as personalizadas. O Kinesis Video Streams chama o AWS KMS aproximadamente a cada 45 minutos quando está mudando a chave de dados. Em um período de 30 dias, o custo total de chamadas de API da AWS KMS iniciadas pelo Kinesis Video Streams deve ser inferior a alguns dólares. Esse custo aumenta com o número de credenciais de usuários usados pelos produtores e consumidores de dados, pois cada credencial de usuário exige uma chamada de API única ao AWS KMS.
Definição de preço e faturamento
P: O Amazon Kinesis Video Streams está disponível no nível gratuito da AWS?
Não. No momento, o Amazon Kinesis Video Streams não está disponível no nível gratuito da AWS.
P: Quanto custa o Kinesis Video Streams?
O Kinesis Video Streams usa uma definição de preço simples com pagamento conforme o uso. Não há custos iniciais nem taxas mínimas, e você paga apenas pelos recursos que usa. A definição de preço do Kinesis Video Streams se baseia no volume de dados (GB) consumido, no volume de dados consumido (GB) e no armazenamento de dados armazenado (GB por mês) por todos os streams de vídeo da sua conta.
Além disso, o Kinesis Video Streams só cobrará por dados de mídia que conseguir receber, com tamanho mínimo de bloco de 4 KB. Em termos de comparação, uma amostra de áudio de 64 kbps tem tamanho de 8 KB, então o tamanho mínimo do bloco é definido como o menor necessário para acomodar os mais reduzidos streams de áudio ou vídeo.
P: Como os Kinesis Video Streams cobram por dados armazenados nos streams?
O Kinesis Video Streams cobrará de você o valor total de dados armazenados de forma resiliente em qualquer stream fornecido. A quantidade total de dados armazenados por stream de vídeo pode ser controlada usando-se horas de retenção.
P: Como eu sou cobrado por usar os recursos de WebRTC do Kinesis Video Streams?
Por usar os recursos WebRTC do Amazon Kinesis Video Streams, você será cobrado com base no número de canais de sinalização que estiverem ativos em um certo mês, o número de mensagens de sinalizações enviadas e recebidas e os minutos de streaming de TURN usados para retransmitir mídia. Um casal de sinalização é considerado ativo em um mês se a qualquer momento nele um dispositivo ou aplicativo se conectar a ele. Os minutos de streaming do TURN são medidos em incrementos de 1 minuto. Consulte a página de definição de preço para mais detalhes.
Acordo de Nível de Serviço
P: O que o SLA do Amazon Kinesis Video Streams garante?
O SLA do Amazon Kinesis Video Streams garante uma porcentagem de tempo de disponibilidade de pelo menos 99,9% para o Amazon Kinesis Video Streams.
P: Como saberei se me qualifico para um crédito de serviço do SLA?
Você estará qualificado para um crédito de SLA para o Amazon Kinesis Video Streams nos termos do SLA do Amazon Kinesis Video Streams se mais de uma zona de disponibilidade na qual você executar uma tarefa, na mesma região, tiver uma porcentagem de tempo de disponibilidade inferior a 99,9% durante qualquer ciclo de faturamento mensal.
Para obter detalhes completos sobre todos os termos e condições do SLA, bem como detalhes sobre como enviar uma alegação, consulte a página de detalhes do SLA do Amazon Kinesis Video Streams.
Saiba mais sobre a definição de preço do Amazon Kinesis Video Streams