Soluções para problemas comuns com o Player SDK for Web.
Problemas relacionados à licença
Resolva problemas de licença inválida ou expirada em License FAQ.
Configuração de licença e nomes de domínio autorizados do Player SDK for Web
O Player SDK for Web valida uma License em relação ao nome de domínio da página web que hospeda o player. Use esta entrada para configurar o nome de domínio autorizado, tratar erros de License durante a inicialização e concluir a configuração da License ao atualizar o SDK.
**
license resource init errordurante a inicialização**: Esse erro geralmente ocorre quando o modo de depuração está ativado, por exemplo, com ovconsolehabilitado. Ele não afeta a reprodução normal. Desative o modo de depuração ou verifique as ferramentas de desenvolvedor do navegador (Console e Network) em busca de outros erros relatados.Página de autorização travada em um placeholder de carregamento: Se a SDK list ou a página de autorização da License não conseguir ler dados e continuar exibindo um placeholder de carregamento, crie um aplicativo Player SDK for Web e vincule o nome de domínio autorizado diretamente.
Atualização para a versão mais recente do Player SDK for Web: Substitua as URLs de referência de CSS e JavaScript. O restante do código permanece compatível, portanto, não é necessário integrar novamente as operações da API. Adicione o parâmetro
license, que contémdomainekey, à configuração de inicialização. Solicite uma License gratuita no console e vincule o nome de domínio autorizado antes de inicializar o player.
Problemas comuns entre plataformas
Para problemas independentes de plataforma, consulte Cross-platform player FAQs.
Desenvolvedores experientes também podem troubleshoot playback errors de forma independente.
Problemas de desenvolvimento
Alternância de vid e playauth no player HTML5
Chame replayByVidAndPlayAuth().
player.replayByVidAndPlayAuth(newVid, newPlayAuth)
O método replayByVidAndPlayAuth aciona o evento ready?
Sim. O evento ready é disparado assim que o player termina de inicializar o vídeo e renderizar a UI. Nesse momento, você pode chamar métodos como seek com segurança. Escute o evento com:
player.on('ready', function(){...});
Ajuste do tamanho e da posição do botão de reprodução
-
Substitua o CSS para redimensionar o botão de reprodução. Exemplo (metade do tamanho):
.prism-player .prism-big-play-btn { width: 45px; height: 45px; background-size: 128px 256px; } -
Defina as propriedades x e y de
bigPlayButtonemskinLayoutpara reposicionar o botão de reprodução.skinLayout: [ { name: "bigPlayButton", align: "blabs", x: 30, y: 80 }, { name: "H5Loading", align: "cc", }, { name: "controlBar", align: "blabs", x: 0, y: 0, children: [ { name: "progress", align: "tlabs", x: 0, y: 0 }, { name: "playButton", align: "tl", x: 15, y: 26 }, { name: "timeDisplay", align: "tl", x: 10, y: 24 }, { name: "fullScreenButton", align: "tr", x: 20, y: 25 }, { name: "volume", align: "tr", x: 20, y: 25 }, ], }, ]
Após chamar o método seek, como o player implementa o botão de pausa?
O botão reflete o estado anterior do player. Chame player.pause() após o seek para exibir o botão de pausa.
Definição da posição inicial de reprodução
Defina watchStartTime para especificar a posição inicial de reprodução.
new Aliplayer({
watchStartTime: 60, // Start playback from the 60th second.
})
Ativação de tela cheia automática na reprodução automática
Silencie o vídeo, defina autoplay como true e chame fullscreenService.requestFullScreen no listener de eventos ready.
var player = new Aliplayer(
{
id: "player-con",
source: "//example.aliyundoc.com/video/media02.mp4",
width: "100%",
height: "500px",
autoplay: true,
qualitySort: "asc",
mediaType: "video",
preload: true,
isLive: false,
},
function (player) {
player.mute();
console.log("The player is created");
}
);
player.on("ready", function () {
player.fullscreenService.requestFullScreen();
});
Qual é a diferença entre preload: true e preload: false no Aliplayer?
preload: true ativa o pré-carregamento. preload: false desativa o pré-carregamento.
Desativação do seek na barra de progresso
Defina disableSeek: true para impedir que os usuários arrastem a barra de progresso. Disable dragging the progress bar.
Obtenção periódica do tempo atual de reprodução
Use um temporizador para chamar player.getCurrentTime() a cada segundo. Limpe o temporizador quando a reprodução for pausada, ocorrer um erro ou a reprodução terminar.
var timer = null;
timer = setInterval(() => {
var current = player.getCurrentTime();
console.log(current);
}, 1000);
// Clear the timer.
function clear() {
if (timer) {
clearTimeout(timer);
timer = null;
}
}
player.on("ended", function (e) {
clear();
});
player.on("pause", function (e) {
clear();
});
player.on("error", function (e) {
clear();
});
Outros problemas comuns com o Player SDK for Web
**Precisão do método
seek**: O métodoseekaceita valores de ponto flutuante (por exemplo,10.5). Para melhor compatibilidade, arredonde para baixo ou use menos casas decimais.-
Reconexão após desconexão de transmissão ao vivo: Configure o número de tentativas de reconexão. Caso a reprodução não seja restaurada após as tentativas configuradas, escute o evento
errorpara tratar a falha, por exemplo:player.on('error', (e) => { var code = String(e.paramData.error_code); }) License Key e o recurso de download: A License Key usada para reprodução não é intercambiável com o recurso de download. Os downloads são gerados com base nas informações do aplicativo.
Barra de controle exibe texto, mas sem ícones: Verifique se o arquivo
aliplayer-min.cssestá incluído corretamente. Não utilizeskinLayoutIgnoreeskinLayoutjuntos — oskinLayoutIgnoretem precedência e remove o componente. Defina uma altura fixa (400px ou mais) no contêiner do player para evitar colapso de layout. Compare sua configuração com a demonstração oficial em Vue para depuração.Erro 537067523 no Player SDK for Flutter para iOS: Defina um ID de rastreamento com
FlutterAliplayer.setTraceIDpara auxiliar na solução de problemas de log; atualize o Player SDK for Flutter para a versão 7.14.0 ou posterior, que otimiza a biblioteca de rede; caso não esteja utilizando o Alibaba Cloud CDN, insira em contato com seu provedor de CDN para verificar os logs de solicitação.
Como verificar e atualizar a versão do Player SDK for Web?
Verificar a versão: Consulte o arquivo
aliplayer-min.jsincluído no seu projeto ou o campo de versão em sua configuração.Atualizar a versão (conforme fornecido pelo solicitante): Edite a variável de versão na linha 30 de cada um dos seguintes arquivos de pacote de idiomas:
language.SC_UTF8.php,language.SC_GBK.php,language.TC_UTF8.php,language.TC_BIG5.php. Atualize todos os 4 arquivos para o novo número de versão (por exemplo, de2.27.1para2.37.8).
Confirmação pendente (requer aprovação antes da finalização): as etapas de atualização acima são específicas para uma integração particular de site/CMS, e não representam o caminho padrão de atualização do Player SDK for Web (a abordagem padrão consiste em atualizar a versão referenciada no link CDN ou pacote npm do aliplayer-min.js/aliplayer-min.css). Confirme se deve: (a) manter este conteúdo como está e delimitá-lo explicitamente a essa integração, (b) substituí-lo pelas etapas padrão de atualização ou (c) incluir ambos.
Problemas e erros de reprodução
Falha na reprodução de vídeo codificado em H.265
O Player SDK for Web 2.14.0+ suporta vídeo codificado em H.265. É necessário obter uma licença e configurar os parâmetros H.265. Play H.265/H.266 encoded video streams.
Erro de origem cruzada ao reproduzir arquivos FLV ou M3U8
Se você encontrar erros como "Access is denied for this document" ou "Access-Control-Allow-Origin", ative o acesso de origem cruzada para o seu domínio de reprodução. Configure cross-origin access.
Player HTML5 não entra no modo paisagem
O SDK do player não fornece uma API para modo paisagem. No iOS, o modo paisagem depende das configurações de orientação do sistema. No Android, o player entra no modo paisagem automaticamente no modo de tela cheia.
Cabeçalho Referer ausente nas solicitações de reprodução FLV
As solicitações do player seguem a Referrer-Policy do seu site. Certifique-se de que sua
Referrer-Policypermita que as solicitações de vídeo incluam um cabeçalho Referer.Se a
Referrer-Policypermitir um cabeçalho Referer, mas ele estiver ausente nas solicitações de vídeo, a ACL baseada em Referer poderá bloquear a reprodução. DefinaenableWorker: falsepara resolver isso.
Remoção de barras pretas da janela do player
Barras pretas aparecem quando o vídeo não preenche a janela do player.
As barras pretas correspondem ao plano de fundo do contêiner do player. Aplique object-fit: cover; à tag <video> para removê-las.
Essa propriedade pode recortar o quadro do vídeo. Consulte a documentação CSS de object-fit para entender os efeitos visuais.
Falha na inicialização do AliPlayer com TypeError: Failed to execute 'getComputedStyle' on 'Window'
Causa: Durante a inicialização do componente controlBar.volume, o método interno _getBottom() recupera um elemento DOM que é null ou não é um Element (geralmente porque o contêiner ainda não terminou de renderizar). Chamar getComputedStyle nesse valor gera uma exceção e bloqueia o restante da inicialização.
Solução 1 (recomendada): Atualize o Player SDK for Web para a versão 2.37.8 ou posterior, que corrige esse problema de compatibilidade.
Solução 2 (solução alternativa): Adicione skinLayoutIgnore: ["controlBar.volume"] à configuração do player para ignorar a inicialização do controle de volume. Se precisar manter o controle de volume, verifique se o elemento contêiner existe e se seu offsetWidth é maior que 0 antes de inicializar o player; caso contrário, atrase a inicialização em 200ms e tente novamente.
loadByUrl não funciona no iOS e Android
// `seek` only jumps to the time, but does not play.
// `play` restarts playback from the beginning on iOS.
// On iOS, full-screen playback is hijacked by the native player.
document.querySelector(".no1").onclick = function () {
player.loadByUrl("//player.alicdn.com/resource/player/qupai.mp4");
};
// Listen for 'play' and 'canplay' events to call seek. This might not work in some browsers. As an alternative, consider calling seek on the first 'timeupdate' event.
player.on("canplay", function () {
player.seek(20);
});
// No workaround is available for full-screen hijacking on iOS.
Vídeo anterior continua sendo reproduzido após a troca da fonte de vídeo
No Player SDK for Web 2.9.11, o método loadByUrl falha no modo de compatibilidade do 360 Browser no Windows 10. O vídeo anterior continua sendo reproduzido após a troca da fonte.
Causa: problema de compatibilidade do navegador.
Solução: atualize para o Player SDK for Web 2.9.19 ou posterior.
Falha no método player.seek() no iOS
Chame player.seek() dentro do listener de eventos play ou canplay. Caso contrário, a chamada pode não ter efeito.
// Call seek in the `play` and `canplay` events. Otherwise, it may not take effect.
player.on("canplay", function () {
player.seek(20);
});
Sincronização com a borda ao vivo após retomar uma transmissão
Descrição do problema
Se você alternar seu aplicativo para o plano de fundo enquanto reproduz uma transmissão ao vivo, a reprodução será pausada. Ao retornar ao aplicativo, a transmissão ao vivo continua a ser reproduzida a partir do ponto em que a pausa ocorreu. Existe alguma configuração que possa ser feita para reduzir a latência de reprodução, de modo que o clipe mais recente seja reproduzido após a retomada?
Solução
Após retomar a reprodução, a transmissão ao vivo continua a partir do ponto em que a pausa ocorreu. Não é possível configurar parâmetros para acelerar a reprodução. Recomendamos puxar a transmissão ao vivo novamente e usar o player para reproduzi-la mais uma vez.
Uso do Player SDK for Web em mini programas WeChat
O Player SDK for Web não executa em mini programas WeChat. Use o componente de vídeo integrado do mini programa. WeChat mini program.
Falha na extração de fluxo de origem cruzada para transmissão ao vivo
Se a validação local de origem cruzada falhar, verifique sua configuração de Domain Management. Solicitações originadas de localhost falham se apenas o seu próprio domínio estiver configurado. Por padrão, o localhost passa na validação quando nenhum domínio está configurado.
Falha na reprodução de vídeo VOD no iOS
Possível causa: O Safari no iOS pode falhar ao decodificar vídeos com alta taxa de compressão ou perfil de codificação high.
Solução: Transcodifique o vídeo antes da reprodução. Audio and video transcoding.
Falha na reprodução de vídeo em alguns computadores com código de erro 4400
O código de erro 4400 indica que o recurso não pode ser carregado devido a problemas de servidor ou de rede, ou formato não suportado. Verifique se um certificado SSL está configurado.
Problemas específicos de plataforma
Remoção da miniatura padrão no WebView
Em alguns WebViews Android, omitir o atributo poster na tag <video> faz com que uma miniatura padrão (fundo cinza com um botão de reprodução) apareça.
Solução: Defina um atributo poster inválido na tag <video> para substituir o padrão.
extraInfo: { poster: 'noposter' } // The content of the player parameter `extraInfo` is passed to the <video> tag.
Ativação do modo de documento mais alto no IE
Para versões do Internet Explorer anteriores ao IE 10, ative o modo de documento mais alto disponível.
<meta http-equiv="x-ua-compatible" content="IE=edge" >
Ativação de reprodução automática no WeChat
<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
<script>
function autoPlay() {
wx.config({
// Configuration details. wx.ready can be used even if the details are incorrect.
debug: false,
appId: '',
timestamp: 1,
nonceStr: '',
signature: '',
jsApiList: []
});
wx.ready(function() {
var video=$(player.el()).find('video')[0];
video.play();
});
};
// Workaround for autoplay issue on iOS.
autoPlay();
</script>
Sequestro da reprodução de vídeo pelo navegador
O sequestro pelo navegador ocorre quando o player nativo do navegador substitui o elemento <video> do Player SDK e bloqueia modificações via JavaScript ou CSS. Os sintomas incluem estilização inesperada, recursos do player quebrados, elementos extras de UI ou anúncios e reprodução forçada em tela cheia.
Isso geralmente ocorre em navegadores móveis, como WeChat, UC Browser e QQ Browser.
Falha nos comentários flutuantes no modo de tela cheia do iOS
Sintoma: Em dispositivos iOS, os comentários flutuantes funcionam corretamente durante a reprodução padrão, mas desaparecem no modo de tela cheia.
Solução: A UI nativa do iOS assume o controle do elemento <video> na camada mais alta, bloqueando sobreposições como comentários flutuantes. Como solução alternativa, defina a altura e a largura do contêiner do player para preencher toda a tela, simulando o modo de tela cheia e mantendo os comentários flutuantes funcionais.