

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.

# Solución de problemas de Kinesis Video Streams
<a name="troubleshooting"></a>

Utilice la siguiente información para solucionar los problemas habituales que se producen con Amazon Kinesis Video Streams.

**Topics**
+ [Problemas generales](#troubleshooting-general)
+ [Problemas con la API](#troubleshooting-api)
+ [Problemas de HLS](#troubleshooting-hls)
+ [Problemas con Java](#troubleshooting-java)
+ [Problemas con la biblioteca del productor](#troubleshooting-producer)
+ [Problemas con la biblioteca de analizadores de flujo](#troubleshooting-parser)
+ [Problemas de red](#troubleshooting-network)

## Problemas generales
<a name="troubleshooting-general"></a>

En esta sección se describen los problemas generales que puede encontrar al trabajar con Kinesis Video Streams.

**Topics**
+ [Latencia demasiado alta](#troubleshooting-general-latency)

### Latencia demasiado alta
<a name="troubleshooting-general-latency"></a>

La latencia puede deberse a la duración de los fragmentos que se envían al servicio Kinesis Video Streams. Una forma de reducir la latencia entre el productor y el servicio consiste en configurar la canalización de medios para que genere fragmentos de menor duración.

Para reducir el número de fotogramas enviados en cada fragmento, reduzca el siguiente valor en`kinesis_video_gstreamer_sample_app.cpp`:

```
g_object_set(G_OBJECT (data.encoder), "bframes", 0, "key-int-max", {{45}}, "bitrate", 512, NULL);
```

**nota**  
Las latencias son más altas en el navegador Mozilla Firefox debido a la implementación interna de la representación de vídeo.

## Problemas con la API
<a name="troubleshooting-api"></a>

En esta sección se describen los problemas de API que puede encontrar al trabajar con Kinesis Video Streams.

**Topics**
+ [Error: "Opciones desconocidas"](#troubleshooting-api-unknown-options)
+ [Error: «No se puede determinar el service/operation nombre que se va a autorizar»](#troubleshooting-api-name-auth)
+ [Error: "Failed to put a frame in the stream" (Error al colocar un fotograma en la transmisión)](#troubleshooting-api-putframe)
+ [Error: «El servicio cerró la conexión antes de recibir AckEvent la conexión definitiva»](#troubleshooting-api-closeconnection)
+ [Error: "STATUS\_STORE\_OUT\_OF\_MEMORY"](#troubleshooting-api-storeoutofmemory)
+ [Error: «La credencial debe estar limitada a una región válida».](#troubleshoot-api-credential)

### Error: "Opciones desconocidas"
<a name="troubleshooting-api-unknown-options"></a>

`GetMedia` y `GetMediaForFragmentList` pueden generar el siguiente error:

```
Unknown options: <filename>.mkv
```

Este error se produce si lo configuró AWS CLI con un `output` tipo de`json`. Vuelva a AWS CLI configurarlo con el tipo de salida predeterminado (`none`). Para obtener información sobre cómo configurar el AWS CLI, consulte [configure](https://docs.aws.amazon.com/cli/latest/reference/configure) en la *Referencia de AWS CLI comandos*.

### Error: «No se puede determinar el service/operation nombre que se va a autorizar»
<a name="troubleshooting-api-name-auth"></a>

`GetMedia` puede generar el siguiente error:

```
Unable to determine service/operation name to be authorized
```

Este error podría producirse si no se especifica correctamente el punto de enlace. Cuando accedas al punto final, asegúrate de incluir el siguiente parámetro en la `GetDataEndpoint` llamada, en función de la API a la que se vaya a llamar:

```
--api-name GET_MEDIA
--api-name PUT_MEDIA
--api-name GET_MEDIA_FOR_FRAGMENT_LIST
--api-name LIST_FRAGMENTS
```

### Error: "Failed to put a frame in the stream" (Error al colocar un fotograma en la transmisión)
<a name="troubleshooting-api-putframe"></a>

`PutMedia` puede generar el siguiente error:

```
Failed to put a frame in the stream
```

Este error podría producirse si la conectividad o los permisos no están disponibles para el servicio. Ejecuta lo siguiente en y comprueba que se pueda recuperar la información de la transmisión: AWS CLI

```
aws kinesisvideo describe-stream --stream-name {{StreamName}} --endpoint {{https://ServiceEndpoint.kinesisvideo.region.amazonaws.com}}
```

Si la llamada falla, consulta [Solución de AWS CLI errores](https://docs.aws.amazon.com/cli/latest/userguide/troubleshooting.html) para obtener más información.

### Error: «El servicio cerró la conexión antes de recibir AckEvent la conexión definitiva»
<a name="troubleshooting-api-closeconnection"></a>

`PutMedia` puede generar el siguiente error:

```
com.amazonaws.SdkClientException: Service closed connection before final AckEvent was received
```

Este error podría producirse si `PushbackInputStream` no está implementado correctamente. Compruebe que los `unread()` métodos estén implementados correctamente.

### Error: "STATUS\_STORE\_OUT\_OF\_MEMORY"
<a name="troubleshooting-api-storeoutofmemory"></a>

`PutMedia` puede generar el siguiente error:

```
The content store is out of memory.
```

Este error se produce cuando el almacén de contenido no se asigna con tamaño suficiente. Para aumentar el tamaño del almacén de contenido, aumente el valor de `StorageInfo.storageSize`. Para obtener más información, consulte [StorageInfo](producer-reference-structures-producer.md#producer-reference-structures-producer-storageinfo).

### Error: «La credencial debe estar limitada a una región válida».
<a name="troubleshoot-api-credential"></a>

Este error se produce si la región de firma no coincide con la región del punto final. 

Por ejemplo, si especificas `us-west-2` como región de firma, pero intentas conectarte al punto final `kinesisvideo.us-east-1.amazonaws.com` (`us-east-1`), recibirás este error.

En algunas aplicaciones, como [kvssink](examples-gstreamer-plugin.md), la cadena alternativa de regiones es la predeterminada. `us-west-2` Comprueba que has configurado tu región correctamente según la aplicación que estés utilizando.

## Problemas de HLS
<a name="troubleshooting-hls"></a>

Si la transmisión de vídeo no se reproduce correctamente, consulte[Solución de problemas de HLS](hls-playback.md#how-hls-ex1-ts).

## Problemas con Java
<a name="troubleshooting-java"></a>

En esta sección se describe cómo solucionar los problemas comunes de Java que se producen al trabajar con Kinesis Video Streams.

**Topics**
+ [Habilitar los logs de Java](#troubleshooting-java-log)

### Habilitar los logs de Java
<a name="troubleshooting-java-log"></a>

Para solucionar problemas con las bibliotecas y muestras de Java, resulta útil habilitar y examinar los registros de depuración. Para habilitar los logs de depuración, haga lo siguiente:

1. Agregue `log4j` al archivo `pom.xml``` en el nodo `dependencies`: 

   ```
   <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
       <version>1.2.17</version>
   </dependency>
   ```

1. En el directorio `target/classes`, cree un archivo denominado `log4j.properties` con el contenido siguiente:

   ```
   # Root logger option
   log4j.rootLogger=DEBUG, stdout
   
   # Redirect log messages to console
   log4j.appender.stdout=org.apache.log4j.ConsoleAppender
   log4j.appender.stdout.Target=System.out
   log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
   log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
   
   log4j.logger.org.apache.http.wire=DEBUG
   ```

Los logs de depuración imprimirán en la consola del IDE.

## Problemas con la biblioteca del productor
<a name="troubleshooting-producer"></a>

En esta sección se describen los problemas que podrían producirse cuando se utiliza [Cargar a Kinesis Video Streams](producer-sdk.md).

**Topics**
+ [No se puede compilar el SDK del productor](#troubleshooting-producer-compile)
+ [La transmisión de vídeo no aparece en la consola](#troubleshooting-producer-console)
+ [Error: «El token de seguridad incluido en la solicitud no es válido» al transmitir datos mediante la aplicación de demostración GStreamer](#troubleshooting-producer-general-securitytoken)
+ [Error: "Failed to submit frame to Kinesis Video client" (No se pudo enviar el fotograma al cliente de Kinesis Video)](#troubleshooting-producer-failed-frame-client)
+ [GStreamer la aplicación se detiene con el mensaje «la transmisión se ha detenido, no se ha negociado el motivo» en OS X](#troubleshooting-producer-failed-stream-osx)
+ [Error: «No se pudo asignar el montón» al crear el Kinesis Video Client GStreamer en una demostración en Raspberry Pi](#troubleshooting-producer-raspberrypi-heap)
+ [Error: «Instrucción ilegal» al ejecutar la GStreamer demostración en Raspberry Pi](#troubleshooting-producer-raspberrypi-illegalinstruction)
+ [La cámara no se carga en un dispositivo Raspberry Pi](#troubleshooting-producer-raspberrypi-camera)
+ [No se puede encontrar la cámara en macOS High Sierra](#troubleshooting-producer-sierra-camera)
+ [No se ha encontrado el archivo jni.h al compilar en macOS High Sierra](#troubleshooting-producer-sierra-compile)
+ [Errores de Curl al ejecutar la aplicación de demostración GStreamer](#troubleshooting-producer-curl)
+ [Aserción de rango/marca temporal en el tiempo de ejecución en un dispositivo Raspberry Pi](#troubleshooting-producer-raspberrypi-timestamp-assert)
+ [Aserción en gst\_value\_set\_fraction\_range\_full en un dispositivo Raspberry Pi](#troubleshooting-producer-raspberrypi-gst-assert)
+ [Error STATUS\_MKV\_INVALID\_ANNEXB\_NALU\_IN\_FRAME\_DATA (0x3200000d) en Android](#troubleshooting-producer-android-invalid-annexb)
+ [Error al alcanzar la duración máxima del fragmento](#troubleshooting-producer-maxfragmentduration)
+ [Error «Nombre de objeto no válido pasado» al utilizar la autorización de IoT](#troubleshooting-producer-thingname)

### No se puede compilar el SDK del productor
<a name="troubleshooting-producer-compile"></a>

Compruebe que las bibliotecas necesarias se encuentran en la ruta. Para ello, utilice el comando siguiente:

```
env | grep LD_LIBRARY_PATH
LD_LIBRARY_PATH=/home/local/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp/kinesis-video-native-build/downloads/local/lib
```

### La transmisión de vídeo no aparece en la consola
<a name="troubleshooting-producer-console"></a>

Para mostrar la secuencia de vídeo en la consola, debe codificarse mediante H.264 en formato AvCC. Si no aparece la secuencia , verifique lo siguiente:
+ Su [Banderas de adaptación NAL](producer-reference-nal.md) se establece en `NAL_ADAPTATION_ANNEXB_NALS | NAL_ADAPTATION_ANNEXB_CPD_NALS` si la secuencia original está en formato Anexo B. Este es el valor predeterminado en el constructor `StreamDefinition`.
+ Está facilitando los datos privados del códec correctamente. Para H.264, estos son el conjunto de parámetros de secuencia (SPS) y el conjunto de parámetros de imagen (PPS). Dependiendo del origen de medios, estos datos se pueden recuperar del origen multimedia por separado o codificados en el fotograma.

  Muchas secuencias elementales tienen el siguiente formato, donde `Ab` es el código de inicio de Anexo B (001 o 0001):

  ```
  Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)…. Ab(Sps)Ab(Pps)Ab(I-frame)Ab(P/B-frame) Ab(P/B-frame)
  ```

  El CPD (códec de datos privados), si el H.264 está en la transmisión como SPS y PPS, se puede adaptar al formato AVCC. A menos que la canalización multimedia proporcione el CPD por separado, la aplicación puede extraer el CPD del fotograma buscando el primer fotograma Idr (que debe contener el SPS y el PPS), extraer los dos NALUs (que será Ab (Sps) Ab (Pps)) y colocarlo en el CPD`StreamDefinition`.

### Error: «El token de seguridad incluido en la solicitud no es válido» al transmitir datos mediante la aplicación de demostración GStreamer
<a name="troubleshooting-producer-general-securitytoken"></a>

Si se produce este error, existe un problema con las credenciales. Compruebe lo siguiente:
+ Si está utilizando credenciales temporales, debe especificar el token de sesión.
+ Compruebe que las credenciales temporales no hayan caducado.
+ Compruebe que tiene configurados los derechos adecuados.
+ En macOS, verifique que no tiene credenciales almacenadas en caché en Keychain.

### Error: "Failed to submit frame to Kinesis Video client" (No se pudo enviar el fotograma al cliente de Kinesis Video)
<a name="troubleshooting-producer-failed-frame-client"></a>

Si se produce este error, las marcas temporales no están configuradas correctamente en la secuencia de origen. Pruebe lo siguiente:
+ Utilice la muestra de SDK más reciente, ya que es posible que incluya una actualización que solucione el problema.
+ Ajuste la transmisión de alta calidad a una velocidad de bits más alta y corrija cualquier fluctuación en la transmisión de origen si la cámara lo permite.

### GStreamer la aplicación se detiene con el mensaje «la transmisión se ha detenido, no se ha negociado el motivo» en OS X
<a name="troubleshooting-producer-failed-stream-osx"></a>

El streaming puede detenerse en OS X con el siguiente mensaje:

```
Debugging information: gstbasesrc.c(2939): void gst_base_src_loop(GstPad *) (): /GstPipeline:test-pipeline/GstAutoVideoSrc:source/GstAVFVideoSrc:source-actual-src-avfvide:
streaming stopped, reason not-negotiated (-4)
```

Una posible solución para esto es eliminar los parámetros de velocidad de fotogramas de la `gst_caps_new_simple` llamada en: `kinesis_video_gstreamer_sample_app.cpp`

```
GstCaps *h264_caps = gst_caps_new_simple("video/x-h264",
                                             "profile", G_TYPE_STRING, "baseline",
                                             "stream-format", G_TYPE_STRING, "avc",
                                             "alignment", G_TYPE_STRING, "au",
                                             "width", GST_TYPE_INT_RANGE, 320, 1920,
                                             "height", GST_TYPE_INT_RANGE, 240, 1080,
                                             {{"framerate", GST_TYPE_FRACTION_RANGE, 0, 1, 30, 1,}}
                                             NULL);
```

### Error: «No se pudo asignar el montón» al crear el Kinesis Video Client GStreamer en una demostración en Raspberry Pi
<a name="troubleshooting-producer-raspberrypi-heap"></a>

La aplicación GStreamer de ejemplo intenta asignar 512 MB de RAM, que podrían no estar disponibles en su sistema. Puede reducir esta asignación si reduce el valor siguiente en `KinesisVideoProducer.cpp`:

```
device_info.storageInfo.storageSize = {{512}} * 1024 * 1024;
```

### Error: «Instrucción ilegal» al ejecutar la GStreamer demostración en Raspberry Pi
<a name="troubleshooting-producer-raspberrypi-illegalinstruction"></a>

Si se produce el siguiente error al ejecutar la GStreamer demostración, compruebe que ha compilado la aplicación para la versión correcta de su dispositivo. (Por ejemplo, comprueba que no estás compilando para Raspberry Pi 3 cuando utilizas Raspberry Pi 2).

```
INFO - Initializing curl.
Illegal instruction
```

### La cámara no se carga en un dispositivo Raspberry Pi
<a name="troubleshooting-producer-raspberrypi-camera"></a>

Para comprobar si se ha cargado la cámara, ejecute lo siguiente:

```
ls /dev/video*
```

Si no encuentra nada, ejecute lo siguiente:

```
vcgencmd get_camera
```

El resultado debería tener un aspecto similar al siguiente:

```
supported=1 detected=1
```

Si el controlador no detecta la cámara, haga lo siguiente:

1. Compruebe la configuración física de la cámara y verifique que está conectada correctamente.

1. Ejecute lo siguiente para actualizar el firmware:

   ```
   sudo rpi-update
   ```

1. Reinicie el dispositivo.

1. Ejecute lo siguiente para cargar el controlador:

   ```
   sudo modprobe bcm2835-v4l2
   ```

1. Compruebe que la cámara se ha detectado:

   ```
   ls /dev/video*
   ```

### No se puede encontrar la cámara en macOS High Sierra
<a name="troubleshooting-producer-sierra-camera"></a>

En macOS High Sierra, la aplicación de demostración no encuentra la cámara si hay más de una cámara disponible.

### No se ha encontrado el archivo jni.h al compilar en macOS High Sierra
<a name="troubleshooting-producer-sierra-compile"></a>

Para solucionar este error, actualice su instalación de Xcode a la versión más reciente.

### Errores de Curl al ejecutar la aplicación de demostración GStreamer
<a name="troubleshooting-producer-curl"></a>

Para resolver los errores de curl al ejecutar la aplicación de GStreamer demostración, copie [este archivo de certificado](https://www.amazontrust.com/repository/SFSRootCAG2.pem) en. `/etc/ssl/cert.pem`

### Aserción de rango/marca temporal en el tiempo de ejecución en un dispositivo Raspberry Pi
<a name="troubleshooting-producer-raspberrypi-timestamp-assert"></a>

Si se produce una aserción de rango o de marca temporal en el tiempo de ejecución, actualice el firmware y reinicie el dispositivo:

```
sudo rpi-update 
$ sudo reboot
```

### Aserción en gst\_value\_set\_fraction\_range\_full en un dispositivo Raspberry Pi
<a name="troubleshooting-producer-raspberrypi-gst-assert"></a>

La siguiente aserción aparece si se está ejecutando el servicio `uv4l`: 

```
gst_util_fraction_compare (numerator_start, denominator_start, numerator_end, denominator_end) < 0' failed
```

Si ocurre esto, detenga el servicio `uv4l` y reinicie la aplicación.

### Error STATUS\_MKV\_INVALID\_ANNEXB\_NALU\_IN\_FRAME\_DATA (0x3200000d) en Android
<a name="troubleshooting-producer-android-invalid-annexb"></a>

El siguiente error aparece si [Banderas de adaptación NAL](producer-reference-nal.md) son incorrectos para la secuencia multimedia: 

```
putKinesisVideoFrame(): Failed to put a frame with status code 0x3200000d
```

Si se produce este error, proporcione la marca `.withNalAdaptationFlags` correcta para su medio (por ejemplo, `NAL_ADAPTATION_ANNEXB_CPD_NALS`). Proporcione esta marca en la siguiente línea de la [Android](producer-sdk-android.md): 

[ https://github.com/awslabs/aws-sdk-android-samples/blob/master/AmazonKinesisVideoDemoApp/src/main/java/com/amazonaws/kinesisvideo/demoapp/fragment/StreamConfigurationFragment.java \#L169](https://github.com/awslabs/aws-sdk-android-samples/blob/master/AmazonKinesisVideoDemoApp/src/main/java/com/amazonaws/kinesisvideo/demoapp/fragment/StreamConfigurationFragment.java#L169)

### Error al alcanzar la duración máxima del fragmento
<a name="troubleshooting-producer-maxfragmentduration"></a>

Este error se produce cuando un fragmento multimedia de una secuencia supera el límite máximo de duración de fragmento. Consulte el límite máximo de duración de los fragmentos en la [Cuotas del servicio de API multimedia y multimedia archivada](limits.md#limits-akv-data) sección.

Pruebe lo siguiente para resolver este problema:
+ Si utiliza una webcam/USB cámara, realice una de las siguientes acciones:
  + Si utilizas la fragmentación basada en fotogramas clave, configura el codificador para que proporcione fotogramas clave en 10 segundos.
  + Si no utilizas la fragmentación basada en fotogramas clave, al definir la transmisión[Escribe y examina el código](producersdk-cpp-write.md), establece el límite máximo de duración del fragmento en un valor inferior a 10 segundos.
  + Si utilizas codificadores de software (como x264) en la GStreamer canalización, puedes establecer el key-int-max atributo en un valor en un plazo de 10 segundos. Por ejemplo, key-int-max configúrelo en 60, con fps en 30, para habilitar los fotogramas clave cada 2 segundos.
+ Si utilizas una cámara RPI, establece el atributo keyframe-interval en menos de 10 segundos.
+ Si utilizas una cámara IP (RTSP), establece el tamaño del GOP en 60. 

### Error «Nombre de objeto no válido pasado» al utilizar la autorización de IoT
<a name="troubleshooting-producer-thingname"></a>

Para evitar este error (`HTTP Error 403: Response: {"message":"Invalid thing name passed"}`) cuando utilice credenciales de IoT para la autorización, asegúrese de que el valor de `stream-name` (un parámetro obligatorio del `kvssink` elemento) sea idéntico al valor de`iot-thingname`. Para obtener más información, consulte [GStreamer referencia de parámetros de elementos](examples-gstreamer-plugin-parameters.md).

## Problemas con la biblioteca de analizadores de flujo
<a name="troubleshooting-parser"></a>

En esta sección se describen los problemas que podrían producirse cuando se utiliza [Transmita usando la biblioteca de analizadores](parser-library.md).

**Topics**
+ [No se puede tener acceso a un solo fotograma de la transmisión](#troubleshooting-parser-frame)
+ [Error de descodificación de fragmentos](#troubleshooting-parser-fragment)

### No se puede tener acceso a un solo fotograma de la transmisión
<a name="troubleshooting-parser-frame"></a>

Para acceder a un único fotograma desde una fuente de streaming en su aplicación de consumo, compruebe que la transmisión contenga los datos privados del códec correctos. Para obtener información sobre el formato de los datos de una transmisión, consulte [Modelo de datos](how-data.md). 

[Para aprender a usar los datos privados del códec para acceder a un marco, consulta el siguiente archivo de prueba en el GitHub sitio web: .java KinesisVideoRendererExampleTest](https://github.com/aws/amazon-kinesis-video-streams-parser-library/blob/master/src/test/java/com/amazonaws/kinesisvideo/parser/examples/KinesisVideoRendererExampleTest.java)

### Error de descodificación de fragmentos
<a name="troubleshooting-parser-fragment"></a>

Si los fragmentos no están correctamente codificados en un formato H.264 y en un nivel admitido por el navegador, es posible que aparezca el siguiente error al reproducir la transmisión en la consola:

```
Fragment Decoding Error
There was an error decoding the video data. Verify that the stream contains valid H.264 content
```

Si esto ocurre, verifique lo siguiente:
+ La resolución de los fotogramas coincide con la resolución especificada en los datos privados del códec.
+ El perfil H.264 y el nivel de los fotogramas codificados coincide con el perfil y el nivel especificados en los datos privados del códec.
+ El navegador admite esta combinación. profile/level La mayoría de los navegadores actuales admiten todas las combinaciones de perfil y nivel.
+ Las marcas temporales son precisas y están en el orden correcto, y no se crean marcas temporales duplicadas.
+ La aplicación está codificando los datos de fotogramas con el formato H.264.

## Problemas de red
<a name="troubleshooting-network"></a>

Si ve errores de conexión, como «Tiempo de espera de conexión» o «Fallo de conexión», al intentar conectarse a Kinesis Video Streams, es posible que se deba a restricciones de rango de direcciones IP en su configuración de red.

Si su configuración tiene restricciones de rango de direcciones IP para Kinesis Video Streams, actualice la configuración de red para incluir en una lista los rangos de direcciones IP de Kinesis [Video](https://ip-ranges.amazonaws.com/ip-ranges.json) Streams.

**importante**  
La lista de rangos de IP no es una lista exhaustiva de direcciones IP de Kinesis Video Streams. Incluya los rangos de direcciones IP que ve y tenga en cuenta que las direcciones IP pueden cambiar con el tiempo.

Para obtener más información, consulte [Intervalos de AWS IP](https://docs.aws.amazon.com//vpc/latest/userguide/aws-ip-ranges.html). Para recibir una notificación cuando cambien los rangos de IP, sigue el [procedimiento de suscripción](https://docs.aws.amazon.com//vpc/latest/userguide/aws-ip-ranges.html#subscribe-notifications).