Exemplo: envio de dados para o Kinesis Video Streams PutMedia usando a API - 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á.

Exemplo: envio de dados para o Kinesis Video Streams PutMedia usando a API

Este exemplo demonstra como usar a PutMediaAPI. Mostra como enviar dados que já estão em formato de contêiner (MKV). Se seus dados precisarem ser reunidos em um formato de contêiner antes do envio (por exemplo, se você estiver reunindo dados de vídeo da câmera em quadros), consulteBibliotecas do Kinesis Video Streams Producer.

nota

A PutMedia operação está disponível somente nos SDKs de C++ e Java. Isso se deve ao gerenciamento full-duplex de conexões, fluxo de dados e confirmações. Não é compatível com outros idiomas.

Etapa 1: Baixe e configure o código

Siga as etapas para baixar o código de exemplo Java, importar o projeto em seu Java IDE, configurar os locais da biblioteca e configurar o código para usar suas AWS credenciais.

  1. Crie um diretório e clone o código-fonte de exemplo do GitHub repositório. O exemplo de PutMedia é parte da Biblioteca de produtores Java.

    git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-java
  2. Abra o Java IDE que você está usando (por exemplo, Eclipse ou IntelliJ IDEA) e importe o projeto Apache Maven que você baixou:

    • No Eclipse: selecione File (Arquivo), Import (Importar), Maven (Maven), Existing Maven Projects (Projetos existentes do Maven) e navegue até a raiz do pacote obtido por download. Selecione o arquivo pom.xml.

    • No IntelliJ Idea: escolha Import. Navegue até o arquivo pom.xml na raiz do pacote que você obteve por download.

    Para obter mais informações, consulte a documentação relacionada ao IDE.

  3. Atualize o projeto para que o IDE possa localizar as bibliotecas que você importou.

    • Para IntelliJ IDEA, faça o seguinte:

      1. Abra o menu de contexto (clique com o botão direito do mouse) da lib do projeto e escolha Add as library.

      2. Escolha Arquivo e, em seguida, escolha Estrutura do projeto.

      3. Em Project Settings, escolha Modules.

      4. Na guia Sources (Fontes), defina Language Level (Nível de linguagem) como 7 ou um número superior.

    • Para Eclipse, faça o seguinte:

      1. Abra o menu contextual (clique direito) no projeto e escolha Properties, Java Build Path, Source. Então, faça o seguinte:

        1. Na guia Source, clique duas vezes em Native library location.

        2. No assistente Native Library Folder Configuration, escolha Workspace.

        3. Na caixa de seleção Native Library Folder, escolha o diretório lib no projeto.

      2. Abra o menu de contexto (clique com o botão direito do mouse) do projeto e escolha Properties. Então, faça o seguinte:

        1. Na guia Libraries, escolha Add Jars.

        2. No assistente JAR selection, escolha tudo .jars no diretório lib do projeto.

Etapa 2: escrever e examinar o código

O exemplo de API PutMedia () mostra o padrão de codificação a seguir:PutMediaDemo

Os exemplos de código nesta seção são da classe PutMediaDemo.

Crie o PutMediaClient

A criação do PutMediaClient objeto requer os seguintes parâmetros:

  • O URI endpoint PutMedia.

  • Um InputStream apontando para o arquivo MKV para streaming.

  • Nome do streaming. Este exemplo usa o mesmo streaming criado em Usar a Biblioteca de produtores Java (my-stream). Para usar outro streaming, altere o seguinte parâmetro:

    private static final String STREAM_NAME="my-stream";
    nota

    O exemplo PutMedia da API não cria um stream. Você deve criar um stream usando o aplicativo de teste doUsar a Biblioteca de produtores Java, o console do Kinesis Video Streams ou o. AWS CLI

  • O time stamp atual.

  • O tipo de código de hora. O exemplo usa RELATIVE, indicando que o time stamp é relativo ao início do contêiner.

  • Um objeto AWSKinesisVideoV4Signer que verifica se os pacotes recebidos foram enviados pelo remetente autorizado.

  • A largura de banda máxima de upstream em Kbps.

  • Um objeto AckConsumer para confirmações de recebimento do pacote.

O código a seguir cria o objeto PutMediaClient:

/* actually URI to send PutMedia request */ final URI uri = URI.create(KINESIS_VIDEO_DATA_ENDPOINT + PUT_MEDIA_API); /* input stream for sample MKV file */ final InputStream inputStream = new FileInputStream(MKV_FILE_PATH); /* use a latch for main thread to wait for response to complete */ final CountDownLatch latch = new CountDownLatch(1); /* a consumer for PutMedia ACK events */ final AckConsumer ackConsumer = new AckConsumer(latch); /* client configuration used for AWS SigV4 signer */ final ClientConfiguration configuration = getClientConfiguration(uri); /* PutMedia client */ final PutMediaClient client = PutMediaClient.builder() .putMediaDestinationUri(uri) .mkvStream(inputStream) .streamName(STREAM_NAME) .timestamp(System.currentTimeMillis()) .fragmentTimeCodeType("RELATIVE") .signWith(getKinesisVideoSigner(configuration)) .upstreamKbps(MAX_BANDWIDTH_KBPS) .receiveAcks(ackConsumer) .build();

Transmitir mídia e pausar o thread

Após a criação do cliente, a amostra inicia o streaming assíncrono com putMediaInBackground. Em seguida, o thread principal é pausado com latch.await até que AckConsumer retorne. Nesse momento, o cliente é fechado.

/* start streaming video in a background thread */ client.putMediaInBackground(); /* wait for request/response to complete */ latch.await(); /* close the client */ client.close();

Etapa 3: executar e verificar o código

Para executar o exemplo da API PutMedia, faça o seguinte:

  1. Crie um stream chamado my-stream no console do Kinesis Video Streams ou usando o. AWS CLI

  2. Altere seu diretório de trabalho para o diretório do Java Producer SDK:

    cd /<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-java/
  3. Compile o SDK do Java e o aplicativo de demonstração:

    mvn package
  4. Crie um nome de arquivo temporário no diretório /tmp:

    jar_files=$(mktemp)
  5. Crie uma string de classpath de dependências do repositório local para um arquivo:

    mvn -Dmdep.outputFile=$jar_files dependency:build-classpath
  6. Defina o valor da variável de ambiente LD_LIBRARY_PATH da seguinte forma:

    export LD_LIBRARY_PATH=/<YOUR_FOLDER_PATH_WHERE_SDK_IS_DOWNLOADED>/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH $ classpath_values=$(cat $jar_files)
  7. Execute a demonstração na linha de comando da seguinte forma, fornecendo suas AWS credenciais:

    java -classpath target/kinesisvideo-java-demo-1.0-SNAPSHOT.jar:$classpath_values -Daws.accessKeyId=${ACCESS_KEY} -Daws.secretKey=${SECRET_KEY} -Djava.library.path=/opt/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build com.amazonaws.kinesisvideo.demoapp.DemoAppMain
  8. Abra o console do Kinesis Video Streams e escolha seu stream na página Gerenciar Streams. O vídeo é reproduzido no painel Video Preview.