Suporte à API Kinesis Video Streams e às bibliotecas de produtores - 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á.

Suporte à API Kinesis Video Streams e às bibliotecas de produtores

O Kinesis Video Streams fornece APIs para você criar e gerenciar streams e ler ou gravar dados de mídia de e para um stream. O console do Kinesis Video Streams, além da funcionalidade de administração, também oferece suporte video-on-demand ao vivo e à reprodução. O Kinesis Video Streams também fornece um conjunto de bibliotecas de produtores que você pode usar no código do seu aplicativo para extrair dados de suas fontes de mídia e fazer o upload para o stream de vídeo do Kinesis.

API Kinesis Video Streams

O Kinesis Video Streams fornece APIs para criar e gerenciar o Kinesis Video Streams. Ele também fornece APIs para ler e gravar dados de mídia em um streaming, da seguinte maneira:

  • API do produtor — O Kinesis Video Streams PutMedia fornece uma API para gravar dados de mídia em um stream de vídeo do Kinesis. Em uma solicitação PutMedia, o produtor envia um streaming de fragmentos de mídia. Um fragmento é uma sequência independente de quadros. Os quadros que pertencem a um fragmento não devem depender de nenhum quadro de outros fragmentos. Para ter mais informações, consulte PutMedia.

    À medida que os fragmentos chegam, o Kinesis Video Streams atribui um número de fragmento exclusivo, em ordem crescente. Ele também armazena registros de data e hora do lado do produtor e do lado do servidor para cada fragmento, como metadados específicos do Kinesis Video Streams.

  • APIs de consumidor — Os consumidores podem usar as seguintes APIs para obter dados de um stream:

    • GetMedia - Ao usar esta API, os consumidores devem identificar o fragmento inicial. A API retorna fragmentos na ordem em que foram adicionados ao streaming (em ordem crescente por número de fragmento). Os dados de mídia nos fragmentos são empacotados em um formato estruturado, como Matroska (MKV). Para ter mais informações, consulte GetMedia.

      nota

      GetMedia sabe onde os fragmentos estão (arquivados no armazenamento de dados ou disponíveis em tempo real). Por exemplo, se GetMedia determinar que o fragmento inicial está arquivado, ele começará a retornar fragmentos do armazenamento de dados. Quando ele precisa retornar fragmentos mais novos que ainda não foram arquivados, GetMedia muda para a leitura de fragmentos de um buffer de fluxo na memória.

      Este é um exemplo de um consumidor contínuo, que processa fragmentos na ordem em que eles são ingeridos pelo streaming.

      GetMedia permite que os aplicativos de processamento de vídeo falhem ou atrasem e, em seguida, recuperem o atraso sem esforço adicional. Ao usar GetMedia, os aplicativos podem processar dados que estão arquivados no armazenamento de dados e, à medida que o aplicativo recupera o atraso, o GetMedia continua alimentando os dados de mídia em tempo real assim que eles chegam.

    • GetMediaFromFragmentList (e ListFragments) – aplicativos de processamento em lote são considerados consumidores off-line. Os consumidores off-line podem optar por obter explicitamente fragmentos de mídia específicos ou intervalos de vídeo ao combinar as APIs ListFragments e GetMediaFromFragmentList. ListFragments e GetMediaFromFragmentList permitem que um aplicativo identifique segmentos de vídeo de um período ou um intervalo de fragmentos específico e, em seguida, obtenha esses fragmentos de forma sequencial ou em paralelo para fins de processamento. Esta abordagem é adequada para pacotes de aplicativos MapReduce, que precisam processar rapidamente grandes quantidades de dados em paralelo.

      Por exemplo, suponha que um consumidor queira processar fragmentos de vídeo de um dia. O consumidor deve fazer o seguinte:

      1. Obter uma lista de fragmentos ao chamar a API ListFragments e especificar um período para selecionar a coleção de fragmentos desejada.

        A API retorna metadados de todos os fragmentos no período especificado. Os metadados fornecem informações como número do fragmento, registros de data e hora do lado do produtor e do lado do servidor, etc.

      2. Obter a lista de metadados do fragmento e recuperar os fragmentos, em qualquer ordem. Por exemplo, para processar todos os fragmentos do dia, o consumidor pode optar por dividir a lista em sublistas e fazer com que os trabalhadores (por exemplo, várias instâncias do Amazon EC2) busquem os fragmentos em paralelo usando o e GetMediaFromFragmentList os processem em paralelo.

O diagrama a seguir mostra o streaming de dados para fragmentos e blocos durante essas chamadas de API.

Diagrama mostrando streaming de dados para fragmentos e blocos durante chamadas de API

Quando um produtor envia uma solicitação PutMedia, ele envia metadados de mídia para a carga útil e, em seguida, uma sequência de fragmentos de dados de mídia. Ao receber os dados, o Kinesis Video Streams armazena os dados de mídia recebidos como partes do Kinesis Video Streams. Cada bloco consiste no seguinte:

  • Uma cópia dos metadados da mídia

  • Um fragmento

  • Metadados específicos do Kinesis Video Streams; por exemplo, o número do fragmento e os carimbos de data/hora do lado do servidor e do produtor

Quando um consumidor solicita metadados de mídia, o Kinesis Video Streams retorna um stream de partes, começando com o número do fragmento que você especifica na solicitação.

Se você ativar a persistência de dados para o stream, depois de receber um fragmento no stream, o Kinesis Video Streams também salvará uma cópia do fragmento no armazenamento de dados.

Padrão de descoberta de endpoints

APIs REST do plano de controle

Para acessar as APIs REST do plano de controle do Kinesis Video Streams, use os endpoints do serviço Kinesis Video Streams.

APIs REST do plano de dados

O Kinesis Video Streams foi criado usando uma arquitetura celular para garantir melhores propriedades de escalabilidade e isolamento de tráfego. Como cada stream é mapeado para uma célula específica em uma região, seu aplicativo deve usar os endpoints corretos específicos da célula para os quais seu stream foi mapeado. Ao acessar as APIs REST do Data Plane, você mesmo precisará gerenciar e mapear os endpoints corretos. Esse processo, o padrão de descoberta de endpoints, é descrito abaixo:

  1. O padrão de descoberta do endpoint começa com uma chamada para uma das GetEndpoints ações. Essas ações pertencem ao Plano de Controle.

    1. Se você estiver recuperando os endpoints dos Mídia arquivada do Amazon Kinesis Video Streams serviços Mídia do Amazon Kinesis Video Streams ou, use. GetDataEndpoint

    2. Se você estiver recuperando os endpoints paraAmazon Kinesis Video Streams,Amazon Kinesis WebRTC Streams, ou Kinesis Video Signaling, use. GetSignalingChannelEndpoint

  2. Armazene em cache e reutilize o endpoint.

  3. Se o endpoint em cache não funcionar mais, faça uma nova chamada GetEndpoints para atualizar o endpoint.

Bibliotecas de produtores

Depois de criar um stream de vídeo do Kinesis, você pode começar a enviar dados para o stream. No código do seu aplicativo, você pode usar essas bibliotecas para extrair dados de suas fontes de mídia e fazer o upload para o stream de vídeo do Kinesis. Para obter mais informações sobre bibliotecas de produtores, consulte Bibliotecas do Kinesis Video Streams Producer.