Ejemplo: complemento GStreamer del SDK de Kinesis Video Streams Producer - Amazon Kinesis Video Streams

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejemplo: complemento GStreamer del SDK de Kinesis Video Streams Producer

En este tema se describe cómo crear el SDK para productores de Amazon Kinesis Video Streams para usarlo como complemento de GStreamer.

GStreamer es un popular marco multimedia que utilizan varias cámaras y fuentes de vídeo para crear canales multimedia personalizados mediante la combinación de complementos modulares. El complemento GStreamer de Kinesis Video Streams agiliza la integración de su canal multimedia de GStreamer existente con Kinesis Video Streams. Tras integrar GStreamer, puede transmitir vídeo desde una cámara web o una cámara de protocolo de transmisión en tiempo real (RTSP) a Kinesis Video Streams para reproducirlo, almacenarlo y analizarlo en tiempo real o posteriormente.

El complemento GStreamer gestiona automáticamente la transferencia de su transmisión de vídeo a Kinesis Video Streams al encapsular la funcionalidad proporcionada por el SDK para productores de Kinesis Video Streams en un elemento receptor de GStreamer,. kvssink El marco de GStreamer proporciona un entorno administrado estándar para la creación de flujo multimedia desde un dispositivo como una cámara u otra fuente de vídeo para procesamiento adicional, representación o almacenamiento.

La canalización de GStreamer normalmente se compone del enlace entre una fuente (cámara de vídeo) y del elemento receptor (bien un reproductor para representar el vídeo o almacenamiento para recuperación sin conexión). En este ejemplo, se utiliza el elemento SDK Producer como receptor o destino multimedia, para su fuente de vídeo (cámara web o cámara IP). El elemento del complemento que encapsula el SDK envía entonces la transmisión de vídeo a Kinesis Video Streams.

En este tema se describe cómo crear una canalización multimedia de GStreamer que sea capaz de transmitir vídeo desde una fuente de vídeo, como una cámara web o una transmisión RTSP, normalmente conectada a Kinesis Video Streams a través de etapas de codificación intermedias (mediante codificación H.264). Cuando la transmisión de vídeo esté disponible como transmisión de vídeo de Kinesis, puede utilizar la biblioteca de analizadores de secuencias de vídeo de Kinesis para seguir procesando, reproduciendo, almacenando o analizando la transmisión de vídeo.


                Vista funcional del canal multimedia de GStreamer para transmitir vídeo desde una cámara al servicio Kinesis Video Streams.

Descargue, cree y configure el elemento GStreamer

El ejemplo del complemento GStreamer se incluye en el SDK para productores de C++ de Kinesis Video Streams. Para obtener información acerca de los requisitos de SDK y de la descarga, consulte Paso 1: Descargar y configurar el código de la biblioteca de productores de C++.

Puede crear el receptor Producer SDK GStreamer como biblioteca dinámica en macOS, Ubuntu, Raspberry Pi o Windows. El complemento GStreamer se encuentra en su directorio build. Para cargar este complemento, debe estar en su. GST_PLUGIN_PATH Ejecute el siguiente comando:

export GST_PLUGIN_PATH=`pwd`/build

Ejecuta el elemento GStreamer

Para ejecutar GStreamer con el elemento del SDK de Kinesis Video Streams Producer como receptor, utilice el comando. gst-launch-1.0 Use los ajustes que sean apropiados para el uso del complemento GStreamer. Por ejemplo, v4l2src para dispositivos v4l2 en sistemas Linux o rtspsrc para dispositivos RTSP. Especifique kvssink como receptor (destino final de la canalización) para enviar vídeo al SDK Producer.

El elemento kvssink tiene los siguientes parámetros obligatorios:

  • stream-name— El nombre de la transmisión de vídeo de Kinesis de destino.

  • storage-size— El tamaño de almacenamiento del dispositivo en kilobytes. Para obtener información acerca de la configuración del almacenamiento de dispositivo, consulte StorageInfo.

  • access-key— La clave de AWS acceso que se utiliza para acceder a Kinesis Video Streams. Debe proporcionar este parámetro o bien credential-path.

  • secret-key— La clave AWS secreta que se utiliza para acceder a Kinesis Video Streams. Debe proporcionar este parámetro o bien credential-path.

  • credential-path— Una ruta a un archivo que contiene sus credenciales para acceder a Kinesis Video Streams. Para obtener más información sobre la rotación de credenciales, consulte Administración de claves de acceso para usuarios de IAM. Debe proporcionar este parámetro o bien access-key y secret-key.

Para obtener información acerca de los parámetros opcionales kvssink, consulte Referencia de parámetros del elemento GStreamer.

Para obtener la información más reciente sobre los complementos y parámetros de GStreamer, consulte Complementos de GStreamer o utilice el siguiente comando para enumerar las opciones:

gst-inspect-1.0 kvssink

Si la compilación ha fallado o GST_PLUGIN_PATH no está configurado correctamente, el resultado tendrá un aspecto similar al siguiente:

No such element or plugin 'kvssink'

Ejemplo de comandos de lanzamiento de GStreamer

Los siguientes ejemplos muestran cómo usar un complemento de GStreamer para transmitir vídeo desde distintos tipos de dispositivos.

Ejemplo 1: Transmite vídeo desde una cámara RTSP en Ubuntu

El siguiente comando crea una canalización de GStreamer en Ubuntu que transmite desde una cámara RTSP en red, utilizando el complemento de GStreamer rtspsrc:

gst-launch-1.0 -v rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! h264parse ! kvssink stream-name="YourStreamName" storage-size=128

Ejemplo 2: Codificar y transmitir vídeo desde una cámara USB en Ubuntu

El siguiente comando crea una canalización de GStreamer en Ubuntu que codifica la transmisión desde una cámara USB en formato H.264 y la transmite a Kinesis Video Streams. En este ejemplo se utiliza el complemento GStreamer v4l2src.

gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! x264enc bframes=0 key-int-max=45 bitrate=500 ! video/x-h264,stream-format=avc,alignment=au,profile=baseline ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

Ejemplo 3: Transmite vídeo precodificado desde una cámara USB en Ubuntu

El siguiente comando crea una canalización de GStreamer en Ubuntu que transmite vídeo que la cámara ya ha codificado en formato H.264 a Kinesis Video Streams. En este ejemplo se utiliza el complemento de GStreamer v4l2src.

gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! h264parse ! video/x-h264,stream-format=avc,alignment=au ! kvssink stream-name="plugin" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

Ejemplo 4: Transmitir vídeo desde una cámara de red en macOS

El siguiente comando crea una canalización de GStreamer en macOS que transmite vídeo a Kinesis Video Streams desde una cámara de red. En este ejemplo se utiliza el complemento de GStreamer vrtspsrcsrc.

gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

Ejemplo 5: Transmita vídeo desde una cámara de red en Windows

El siguiente comando crea una canalización de GStreamer en Windows que transmite vídeo a Kinesis Video Streams desde una cámara de red. En este ejemplo se utiliza el complemento de GStreamer vrtspsrcsrc.

gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! video/x-h264, format=avc,alignment=au ! kvssink stream-name="YourStreamName" storage-size=512 access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

Ejemplo 6: Transmita vídeo desde una cámara de Raspberry Pi

El siguiente comando crea una canalización de GStreamer en Raspberry Pi que transmite vídeo a Kinesis Video Streams. En este ejemplo, se utiliza el complemento GStreamer v4l2src.

gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! omxh264enc control-rate=1 target-bitrate=5120000 periodicity-idr=45 inline-header=FALSE ! h264parse ! video/x-h264,stream-format=avc,alignment=au,width=640,height=480,framerate=30/1,profile=baseline ! kvssink stream-name="YourStreamName" access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

Ejemplo 7: Transmita vídeo desde una cámara de Raspberry Pi y especifique la región

El siguiente comando crea una canalización de GStreamer en Raspberry Pi que transmite vídeo a Kinesis Video Streams en la región EE.UU. Este (Norte de Virginia). En este ejemplo, se utiliza el complemento GStreamer v4l2src.

gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! videoconvert ! video/x-raw,format=I420,width=640,height=480,framerate=30/1 ! omxh264enc control-rate=1 target-bitrate=5120000 periodicity-idr=45 inline-header=FALSE ! h264parse ! video/x-h264,stream-format=avc,alignment=au,width=640,height=480,framerate=30/1,profile=baseline ! kvssink stream-name="YourStreamName" access-key="YourAccessKey" secret-key="YourSecretKey" aws-region="YourAWSRegion"

Ejemplo 8: Transmite audio y vídeo en Raspberry Pi y Ubuntu

Descubra cómo ejecutar el comando gst-launch-1.0 para comenzar el streaming de audio y vídeo en Raspberry-PI y Ubuntu.

Ejemplo 9: Transmite audio y vídeo en macOS

Descubra cómo ejecutar el comando gst-launch-1.0 para comenzar el streaming de audio y vídeo en MacOS.

Ejemplo 10: Cargar un archivo MKV que contenga audio y vídeo

Descubra cómo ejecutar el comando gst-launch-1.0 para cargar un archivo MKV que contenga audio y vídeo.

Ejecuta el elemento GStreamer en un contenedor de Docker

Docker es una plataforma para desarrollar, implementar y ejecutar aplicaciones utilizando contenedores. El uso de Docker para crear la canalización de GStreamer estandariza el entorno operativo de Kinesis Video Streams, lo que agiliza la creación y el uso de la aplicación.

Para instalar y configurar Docker, consulte lo siguiente:

Tras instalar Docker, puede descargar el SDK para productores de C++ de Kinesis Video Streams (y el complemento GStreamer) desde Amazon Elastic Container Registry mediante el comando. docker pull

Para ejecutar GStreamer con el elemento del SDK de Kinesis Video Streams Producer como receptor en un contenedor de Docker, haga lo siguiente:

Autentica tu cliente de Docker

Autentique su cliente de Docker en el registro de Amazon ECR del que va a extraer la imagen. Debe obtener los tokens de autenticación para cada registro utilizado. Los tokens son válidos durante 12 horas. Para obtener más información, consulte Autenticación de registros en la Guía del usuario de Amazon Elastic Container Registry.

ejemplo : autenticación con Amazon ECR
aws ecr get-login-password --region us-west-2 | docker login -u AWS --password-stdin https://546150905175.dkr.ecr.us-west-2.amazonaws.com

Si la acción se realiza correctamente, se muestra el texto Login Succeeded (Inicio de sesión correcto).

Descargue la imagen de Docker para Ubuntu, macOS, Windows o Raspberry Pi

Descargue la imagen de Docker en su entorno de Docker con uno de los siguientes comandos, en función de su sistema operativo:

Descargue la imagen de Docker para Ubuntu

sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest

Descargue la imagen de Docker para macOS

sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux:latest

Descargue la imagen de Docker para Windows

docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-windows:latest

Descargue la imagen de Docker para Raspberry Pi

sudo docker pull 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi:latest

Para comprobar que la imagen se ha agregado correctamente, utilice el comando siguiente:

docker images

Ejecute la imagen de Docker

Utilice uno de los comandos siguientes para ejecutar la imagen de Docker, en función de su sistema operativo:

Ejecute la imagen de Docker en Ubuntu

sudo docker run -it --network="host" --device=/dev/video0 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash

Ejecuta la imagen de Docker en macOS

sudo docker run -it --network="host" 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-amazon-linux /bin/bash

Ejecute la imagen de Docker en Windows

docker run -it 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-windows <AWS_ACCESS_KEY_ID> <AWS_SECRET_ACCESS_KEY> <RTSP_URL> <STREAM_NAME>

Ejecute la imagen de Docker en Raspberry Pi

sudo docker run -it --device=/dev/video0 --device=/dev/vchiq -v /opt/vc:/opt/vc 546150905175.dkr.ecr.us-west-2.amazonaws.com/kinesis-video-producer-sdk-cpp-raspberry-pi /bin/bash

Docker lanza el contenedor y le presenta una línea de comandos para usar los comandos dentro del contenedor.

En el contenedor, establezca las variables de entorno utilizando el siguiente comando:

export LD_LIBRARY_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$LD_LIBRARY_PATH export PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/bin:$PATH export GST_PLUGIN_PATH=/opt/awssdk/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib:$GST_PLUGIN_PATH

Comience a transmitir desde la cámara con el gst-launch-1.0 comando apropiado para su dispositivo.

nota

En macOS, solo puede transmitir vídeo desde una cámara de red al ejecutar GStreamer en un contenedor de Docker. No es compatible el streaming de vídeo desde una cámara USB en macOS en un contenedor de Docker.

Para ver ejemplos de cómo usar el comando gst-launch-1.0 para conectarse a una cámara web local o a una cámara RTSP en red, consulte Lanzar comandos.