

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.

# Enviar datos a una transmisión de vídeo de Amazon Kinesis
<a name="gs-send-data"></a>

En esta sección se describe cómo enviar datos multimedia desde una cámara a la transmisión de vídeo de Kinesis que creó en la sección anterior. En esta sección se usa la [Utilice la biblioteca de productores de C\$1\$1](producer-sdk-cpp.md) como complemento de [Ejemplo: complemento del GStreamer SDK para productores de Kinesis Video Streams: kvssink](examples-gstreamer-plugin.md).

Para enviar contenido multimedia desde diversos dispositivos y sistemas operativos, este tutorial utiliza la biblioteca de productores de C\$1\$1 de Kinesis Video Streams [GStreamer](https://gstreamer.freedesktop.org/)y un marco multimedia de código abierto que estandariza el acceso a las cámaras y otras fuentes multimedia. 

**Topics**
+ [Cree el SDK y los ejemplos](#send-data-build-sdk)
+ [Ejecute las muestras para cargar contenido multimedia en Kinesis Video Streams](#send-data-run-samples)
+ [Revise los objetos de reconocimiento](#gs-review-acks)

## Cree el SDK y los ejemplos
<a name="send-data-build-sdk"></a>

Puede crear el SDK y las muestras en su ordenador o en AWS Cloud9. Siga los procedimientos correspondientes que se indican a continuación.

------
#### [ Build on your computer ]

Siga las instrucciones del [archivo readme](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp) para crear la biblioteca del productor y la aplicación de ejemplo.

Esto incluye:
+ Instalación de dependencias
+ Clonar el repositorio
+ **Se utiliza **CMake**para generar archivos MAKE**
+ **Construir los archivos binarios usando make**

------
#### [ Build in AWS Cloud9 ]

Siga estos procedimientos para cargar en Kinesis Video Streams AWS Cloud9 en. No necesitará descargar nada a su ordenador.

1. En el Consola de administración de AWS, abierto [AWS Cloud9](https://us-west-2.console.aws.amazon.com/cloud9control/home).

   Seleccione **Crear entorno**.

1. En la pantalla **Crear entorno**, complete lo siguiente:
   + **Nombre**: escriba un nombre para el nuevo entorno.
   + **Plataforma**: seleccione **Ubuntu Server 22.04 LTS**.

   Puede dejar los demás campos con las selecciones predeterminadas.

1. Cuando se haya creado el entorno, seleccione **Abrir** en la columna **Cloud9 IDE**.

   En la zona media inferior de la pantalla, verá. `Admin:~/environment $` Esta es la terminal AWS Cloud9 (Amazon EC2).
**nota**  
Si cierra accidentalmente la terminal, seleccione **Ventana**, **Nueva terminal**.

   Ejecute los siguientes comandos en el terminal para cambiar el volumen a 20 GiB.

   1. Descargue el script .

      ```
      wget https://awsj-iot-handson.s3-ap-northeast-1.amazonaws.com/kvs-workshop/resize_volume.sh
      ```

   1. Otorgue permisos de ejecución al script.

      ```
      chmod +x resize_volume.sh
      ```

   1. Ejecute el script.

      ```
      ./resize_volume.sh
      ```

1. Obtenga la información más reciente sobre todo el software que puede instalar o actualizar mediante la herramienta avanzada de empaquetado (APT). 

   Este comando no actualiza el software en sí, pero garantiza que el sistema sepa cuáles son las últimas versiones disponibles.

   ```
   sudo apt-get update
   ```

1. Instale las dependencias del SDK del productor de C\$1\$1.

   ```
   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
   ```

1. Usa git para clonar el SDK del productor de C\$1\$1. 

   ```
   git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
   ```

1. Prepara un directorio de compilación.

   ```
   cd amazon-kinesis-video-streams-producer-sdk-cpp
   mkdir build
   cd build
   ```

1. Se usa CMake para generar archivos MAKE. 

   ```
   cmake .. -DBUILD_GSTREAMER_PLUGIN=TRUE -DBUILD_DEPENDENCIES=OFF
   ```

   El final del resultado esperado tiene el siguiente aspecto:

   ```
   -- Build files have been written to: /home/ubuntu/environment/amazon-kinesis-video-streams-producer-sdk-cpp/build
   ```

1. Utilice make para compilar el SDK y las aplicaciones de muestra, así como para crear los ejecutables finales.

   ```
   make
   ```

   El final del resultado esperado tiene el siguiente aspecto:

   ```
   [100%] Linking CXX executable kvs_gstreamer_file_uploader_sample
   [100%] Built target kvs_gstreamer_file_uploader_sample
   ```

1. Confirme que se hayan creado los archivos de muestra. Enumere los archivos del directorio actual:

   ```
   ls
   ```

   Confirme que estén presentes los siguientes archivos:
   + kvs\$1gstreamer\$1sample
   + libgstkvssink.so

1. (Opcional) Puede añadir la configuración de la variable de entorno GST\$1PLUGIN\$1PATH al script de inicio del shell. Esto garantiza que GST\$1PLUGIN\$1PATH esté configurado correctamente durante una nueva sesión de terminal. En AWS Cloud9, el script de inicio del shell es:. `~/.bashrc`

   Ejecute el siguiente comando para agregar el comando al final del script de inicio del shell.

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

   Escriba lo siguiente para ejecutar el script de inicio del shell:

   ```
   source ~/.bashrc
   ```

   Confirme que GST\$1PLUGIN\$1PATH esté configurado.

   ```
   echo $GST_PLUGIN_PATH
   ```

   Si configuras la salida correctamente, verás la siguiente salida. Si la salida está en blanco, la variable de entorno no está configurada correctamente.

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

------

## Ejecute las muestras para cargar contenido multimedia en Kinesis Video Streams
<a name="send-data-run-samples"></a>

La aplicación de muestra no admite las credenciales de IMDS. En tu terminal, exporta AWS las credenciales de tu usuario o rol de IAM y de la región en la que se encuentra tu transmisión.

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

Si utilizas AWS credenciales temporales, exporta también tu token de sesión:

```
export AWS_SESSION_TOKEN=YourSessionToken
```

------
#### [ .mp4 files ]

Descargue un ejemplo de vídeo en formato MP4 para subirlo a Kinesis Video Streams. 

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

Especificaciones del vídeo:
+ **Resolución**: 1280 x 720 píxeles 
+ **Velocidad de fotogramas**: 30 fotogramas por segundo
+ **Duración**: 14,0 segundos
+ **Codificación de vídeo**: H.264, en la pista 1
+ **Fotogramas clave**: cada 3 segundos, lo que da como resultado una duración del fragmento (también conocida como tamaño de grupo de imágenes (GoP)) de 3 segundos, y el fragmento final dura 2 segundos.

Ejecute el siguiente comando con el nombre de la secuencia que creó anteriormente. Si aún no ha creado una transmisión, consulte[Creación de una transmisión de vídeo de Amazon Kinesis](gs-createstream.md).

```
./kvs_gstreamer_sample YourStreamName ./sample.mp4
```

------
#### [ Sample video from GStreamer ]

Utilice el siguiente comando para generar un vídeo utilizando GStreamer.

Indique GStreamer dónde ubicar el `kvssink` GStreamer complemento. En tu directorio de compilación, especifica la ruta a la carpeta que contiene el `libgstkvssink.so` archivo. 

Desde tu directorio de compilación, ejecuta el siguiente comando:

```
export GST_PLUGIN_PATH=`pwd`
```

Esta GStreamer canalización genera una transmisión de vídeo de prueba en directo con un patrón de prueba estándar que se ejecuta a 10 fotogramas por segundo con una resolución de 640 x 480 píxeles. Se añade una superposición que muestra la fecha y hora actuales del sistema. A continuación, el vídeo se codifica en formato H.264 y los fotogramas clave se generan como máximo cada 10 fotogramas, lo que da como resultado una duración del fragmento (también conocida como tamaño de grupo de imágenes (GoP)) de 1 segundo. `kvssink`toma la transmisión de vídeo codificada en H.264, la empaqueta en el formato contenedor Matroska (MKV) y la carga en la transmisión de vídeo de Kinesis.

Use el siguiente 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 detener la GStreamer canalización, seleccione la ventana del terminal y pulse CTRL\$1C.**

------

**nota**  
Para obtener más información sobre el uso del GStreamer complemento para transmitir vídeo desde una transmisión RTSP desde una cámara o desde una cámara USB, consulte. [Ejemplo: complemento del GStreamer SDK para productores de Kinesis Video Streams: kvssink](examples-gstreamer-plugin.md)

## Revise los objetos de reconocimiento
<a name="gs-review-acks"></a>

Durante la carga, Kinesis Video Streams devolverá los objetos de confirmación al cliente que realiza la carga. Debería verlos impresos en el resultado del comando. Un ejemplo tiene el siguiente aspecto: 

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

Si el acuse de recibo lo `EventType` es`PERSISTED`, significa que Kinesis Video Streams ha almacenado y cifrado de forma duradera este fragmento de contenido multimedia para su recuperación, análisis y almacenamiento a largo plazo. 

Para obtener más información sobre los reconocimientos, consulte. [PutMedia](API_dataplane_PutMedia.md)