Player: solução de problemas
Checklist do que verificar quando o vídeo não aparece ou não toca.
Antes de investigar a fundo, passe pelo checklist abaixo — ele resolve a grande maioria dos casos. Os dois primeiros itens respondem por quase todos os chamados de "o vídeo não aparece".
Checklist rápido
Para quem programa
Nada acontece e nenhum erro aparece? Confira, nesta ordem:
-
O elemento existe antes do construtor. Chamar
new SpallaPlayer('#player')antes do<div>existir no HTML falha silenciosamente em alguns fluxos — mantenha os scripts no fim do corpo da página ou espere o evento de carregamento. -
Trate a Promise da carga. Uma rejeição de
player.load(id)sem tratamento pode não aparecer em lugar nenhum:player.load('SEU_ID_AQUI').catch(console.error); -
Ligue os logs. A maioria dos problemas fica visível com estas duas linhas:
player.on('error', console.error); new SpallaPlayer('#player', { debug: 'info' });
Cenários específicos
CSP bloqueando o player
Sintoma: o player carrega, mas nunca reproduz nada, com erros de Content Security Policy no console mencionando blob: ou worker-src.
Causa: o player usa um Web Worker (criado a partir de um Blob) para transporte de rede e transmux. Uma política de CSP restritiva pode bloquear isso.
Solução: adicione blob: a worker-src (e, se aplicável, a script-src) na sua política de CSP. Se isso não for possível no seu ambiente, o arquivo wasm_exec.js que acompanha o tarball é justamente a reserva para esse caso — sem Worker disponível, o player cai automaticamente para o thread principal, sem quebrar, apenas com menos paralelismo.
Testes automatizados falham com erro de mídia
Sintoma: todo conteúdo termina em erro de mídia (MEDIA_ERROR ou equivalente), readyState do <video> fica em 0, buffered fica vazio — mesmo que o mesmo conteúdo funcione perfeitamente num Chrome normal.
Causa: o Chromium empacotado com o Playwright/Puppeteer não inclui os codecs de vídeo licenciados (H.264/AAC), que são os mais comuns em streaming HLS. E nem sempre é óbvio: MediaSource.isTypeSupported(...) pode retornar true mesmo sem o codec real disponível.
Solução: use automação apenas para validar DOM, barra de controles e menus (coisas que não dependem de decodificar vídeo de verdade). Para validar reprodução de fato, use um Chrome/Chromium instalado normalmente na máquina, fora do Playwright.
Chromecast "não funciona"
Esse sintoma tem causas bem diferentes entre si — o primeiro passo é identificar qual delas é a sua:
| O que você observa | Causa provável |
|---|---|
| Nada acontece ao clicar no botão de cast, sem erro | Verifique se há um listener de erro (player.on('error', ...)) — falhas de cast às vezes só aparecem ali |
| O botão de cast nunca aparece | Só aparece quando há um receptor Chromecast disponível na mesma rede; teste com um dispositivo real |
| Áudio toca, mas sem imagem no Chromecast | Geralmente é composição de camadas na sua própria página — confira se algum elemento seu está sobrepondo o vídeo com z-index ou fundo opaco |
| Cast conecta e desconecta com erro, em conteúdo específico | Pode ser incompatibilidade de codec/nível do aparelho com aquele conteúdo — reporte à Spalla com o ID do conteúdo |
| Funciona para VOD mas nunca para conteúdo ao vivo | Verifique a versão do player — releases muito antigas podem ter uma limitação conhecida nesse cenário |
Nunca teste Chromecast em navegador automatizado (Playwright, Puppeteer, Selenium): a descoberta de dispositivos Cast não funciona nesse contexto. Valide sempre com um dispositivo físico na mesma rede.
Aparelho de TV mostra a interface errada / controle remoto não navega
Falta deviceClass: 'tv' (e isApp: true em apps empacotados) no construtor — ou o controle remoto precisa ser registrado, no caso do Tizen. Veja o guia de apps de TV.
Informações para o suporte
Ao abrir um chamado, inclua:
- A versão do player —
SpallaPlayer.versionno console. - O localizador da tela de erro (equivale a
player.getViewId()) e a data/hora em UTC da falha. - O ID do conteúdo e o endereço da página onde ele está incorporado.
- Uma cópia do console do navegador (aba Console do
F12), se houver mensagens.