Enviar dados para um stream de vídeo do Amazon Kinesis - 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á.

Enviar dados para um stream de vídeo do Amazon Kinesis

Esta seção descreve como enviar dados de mídia de uma câmera para o stream de vídeo do Kinesis que você criou na seção anterior. Esta seção usa o Use a biblioteca de produtores de C++ como um plug-in Exemplo: Plugin de produtor do Kinesis Video SDK GStreamer Streams - kvssink.

Para enviar mídia de vários dispositivos em vários sistemas operacionais, este tutorial usa a GStreamerbiblioteca de produtores de C++ do Kinesis Video Streams e uma estrutura de mídia de código aberto que padroniza o acesso a câmeras e outras fontes de mídia.

Crie as amostras SDK e

Você pode criar as amostras SDK e em seu computador ou em AWS Cloud9. Siga os procedimentos apropriados abaixo.

Build on your computer

Use as instruções no arquivo readme para criar a biblioteca do produtor e o aplicativo de amostra.

Isso inclui:

  • Instalar as dependências

  • Clonando o repositório

  • Usando CMakepara gerar makefiles

  • Construindo os arquivos binários usando make

Build in AWS Cloud9

Siga estes procedimentos para fazer o upload para o Kinesis Video AWS Cloud9 Streams em. Você não precisará baixar nada para o seu computador.

  1. No AWS Management Console, abra AWS Cloud9.

    Selecione Criar ambiente.

  2. Na tela Criar ambiente, faça o seguinte:

    • Nome - digite um nome para seu novo ambiente.

    • Plataforma - Selecione Ubuntu Server 22.04 LTS.

    Você pode deixar os outros campos com as seleções padrão.

  3. Quando o ambiente tiver sido criado, selecione Abrir na coluna Cloud9 IDE.

    Na área central inferior da tela, você vê. Admin:~/environment $ Este é o terminal AWS Cloud9 (AmazonEC2).

    nota

    Se você fechar acidentalmente o terminal, selecione Janela, Novo terminal.

    Execute os seguintes comandos no terminal para alterar o volume para 20 GiB.

    1. Baixe o script .

      wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/resize_volume.sh
    2. Conceda permissões de execução ao script.

      chmod +x resize_volume.sh
    3. Executar o script.

      ./resize_volume.sh
  4. Obtenha as informações mais recentes sobre todos os softwares que você pode instalar ou atualizar por meio da Advanced Packaging Tool (APT).

    Esse comando não atualiza o software em si, mas garante que seu sistema saiba quais são as versões mais recentes disponíveis.

    sudo apt-get update
  5. Instale as SDK dependências do produtor de C++.

    sudo apt-get install -y cmake m4 git build-essential pkg-config libssl-dev libcurl4-openssl-dev \ liblog4cplus-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \ gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-bad gstreamer1.0-plugins-good \ gstreamer1.0-plugins-ugly gstreamer1.0-tools
  6. Use o git para clonar o produtor de C++. SDK

    git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
  7. Prepare um diretório de compilação.

    cd amazon-kinesis-video-streams-producer-sdk-cpp mkdir build cd build
  8. Use CMake para gerar makefiles.

    cmake .. -DBUILD_GSTREAMER_PLUGIN=TRUE -DBUILD_DEPENDENCIES=OFF

    O final da saída esperada se parece com o seguinte:

    -- Build files have been written to: /home/ubuntu/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build
  9. Use make para compilar os aplicativos SDK e amostras, bem como criar os executáveis finais.

    make

    O final da saída esperada se parece com o seguinte:

    [100%] Linking CXX executable kvs_gstreamer_file_uploader_sample [100%] Built target kvs_gstreamer_file_uploader_sample
  10. Confirme se os arquivos de amostra foram criados. Liste os arquivos no diretório atual:

    ls

    Confirme se os seguintes arquivos estão presentes:

    • kvs_gstreamer_sample

    • libgstkvssink.so

  11. (Opcional) Você pode adicionar a configuração da variável de PATH ambiente GST PLUGIN _ _ ao script de inicialização do seu shell. Isso garante que GST _ PLUGIN _ PATH seja configurado corretamente durante uma nova sessão de terminal. Dentro AWS Cloud9, o script de inicialização do shell é:. ~/.bashrc

    Execute o comando a seguir para anexar o comando ao final do script de inicialização do shell.

    echo "export GST_PLUGIN_PATH=~/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build" >> ~/.bashrc

    Digite o seguinte para executar o script de inicialização do shell:

    source ~/.bashrc

    Confirme se GST PLUGIN _ _ PATH está definido.

    echo $GST_PLUGIN_PATH

    Se você definir a saída corretamente, verá a saída a seguir. Se a saída estiver em branco, a variável de ambiente não será definida corretamente.

    /home/ubuntu/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build

Execute as amostras para fazer upload de mídia para o Kinesis Video Streams

O aplicativo de amostra não oferece suporte a IMDS credenciais. No seu terminal, exporte AWS as credenciais IAM do seu usuário ou função e da região em que seu stream está localizado.

export AWS_ACCESS_KEY_ID=YourAccessKey export AWS_SECRET_ACCESS_KEY=YourSecretKey export AWS_DEFAULT_REGION=YourAWSRegion

Se você estiver usando AWS credenciais temporárias, exporte também seu token de sessão:

export AWS_SESSION_TOKEN=YourSessionToken
.mp4 files

Faça o download de uma amostra de vídeo.mp4 para fazer o upload para o Kinesis Video Streams.

wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/sample.mp4

Especificações de vídeo:

  • Resolução - 1280 x 720 pixels

  • Taxa de quadros - 30 quadros por segundo

  • Duração - 14,0 segundos

  • Codificação de vídeo - H.264, na faixa 1

  • Quadros-chave - A cada 3 segundos, resultando em uma duração do fragmento (também conhecida como tamanho de grupo de imagens (GoP)) de 3 segundos, com o fragmento final tendo 2 segundos de duração.

Execute o comando a seguir com o nome do stream que você criou anteriormente. Se você ainda não criou um stream, consulteCrie um stream de vídeo do Amazon Kinesis.

./kvs_gstreamer_sample YourStreamName ./sample.mp4
Sample video from GStreamer

Use o comando a seguir para gerar um vídeo usandoGStreamer.

Diga GStreamer onde localizar o kvssink GStreamer plugin. No seu diretório de compilação, especifique o caminho para a pasta que contém o libgstkvssink.so arquivo.

No seu diretório de compilação, execute o seguinte comando:

export GST_PLUGIN_PATH=`pwd`

Esse GStreamer pipeline gera um stream de vídeo de teste ao vivo com um padrão de teste padrão executado a 10 quadros por segundo com uma resolução de 640x480 pixels. Uma sobreposição é adicionada exibindo a hora e a data atuais do sistema. O vídeo é então codificado no formato H.264 e os quadros-chave são gerados no máximo a cada 10 quadros, resultando em uma duração do fragmento (também conhecida como tamanho de grupo de imagens (GoP)) de 1 segundo. kvssinkpega o stream de vídeo codificado em H.264, o empacota no formato de contêiner Matroska (MKV) e o carrega no seu stream de vídeo do Kinesis.

Execute o seguinte comando:

gst-launch-1.0 -v videotestsrc is-live=true \ ! video/x-raw,framerate=10/1,width=640,height=480 \ ! clockoverlay time-format="%a %B %d, %Y %I:%M:%S %p" \ ! x264enc bframes=0 key-int-max=10 \ ! h264parse \ ! kvssink stream-name="YourStreamName"

Para interromper a GStreamer tubulação, selecione a janela do terminal e pressione CTRL+C.

nota

Para obter mais informações sobre como usar o GStreamer plug-in para RTSP transmitir vídeo de uma transmissão de uma câmera ou de uma USB câmera, consulteExemplo: Plugin de produtor do Kinesis Video SDK GStreamer Streams - kvssink.

Revise os objetos de reconhecimento

Durante o upload, o Kinesis Video Streams enviará objetos de confirmação de volta ao cliente que está realizando o upload. Você deve vê-los impressos na saída do comando. Um exemplo se parece com o seguinte:

{"EventType":"PERSISTED","FragmentTimecode":1711124585823,"FragmentNumber":"12345678901234567890123456789012345678901234567"}

Se a confirmação EventType forPERSISTED, significa que o Kinesis Video Streams armazenou e criptografou de forma durável esse pedaço de mídia para recuperação, análise e armazenamento a longo prazo.

Para obter mais informações sobre reconhecimentos, consulte. PutMedia