# Solução de problemas


Esta página aborda problemas comuns do player e da incorporação. Para problemas de envio, acesso ou conta, comece por [Solução de problemas](https://docs-br.kinescope.com/troubleshooting/resolving-issues/) na seção de diagnóstico.

| Sintoma | Tema |
| :--- | :--- |
| [O vídeo não carrega ou trava](#video-nao-carrega-ou-trava) | Reprodução |
| [O DRM não funciona no modo anônimo no Android](#drm-nao-funciona-no-modo-anonimo-no-android) | DRM |
| [A tela pode ser gravada mesmo com a proteção ativada](#tela-pode-ser-gravada-com-protecao) | DRM |
| [O DRM não funciona no Android WebView](#drm-nao-funciona-no-android-webview) | DRM |
| [O DRM não funciona no Electron](#drm-nao-funciona-no-electron) | DRM |
| [`play()` não inicia por um botão personalizado](#play-nao-inicia-por-botao-personalizado) | Reprodução automática |
| [Ocorre um `NotAllowedError`](#ocorre-notallowederror) | Reprodução automática |
| [A reprodução automática não funciona no Electron](#reproducao-automatica-nao-funciona-no-electron) | Reprodução automática |
| [Uma página com muitos players trava](#pagina-com-muitos-players-trava) | Desempenho |
| [A tela cheia não funciona em um iframe aninhado](#tela-cheia-nao-funciona-em-iframe-aninhado) | Incorporação |
| [A tela não gira em um PWA](#tela-nao-gira-em-pwa) | Incorporação |

## O vídeo não carrega ou trava {#video-nao-carrega-ou-trava}

**O que acontece.** O player abre, mas o vídeo não carrega ou a reprodução trava.

**Por quê.** Problemas de rede ou abas em segundo plano costumam consumir recursos do navegador.

**O que fazer.**

1. Verifique sua conexão com o [Speedtest](https://speedtest.kinescope.io/).
2. Feche todas as abas, exceto a do player, e recarregue a página.

## O DRM não funciona no modo anônimo no Android {#drm-nao-funciona-no-modo-anonimo-no-android}

**O que acontece.** Um vídeo protegido por Widevine não é reproduzido no modo anônimo no Android.

**Por quê.** O Chrome desativou o Widevine no modo anônimo no Android a partir da versão 62. Isso evita que os usuários percam licenças pagas ao fechar abas.

**O que fazer.** Assista a vídeos protegidos por DRM no modo normal do navegador.

Saiba mais em [Atualizações de mídia no Chrome 62](https://developer.chrome.com/blog/media-updates-in-chrome-62).

## A tela pode ser gravada mesmo com a proteção ativada {#tela-pode-ser-gravada-com-protecao}

**O que acontece.** Ainda é possível gravar a tela com o Widevine DRM ativado.

**Por quê.** Algumas propriedades CSS em um elemento pai ou no iframe podem interromper a proteção contra captura do navegador.

**O que fazer.** Verifique estes casos conhecidos:

- Um elemento pai tem `border-radius`. Defina `overflow: initial` ou `overflow: visible`.
- No Firefox para macOS, `transform` é aplicado ao player ou ao elemento `video`, ou a um ancestral com contexto de empilhamento.
- A página usa `backdrop-filter` ou `filter`.
- O `<iframe>` do player ou um elemento pai usa `aspect-ratio` ou `padding-top`.

Saiba mais no [problema do Chromium relacionado a filter](https://issues.chromium.org/issues/362007492).

## O DRM não funciona no Android WebView {#drm-nao-funciona-no-android-webview}

**O que acontece.** Um vídeo protegido não é reproduzido dentro do Android WebView.

**Por quê.** O WebView muitas vezes não é compatível com EME ou Widevine, ou essa compatibilidade está desativada.

**O que fazer.** Verifique a compatibilidade com a [demonstração do Shaka Player](https://shaka-player-demo.appspot.com/support.html). Um valor `null` indica que o recurso não é compatível. Configure o WebView ou use o navegador do sistema.

Saiba mais em [video.js #5563](https://github.com/videojs/video.js/issues/5563), [Widevine no Android WebView](https://stackoverflow.com/questions/47626857/how-to-play-widevine-drm-content-in-android-webview) e [conteúdo protegido no WebView](https://stackoverflow.com/questions/53143363/how-to-enable-protected-content-in-a-webview).

## O DRM não funciona no Electron {#drm-nao-funciona-no-electron}

**O que acontece.** Um vídeo protegido por Widevine não é reproduzido em um aplicativo Electron.

**Por quê.** Você precisa conectar e testar o CDM no Electron separadamente do Chrome convencional.

**O que fazer.** Siga o guia do Electron para testar o CDM do Widevine.

Saiba mais em [Testar o CDM do Widevine](https://www.electronjs.org/docs/latest/tutorial/testing-widevine-cdm).

## `play()` não inicia por um botão personalizado {#play-nao-inicia-por-botao-personalizado}

**O que acontece.** Um usuário clica no seu botão e você chama a API `play()`, mas a reprodução não começa.

**Por quê.** O navegador reconhece o gesto apenas quando ele chega ao elemento de mídia ou ao player. Isso faz parte da [política de reprodução automática](https://developer.chrome.com/blog/autoplay).

**O que fazer.** Garanta que o usuário clique no player. Defina `pointer-events: none` nas suas sobreposições para que o clique passe por elas.

## Ocorre um `NotAllowedError` {#ocorre-notallowederror}

**O que acontece.** O console ou a resposta da API contém `NotAllowedError` com uma mensagem como “The request is not allowed by the user agent …” ou “The request is not triggered by a user activation.”

**Por quê.** Uma API do navegador exige interação do usuário ou precisa ser executada como resultado direto de um clique ou toque.

**O que fazer.** Chame o método diretamente no manipulador de clique ou toque do usuário. Não o mova para uma cadeia adiada fora do gesto do usuário.

Saiba mais sobre [Ativação do usuário](https://developer.mozilla.org/en-US/docs/Web/Security/User_activation) na MDN.

## A reprodução automática não funciona no Electron {#reproducao-automatica-nao-funciona-no-electron}

**O que acontece.** A reprodução automática de vídeo não inicia no Electron.

**Por quê.** O Electron tem suas próprias restrições de reprodução automática de mídia, diferentes das dos navegadores convencionais.

**O que fazer.** Verifique as políticas de reprodução automática nas configurações da janela e de `webPreferences`. Consulte as soluções alternativas nas discussões abaixo.

Saiba mais em [MMM-ISS-Live #1](https://github.com/mykle1/MMM-ISS-Live/issues/1) e [cordova-electron #102](https://github.com/apache/cordova-electron/issues/102).

## Uma página com muitos players trava {#pagina-com-muitos-players-trava}

**O que acontece.** Uma página contém muitos players incorporados, e a aba fica lenta ou trava.

**Por quê.** Cada player usa recursos. Sem o carregamento sob demanda, a carga aumenta a cada player.

**O que fazer.** Use as técnicas descritas em [Otimização](https://docs-br.kinescope.com/player-docs/optimization/).

## A tela cheia não funciona em um iframe aninhado {#tela-cheia-nao-funciona-em-iframe-aninhado}

**O que acontece.** O modo de tela cheia não inicia quando o player está dentro de um iframe aninhado em outro iframe.

**Por quê.** O atributo `allow` pode não funcionar corretamente se o `<iframe>` pai não for preenchido por `src`, por exemplo, ao usar o destino de um formulário ou escrever o conteúdo diretamente.

**O que fazer.** Remova `allow` do `<iframe>` do player e mantenha apenas `allowfullscreen`. No iOS, consulte também o [Modo de pseudotela cheia](https://docs-br.kinescope.com/developer-guides/iframe-pseudo-fullscreen-on-ios/).

## A tela não gira em um PWA {#tela-nao-gira-em-pwa}

**O que acontece.** A tela não gira enquanto o player está no modo de tela cheia em um PWA.

**Por quê.** A orientação do aplicativo está fixa em `manifest.json`.

**O que fazer.** Remova a propriedade `orientation` de `manifest.json`. Depois, monitore as mudanças de tela cheia e controle o bloqueio de orientação:

```js
player.on(player.Events.FullscreenChange, (event) => {
  if (event.data.isFullscreen) {
    screen.orientation.unlock()
  } else {
    screen.orientation.lock('portrait')
  }
})
```

## Próximos passos

- [Plataformas compatíveis](https://docs-br.kinescope.com/player-docs/supported-platforms/)
- [Chat de suporte](https://t.me/kinescope_bot)

