

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: el complemento GStreamer del SDK para productores de Kinesis Video Streams: kvssink
<a name="examples-gstreamer-plugin"></a>

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

**Topics**
+ [Descargue, cree y configure el elemento GStreamer](#examples-gstreamer-plugin-download)
+ [Ejecuta el elemento GStreamer](#examples-gstreamer-plugin-run)
+ [Ejemplos de comandos de inicio de GStreamer](#examples-gstreamer-plugin-launch)
+ [Ejecuta el elemento GStreamer en un contenedor Docker](#examples-gstreamer-plugin-docker)
+ [Referencia de parámetros del elemento GStreamer](examples-gstreamer-plugin-parameters.md)

[GStreamer ](https://gstreamer.freedesktop.org/) es un marco multimedia popular 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 Streamer 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 con protocolo de transmisión en tiempo real (RTSP) a Kinesis Video Streams para reproducirlo, almacenarlo y analizarlo más a fondo en tiempo real o posteriormente. 

El complemento GStreamer administra automáticamente la transferencia de su transmisión de vídeo a Kinesis Video Streams al encapsular la funcionalidad proporcionada por el SDK de producción 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). A continuación, el elemento del complemento que encapsula el SDK envía 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, que normalmente está conectada a Kinesis Video Streams a través de etapas de codificación intermedias (mediante H.264 codificación). Cuando su transmisión de vídeo esté disponible como transmisión de vídeo de Kinesis, puede utilizarla [Vea la salida de las cámaras utilizando la biblioteca de analizadores](parser-library.md) para procesar, reproducir, almacenar o analizar su transmisión de vídeo.

![Vista funcional de la canalización multimedia de GStreamer para streaming de vídeo desde una cámara al servicio de .](http://docs.aws.amazon.com/es_es/kinesisvideostreams/latest/dg/images/gstreamer-pipeline.png)


## Descargue, cree y configure el elemento GStreamer
<a name="examples-gstreamer-plugin-download"></a>

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 [Descargue y configure el código de la biblioteca productora de C\+\+](producersdk-cpp-download.md).

Puede crear el sumidero GStreamer del SDK productor como una 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 tu. `GST_PLUGIN_PATH` Use el siguiente comando:

```
export GST_PLUGIN_PATH=`pwd`/build
```

**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. 

## Ejecuta el elemento GStreamer
<a name="examples-gstreamer-plugin-run"></a>

Para ejecutar GStreamer con el elemento del SDK del productor de Kinesis Video Streams como receptor, utilice el comando. `gst-launch-1.0` Utilice los elementos ascendentes que sean apropiados para que los utilice el complemento GStreamer. Por ejemplo, [v4l2src](https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2src.html?gi-language=c#v4l2src-page) para dispositivos v4l2 en sistemas Linux o [rtspsrc](https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html#rtspsrc-page) para dispositivos RTSP. Especifique `kvssink` como receptor (destino final de la canalización) para enviar vídeo al SDK Producer. 

Además de [ proporcionar credenciales ](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-gstreamer-plugin-parameters.html#credentials-to-kvssink) y [ una región](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/examples-gstreamer-plugin-parameters.html#kvssink-region), el `kvssink` elemento tiene el siguiente parámetro obligatorio:
+ `stream-name`— El nombre de las transmisiones de vídeo de Kinesis de destino.

Para obtener información acerca de los parámetros opcionales `kvssink`, consulte [Referencia de parámetros del elemento GStreamer](examples-gstreamer-plugin-parameters.md).

Para obtener la información más reciente sobre los complementos y parámetros de GStreamer, consulte [ los complementos de GStreamer. ](https://gstreamer.freedesktop.org/documentation/plugins_doc.html?gi-language=c) También puedes usar el nombre de un elemento o complemento de GStreamer `gst-inspect-1.0` seguido del nombre para imprimir su información y comprobar que está disponible en tu dispositivo:

```
gst-inspect-1.0 kvssink
```

Si la compilación `kvssink` ha fallado o GST\_PLUGIN\_PATH no está configurado correctamente, el resultado tendrá un aspecto similar al siguiente:

```
No such element or plugin 'kvssink'
```

## Ejemplos de comandos de inicio de GStreamer
<a name="examples-gstreamer-plugin-launch"></a>

Los siguientes ejemplos muestran cómo usar el complemento `kvssink` GStreamer para transmitir vídeo desde diferentes tipos de dispositivos.

### Ejemplo 1: Transmitir vídeo desde una cámara RTSP en Ubuntu
<a name="examples-gstreamer-plugin-launch-ex1"></a>

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](https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html?gi-language=c):

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

### Ejemplo 2: Codifique y transmita vídeo desde una cámara USB en Ubuntu
<a name="examples-gstreamer-plugin-launch-ex2"></a>

El siguiente comando crea una canalización de GStreamer en Ubuntu que codifica la transmisión desde una cámara USB en H.264 formato y la transmite a Kinesis Video Streams. En este ejemplo, se usa el complemento GStreamer [ v4l2src. ](https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2src.html?gi-language=c#v4l2src-page)

```
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
<a name="examples-gstreamer-plugin-launch-ex3"></a>

El siguiente comando crea una canalización de GStreamer en Ubuntu que transmite vídeo que la cámara ya ha codificado en H.264 formato a Kinesis Video Streams. En este ejemplo, se usa el complemento GStreamer [ v4l2src](https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2src.html?gi-language=c#v4l2src-page).

```
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: Transmite vídeo desde una cámara de red en macOS
<a name="examples-gstreamer-plugin-launch-ex4"></a>

El siguiente comando crea una canalización de GStreamer en macOS que transmite vídeo a Kinesis Video Streams desde una cámara en red. En este ejemplo se utiliza el complemento de GStreamer [vrtspsrcsrc](https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html#rtspsrc-page).

```
gst-launch-1.0 rtspsrc location="rtsp://YourCameraRtspUrl" short-header=TRUE ! rtph264depay ! h264parse ! 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: Transmitir vídeo desde una cámara de red en Windows
<a name="examples-gstreamer-plugin-launch-ex5"></a>

El siguiente comando crea una canalización de GStreamer en Windows que transmite vídeo a Kinesis Video Streams desde una cámara en red. En este ejemplo se utiliza el complemento de GStreamer [vrtspsrcsrc](https://gstreamer.freedesktop.org/documentation/rtsp/rtspsrc.html#rtspsrc-page).

```
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: Transmitir vídeo desde una cámara en Raspberry Pi
<a name="examples-gstreamer-plugin-launch-ex6"></a>

El siguiente comando crea una canalización de GStreamer en Raspberry Pi que transmite vídeo a Kinesis Video Streams. En este ejemplo, se usa el complemento GStreamer [ v4l2src](https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2src.html?gi-language=c#v4l2src-page).

```
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: Transmite audio y vídeo en Raspberry Pi y Ubuntu
<a name="examples-gstreamer-plugin-launch-ex7"></a>

Consulta cómo [ ejecutar el comando gst-launch-1.0 para empezar a transmitir audio y vídeo en Ubuntu. Raspberry-PI ](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/docs/linux.md#running-the-gst-launch-10-command-to-start-streaming-both-audio-and-video-in-raspberry-pi-and-ubuntu)

### Ejemplo 8: Transmite audio y vídeo desde fuentes de dispositivos en macOS
<a name="examples-gstreamer-plugin-launch-ex8"></a>

Descubra cómo [ejecutar el comando gst-launch-1.0 para comenzar el streaming de audio y vídeo en MacOS](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/docs/macos.md#running-the-gst-launch-10-command-to-start-streaming-both-audio-and-raw-video-in-mac-os).

### Ejemplo 9: Cargue un archivo MKV que contenga audio y vídeo
<a name="examples-gstreamer-plugin-launch-ex9"></a>

Descubra cómo [ejecutar el comando gst-launch-1.0 para cargar un archivo MKV que contenga audio y vídeo](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/blob/master/docs/windows.md#running-the-gst-launch-10-command-to-upload-mkv-file-that-contains-both-audio-and-video). Necesitará un archivo de prueba MKV con contenido codificado en H.264 y AAC.

## Ejecuta el elemento GStreamer en un contenedor Docker
<a name="examples-gstreamer-plugin-docker"></a>

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:
+ [Instrucciones de descarga de Docker](https://docs.docker.com/engine/install/)
+ [Introducción a Docker](https://docs.docker.com/guides/getting-started/)

Tras instalar Docker, puede descargar el SDK de Kinesis Video Streams para C\+\+ Producer (y el complemento GStreamer) de Amazon Elastic Container Registry mediante uno de los siguientes comandos. `docker pull`

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

**Topics**
+ [Autentica tu cliente de Docker](#examples-gstreamer-plugin-docker-authenticate)
+ [Descargue la imagen de Docker para Ubuntu, macOS, Windows o Raspberry Pi](#examples-gstreamer-plugin-docker-download)
+ [Ejecute la imagen de Docker](#examples-gstreamer-plugin-docker-run)

### Autentica tu cliente de Docker
<a name="examples-gstreamer-plugin-docker-authenticate"></a>

Autentique su cliente de Docker en el registro de Amazon ECR del que va a extraer la imagen. Debes obtener tokens de autenticación para cada registro que utilices. Los tokens son válidos durante 12 horas. Para obtener más información, consulte [Autenticación de registros](https://docs.aws.amazon.com/AmazonECR/latest/userguide/Registries.html#registry_auth) en la *Guía del usuario de Amazon Elastic Container Registry*.

**Example : autenticación con Amazon ECR**  
Para autenticarse con Amazon ECR, copie y pegue el siguiente comando como se muestra.  

```
sudo 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
<a name="examples-gstreamer-plugin-docker-download"></a>

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
<a name="examples-gstreamer-plugin-docker-download-ubuntu"></a>

```
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
<a name="examples-gstreamer-plugin-docker-download-macos"></a>

```
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
<a name="examples-gstreamer-plugin-docker-download-windows"></a>

```
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
<a name="examples-gstreamer-plugin-docker-download-rpi"></a>

```
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
<a name="examples-gstreamer-plugin-docker-run"></a>

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

#### Ejecuta la imagen de Docker en Ubuntu
<a name="examples-gstreamer-plugin-docker-run-ubuntu"></a>

```
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
<a name="examples-gstreamer-plugin-docker-run-macos"></a>

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

#### Ejecuta la imagen de Docker en Windows
<a name="examples-gstreamer-plugin-docker-run-windows"></a>

```
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
<a name="examples-gstreamer-plugin-docker-run-rpi"></a>

```
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 te presenta una línea de comandos para usar 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
```

Empieza a hacer streaming `kvssink` con el `gst-launch-1.0` para ejecutar una canalización adecuada para tu dispositivo y fuente de vídeo. Para ver un ejemplo de canalizaciones, consulte[Ejemplos de comandos de inicio de GStreamer](#examples-gstreamer-plugin-launch).