

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

# Solução de problemas do Kinesis Video Streams
<a name="troubleshooting"></a>

Use as informações a seguir para solucionar problemas comuns encontrados com o Amazon Kinesis Video Streams.

**Topics**
+ [Problemas gerais](#troubleshooting-general)
+ [Problemas de API](#troubleshooting-api)
+ [Problemas de HLS](#troubleshooting-hls)
+ [Problemas de Java](#troubleshooting-java)
+ [Problemas com a biblioteca do produtor](#troubleshooting-producer)
+ [Problemas na biblioteca do analisador de fluxo](#troubleshooting-parser)
+ [Problemas de rede](#troubleshooting-network)

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

Esta seção descreve problemas gerais que você pode encontrar ao trabalhar com o Kinesis Video Streams.

**Topics**
+ [Latência muito alta](#troubleshooting-general-latency)

### Latência muito alta
<a name="troubleshooting-general-latency"></a>

A latência pode ser causada pela duração dos fragmentos enviados ao serviço Kinesis Video Streams. Uma forma de reduzir a latência entre o produtor e o serviço é configurar o pipeline de mídia para produzir durações de fragmento mais curtas.

Para reduzir o número de quadros enviados em cada fragmento, reduza o seguinte valor em`kinesis_video_gstreamer_sample_app.cpp`:

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

**nota**  
As latências são superiores no navegador do Mozilla Firefox devido à implementação interna da renderização de vídeo.

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

Esta seção descreve os problemas de API que você pode encontrar ao trabalhar com o Kinesis Video Streams.

**Topics**
+ [Erro: "opções desconhecidas"](#troubleshooting-api-unknown-options)
+ [Erro: “Não foi possível determinar service/operation o nome a ser autorizado”](#troubleshooting-api-name-auth)
+ [Erro: "Failed to put a frame in the stream" (Falha ao inserir um quadro no streaming)](#troubleshooting-api-putframe)
+ [Erro: “O serviço fechou a conexão antes do recebimento final AckEvent ”](#troubleshooting-api-closeconnection)
+ [Erro: "STATUS\_STORE\_OUT\_OF\_MEMORY"](#troubleshooting-api-storeoutofmemory)
+ [Erro: “A credencial deve ter como escopo uma região válida”.](#troubleshoot-api-credential)

### Erro: "opções desconhecidas"
<a name="troubleshooting-api-unknown-options"></a>

`GetMedia` e `GetMediaForFragmentList` podem apresentar falha com o seguinte erro:

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

Esse erro ocorre se você configurou o AWS CLI com um `output` tipo de`json`. Reconfigure o AWS CLI com o tipo de saída padrão (`none`). Para obter informações sobre como configurar o AWS CLI, consulte [configure](https://docs.aws.amazon.com/cli/latest/reference/configure) na *Referência de AWS CLI Comandos*.

### Erro: “Não foi possível determinar service/operation o nome a ser autorizado”
<a name="troubleshooting-api-name-auth"></a>

`GetMedia` pode falhar com o erro a seguir:

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

Esse erro pode ocorrer se o endpoint não for especificado corretamente. Ao obter o endpoint, inclua o seguinte parâmetro na `GetDataEndpoint` chamada, dependendo da API a ser chamada:

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

### Erro: "Failed to put a frame in the stream" (Falha ao inserir um quadro no streaming)
<a name="troubleshooting-api-putframe"></a>

`PutMedia` pode falhar com o erro a seguir:

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

Esse erro pode ocorrer se não houver conectividade ou permissões para o serviço. Execute o seguinte no AWS CLI e verifique se as informações do stream podem ser recuperadas:

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

Se a chamada falhar, consulte [Solução de problemas de AWS CLI erros](https://docs.aws.amazon.com/cli/latest/userguide/troubleshooting.html) para obter mais informações.

### Erro: “O serviço fechou a conexão antes do recebimento final AckEvent ”
<a name="troubleshooting-api-closeconnection"></a>

`PutMedia` pode falhar com o erro a seguir:

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

Esse erro pode ocorrer se `PushbackInputStream` for implementado inadequadamente. Verifique se os `unread()` métodos foram implementados corretamente.

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

`PutMedia` pode falhar com o erro a seguir:

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

Esse erro ocorre quando o armazenamento de conteúdo não está alocado com dimensões suficientes. Para aumentar o tamanho do armazenamento de conteúdo, aumente o valor de `StorageInfo.storageSize`. Para obter mais informações, consulte [StorageInfo](producer-reference-structures-producer.md#producer-reference-structures-producer-storageinfo).

### Erro: “A credencial deve ter como escopo uma região válida”.
<a name="troubleshoot-api-credential"></a>

Esse erro ocorre se a região de assinatura não corresponder à região do endpoint. 

Por exemplo, se você especificar `us-west-2` como sua região de assinatura, mas tentar se conectar ao endpoint `kinesisvideo.us-east-1.amazonaws.com` (`us-east-1`), você receberá esse erro.

Em alguns aplicativos, como [kvssink](examples-gstreamer-plugin.md), o padrão da cadeia de fallback da região é. `us-west-2` Verifique se você configurou sua região corretamente de acordo com o aplicativo que você está usando.

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

Se o stream de vídeo não for reproduzido corretamente, consulte[Solução de problemas de HLS](hls-playback.md#how-hls-ex1-ts).

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

Esta seção descreve como solucionar problemas comuns de Java encontrados ao trabalhar com o Kinesis Video Streams.

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

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

Para solucionar problemas com amostras e bibliotecas de Java, é útil ativar e examinar os registros de depuração. Para habilitar logs de depuração, faça o seguinte:

1. Adicione `log4j` ao arquivo `pom.xml``` no nó `dependencies`: 

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

1. No diretório `target/classes`, crie um arquivo denominado `log4j.properties` com o conteúdo a seguir:

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

Os logs de depuração são impressos no console do IDE.

## Problemas com a biblioteca do produtor
<a name="troubleshooting-producer"></a>

Esta seção descreve problemas que você pode encontrar ao trabalhar com o [Faça o upload para o Kinesis Video Streams](producer-sdk.md).

**Topics**
+ [Não é possível compilar o SDK do produtor](#troubleshooting-producer-compile)
+ [O streaming de vídeo não aparece no console](#troubleshooting-producer-console)
+ [Erro: “O token de segurança incluído na solicitação é inválido” ao transmitir dados usando o aplicativo de GStreamer demonstração](#troubleshooting-producer-general-securitytoken)
+ [Erro: "falha ao enviar quadro ao cliente de vídeo do Kinesis"](#troubleshooting-producer-failed-frame-client)
+ [GStreamer o aplicativo é interrompido com a mensagem “streaming interrompido, motivo não negociado” no OS X](#troubleshooting-producer-failed-stream-osx)
+ [Erro: “Falha na alocação da pilha” ao criar o Kinesis Video Client em uma demonstração no GStreamer Raspberry Pi](#troubleshooting-producer-raspberrypi-heap)
+ [Erro: “Instrução ilegal” ao executar a GStreamer demonstração no Raspberry Pi](#troubleshooting-producer-raspberrypi-illegalinstruction)
+ [A câmera não carrega no Raspberry Pi](#troubleshooting-producer-raspberrypi-camera)
+ [Não é possível encontrar a câmera no macOS High Sierra](#troubleshooting-producer-sierra-camera)
+ [Arquivo jni.h não encontrado durante a compilação no macOS High Sierra](#troubleshooting-producer-sierra-compile)
+ [Erros de curl ao executar o aplicativo de GStreamer demonstração](#troubleshooting-producer-curl)
+ [Declaração de time stamp/intervalo no tempo de execução no Raspberry Pi](#troubleshooting-producer-raspberrypi-timestamp-assert)
+ [Declaração em gst\_value\_set\_fraction\_range\_full no Raspberry Pi](#troubleshooting-producer-raspberrypi-gst-assert)
+ [Erro STATUS\_MKV\_INVALID\_ANNEXB\_NALU\_IN\_FRAME\_DATA (0x3200000d) no Android](#troubleshooting-producer-android-invalid-annexb)
+ [A duração máxima do fragmento foi atingida (erro)](#troubleshooting-producer-maxfragmentduration)
+ [Erro "Invalid thing name passed" ao usar a autorização da IoT](#troubleshooting-producer-thingname)

### Não é possível compilar o SDK do produtor
<a name="troubleshooting-producer-compile"></a>

Verifique se as bibliotecas necessárias estão no caminho. Para verificá-las, use o seguinte comando:

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

### O streaming de vídeo não aparece no console
<a name="troubleshooting-producer-console"></a>

Para exibir o fluxo de vídeo no console, ele deve ser codificado no formato AvCC usando H.264. Se o stream não for exibido, verifique o seguinte:
+ Seus [Sinalizadores de adaptação NAL](producer-reference-nal.md) estão definidos como `NAL_ADAPTATION_ANNEXB_NALS | NAL_ADAPTATION_ANNEXB_CPD_NALS` se o stream original estiver no formato Annex-B. Este é o valor padrão no construtor `StreamDefinition`.
+ Você está fornecendo os dados privados do codec corretamente. Para H.264, esse é o conjunto de parâmetros de sequência (SPS) e o conjunto de parâmetros de imagem (PPS). Dependendo de sua origem de mídia, esses dados podem ser recuperados da origem de mídia separadamente ou codificados no quadro.

  Muitos streams elementares estão no seguinte formato, em que `Ab` é o código de início de Annex-B (001 ou 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)
  ```

  O CPD (Codec Private Data), se o H.264 estiver no fluxo como SPS e PPS, pode ser adaptado ao formato AvCC. A menos que o pipeline de mídia forneça o CPD separadamente, o aplicativo pode extrair o CPD do quadro procurando o primeiro quadro Idr (que deve conter o SPS e o PPS), extrair os dois NALUs (que serão Ab (Sps) Ab (Pps)) e configurá-lo no CPD em. `StreamDefinition`

### Erro: “O token de segurança incluído na solicitação é inválido” ao transmitir dados usando o aplicativo de GStreamer demonstração
<a name="troubleshooting-producer-general-securitytoken"></a>

Se esse erro ocorrer, isso significa que existe um problema com suas credenciais. Verifique o seguinte:
+ Se estiver usando credenciais temporárias, você precisa especifica o token da sessão.
+ Verifique se suas credenciais temporárias expiraram.
+ Verifique se você tem os direitos apropriados configurados.
+ No macOS, verifique se você tem credenciais armazenadas em cache no Keychain.

### Erro: "falha ao enviar quadro ao cliente de vídeo do Kinesis"
<a name="troubleshooting-producer-failed-frame-client"></a>

Esse erro ocorre, pois os time stamps não estão definidos corretamente no streaming de origem. Faça o seguinte:
+ Use o exemplo de SDK mais recente, que pode ter uma atualização que corrige o problema.
+ Defina o fluxo de alta qualidade para uma taxa de bits mais alta e corrija qualquer instabilidade no fluxo de origem, se a câmera suportar isso.

### GStreamer o aplicativo é interrompido com a mensagem “streaming interrompido, motivo não negociado” no OS X
<a name="troubleshooting-producer-failed-stream-osx"></a>

O streaming pode ser interrompido no OS X com a seguinte mensagem:

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

Uma possível solução alternativa para isso é remover os parâmetros de taxa de quadros da `gst_caps_new_simple` chamada em: `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);
```

### Erro: “Falha na alocação da pilha” ao criar o Kinesis Video Client em uma demonstração no GStreamer Raspberry Pi
<a name="troubleshooting-producer-raspberrypi-heap"></a>

O aplicativo de GStreamer amostra tenta alocar 512 MB de RAM, o que pode não estar disponível em seu sistema. Você pode reduzir essa alocação, diminuindo o seguinte valor em `KinesisVideoProducer.cpp`:

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

### Erro: “Instrução ilegal” ao executar a GStreamer demonstração no Raspberry Pi
<a name="troubleshooting-producer-raspberrypi-illegalinstruction"></a>

Se você encontrar o erro a seguir ao executar a GStreamer demonstração, verifique se você compilou o aplicativo para a versão correta do seu dispositivo. (Por exemplo, verifique se você não está compilando para o Raspberry Pi 3 quando estiver executando o Raspberry Pi 2.)

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

### A câmera não carrega no Raspberry Pi
<a name="troubleshooting-producer-raspberrypi-camera"></a>

Para verificar se a câmera está carregada, execute o seguinte:

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

Se nada for encontrado, execute o seguinte:

```
vcgencmd get_camera
```

A saída deve ser semelhante à seguinte:

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

Se o driver não detectar a câmera, faça o seguinte:

1. Verifique a configuração da câmera física e se ela está conectada corretamente.

1. Execute os comandos a seguir para atualizar o firmware:

   ```
   sudo rpi-update
   ```

1. Reinicie o dispositivo.

1. Execute os comandos a seguir para carregar o driver:

   ```
   sudo modprobe bcm2835-v4l2
   ```

1. Verifique se a câmera foi detectada:

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

### Não é possível encontrar a câmera no macOS High Sierra
<a name="troubleshooting-producer-sierra-camera"></a>

No macOS High Sierra, o aplicativo de demonstração não consegue encontrar a câmera quando existe mais de uma câmera disponível.

### Arquivo jni.h não encontrado durante a compilação no macOS High Sierra
<a name="troubleshooting-producer-sierra-compile"></a>

Para resolver esse erro, atualize sua instalação do Xcode para a versão mais recente.

### Erros de curl ao executar o aplicativo de GStreamer demonstração
<a name="troubleshooting-producer-curl"></a>

Para resolver erros de curl ao executar o aplicativo de GStreamer demonstração, copie [esse arquivo de certificado](https://www.amazontrust.com/repository/SFSRootCAG2.pem) para o. `/etc/ssl/cert.pem`

### Declaração de time stamp/intervalo no tempo de execução no Raspberry Pi
<a name="troubleshooting-producer-raspberrypi-timestamp-assert"></a>

Se uma declaração de time stamp/intervalo ocorrer no tempo de execução, atualize o firmware e reinicie o dispositivo:

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

### Declaração em gst\_value\_set\_fraction\_range\_full no Raspberry Pi
<a name="troubleshooting-producer-raspberrypi-gst-assert"></a>

A seguinte declaração será exibida se o serviço `uv4l` estiver em execução: 

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

Se isso ocorrer, interrompa o serviço `uv4l` e reinicie o aplicativo.

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

O seguinte erro será exibido se o [Sinalizadores de adaptação NAL](producer-reference-nal.md) estiver incorreto para o streaming de mídia: 

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

Se esse erro ocorrer, forneça o sinalizador `.withNalAdaptationFlags` correto para a mídia (por exemplo, `NAL_ADAPTATION_ANNEXB_CPD_NALS`). Forneça esse sinalizador na seguinte linha do [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)

### A duração máxima do fragmento foi atingida (erro)
<a name="troubleshooting-producer-maxfragmentduration"></a>

Esse erro ocorre quando um fragmento de mídia em um streaming excede o limite máximo de duração do fragmento. Veja o limite máximo de duração do fragmento na [Cotas de serviços de API de mídia e mídia arquivada](limits.md#limits-akv-data) seção.

Para resolver esse problema, tente o seguinte:
+ Se você estiver usando uma webcam/USB câmera, faça o seguinte:
  + Se você estiver usando fragmentação baseada em quadros-chave, configure o codificador para fornecer quadros-chave em 10 segundos.
  + Se você não estiver usando a fragmentação baseada em quadros-chave, ao definir o stream em[Escreva e examine o código](producersdk-cpp-write.md), defina o limite máximo de duração do fragmento para um valor inferior a 10 segundos.
  + Se você estiver usando codificadores de software (como x264) no GStreamer pipeline, você pode definir o key-int-max atributo para um valor em 10 segundos. Por exemplo, key-int-max defina como 60, com fps definido como 30, para ativar quadros-chave a cada 2 segundos.
+ Se você estiver usando uma câmera RPI, defina o atributo keyframe-interval para ser inferior a 10 segundos.
+ Se você estiver usando uma câmera IP (RTSP), defina o tamanho do GOP para 60. 

### Erro "Invalid thing name passed" ao usar a autorização da IoT
<a name="troubleshooting-producer-thingname"></a>

Para evitar esse erro (`HTTP Error 403: Response: {"message":"Invalid thing name passed"}`) ao usar credenciais de IoT para autorização, certifique-se de que o valor de `stream-name` (um parâmetro obrigatório do `kvssink` elemento) seja idêntico ao valor de. `iot-thingname` Para obter mais informações, consulte [GStreamer referência do parâmetro do elemento](examples-gstreamer-plugin-parameters.md).

## Problemas na biblioteca do analisador de fluxo
<a name="troubleshooting-parser"></a>

Esta seção descreve problemas que você pode encontrar ao trabalhar com o [Transmita usando a biblioteca de analisadores](parser-library.md).

**Topics**
+ [Não é possível acessar um quadro único do streaming](#troubleshooting-parser-frame)
+ [Erro na decodificação de fragmentos](#troubleshooting-parser-fragment)

### Não é possível acessar um quadro único do streaming
<a name="troubleshooting-parser-frame"></a>

Para acessar um único quadro de uma fonte de streaming em seu aplicativo consumidor, verifique se o stream contém os dados privados corretos do codec. Para obter mais informações sobre o formato dos dados em um stream, consulte [Modelo de dados](how-data.md). 

[Para saber como usar dados privados do codec para acessar um quadro, consulte o seguinte arquivo de teste no GitHub site: KinesisVideoRendererExampleTest .java](https://github.com/aws/amazon-kinesis-video-streams-parser-library/blob/master/src/test/java/com/amazonaws/kinesisvideo/parser/examples/KinesisVideoRendererExampleTest.java)

### Erro na decodificação de fragmentos
<a name="troubleshooting-parser-fragment"></a>

Se seus fragmentos não estão codificados corretamente em um formato H.264 e no nível ao qual o navegador oferece suporte, você pode ver o seguinte erro ao executar seu streaming no console:

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

Se isso ocorrer, verifique se:
+ A resolução dos quadros corresponde com a resolução especificada nos dados privados do codec.
+ O perfil H.264 e o nível dos quadros codificados correspondem com o nível e o perfil especificado nos dados privados do codec.
+ O navegador suporta a profile/level combinação. A maioria dos navegadores atuais são compatíveis com todas as combinações de nível e perfil.
+ Os time stamps são precisos e estão na ordem correta, e nenhum time stamp duplicado está sendo criado.
+ O aplicativo está codificando os dados do quadro usando o formato H.264.

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

Se você encontrar erros de conexão, como “Tempo limite de conexão” ou “Falha na conexão”, ao tentar se conectar ao Kinesis Video Streams, isso pode ser devido a restrições de intervalo de endereços IP na sua configuração de rede.

[Se sua configuração tiver restrições de intervalo de endereços IP para o Kinesis Video Streams, atualize sua configuração de rede para permitir os intervalos de endereços IP do Kinesis Video Streams.](https://ip-ranges.amazonaws.com/ip-ranges.json)

**Importante**  
A lista de intervalos de IP não é uma lista completa dos endereços IP do Kinesis Video Streams. Inclua os intervalos de endereços IP que você vê e esteja ciente de que os endereços IP podem mudar com o tempo.

Para obter mais informações, consulte [Intervalos de AWS IP](https://docs.aws.amazon.com//vpc/latest/userguide/aws-ip-ranges.html). Para ser notificado quando os intervalos de IP mudarem, siga o [procedimento de assinatura](https://docs.aws.amazon.com//vpc/latest/userguide/aws-ip-ranges.html#subscribe-notifications).