Soluções para problemas comuns com o Player SDK for Web.
Problemas relacionados à licença
Para resolver problemas de licença inválida ou expirada, consulte as Perguntas frequentes sobre licenças.
Problemas comuns em todas as plataformas
Para problemas independentes de plataforma, consulte as Perguntas frequentes do player multiplataforma.
Desenvolvedores experientes também podem solucionar erros de reprodução de forma independente.
Problemas de desenvolvimento
Alternar vid e playauth no player HTML5
Chame o método replayByVidAndPlayAuth().
player.replayByVidAndPlayAuth(newVid, newPlayAuth)
Ajustar o tamanho e a 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 }, ], }, ]
Como o player implementa o botão de pausa após a chamada do método seek?
O botão reflete o estado anterior do player. Chame player.pause() após buscar para exibir o botão de pausa.
Definir a posição inicial de reprodução
Configure watchStartTime para especificar a posição inicial de reprodução.
new Aliplayer({
watchStartTime: 60, // Start playback from the 60th second.
})
Consulte a Referência da API do Aliplayer.
Ativar 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();
});
Desativar a busca na barra de progresso
Defina disableSeek: true para impedir que os usuários arrastem a barra de progresso. Consulte Desativar o arrasto da barra de progresso.
Obter o tempo de reprodução atual periodicamente
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();
});
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 de H.265. Consulte Reproduzir fluxos de vídeo codificados em H.265/H.266.
Erro de origem cruzada ao reproduzir arquivos FLV ou M3U8
Caso encontre erros como "Access is denied for this document" ou "Access-Control-Allow-Origin", ative o acesso de origem cruzada para seu domínio de reprodução. Siga as instruções em Configurar acesso de origem cruzada.
O player HTML5 não entra no modo paisagem
O SDK do player não fornece uma API para o modo paisagem. No iOS, esse modo depende das configurações de orientação do sistema. No Android, o player entra automaticamente no modo paisagem quando está em 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 esse problema.
Remover barras pretas da janela do player
Barras pretas aparecem quando o vídeo não preenche toda a janela do player.
Essas barras 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.
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.
O 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 mesmo 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 superior.
O método player.seek() falha 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);
});
Sincronizar com a borda ao vivo após retomar um fluxo
Descrição do problema
Se você colocar o aplicativo em segundo plano durante a reprodução de um fluxo ao vivo, a reprodução será pausada. Ao retornar ao aplicativo, o fluxo ao vivo continua a partir do ponto em que foi pausado. Existe alguma configuração para reduzir a latência de reprodução, permitindo que o trecho mais recente seja exibido após a retomada?
Solução
Ao retomar a reprodução, o fluxo ao vivo continua exatamente do ponto em que foi pausado. Não é possível configurar parâmetros para acelerar a reprodução. Recomendamos puxar o fluxo ao vivo novamente e usar o player para reiniciar a reprodução.
Usar o Player SDK for Web em mini programas do WeChat
O Player SDK for Web não é executado em mini programas do WeChat. Use o componente de vídeo nativo do mini programa. Consulte Mini programa do WeChat.
Falha no pull 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 falharão 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. Consulte Transcodificação de áudio e vídeo.
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 pôde ser carregado devido a problemas de servidor, falhas de rede ou formato não suportado. Verifique se há um certificado SSL configurado.
Problemas específicos de plataforma
Remover a miniatura padrão no WebView
Em alguns WebViews do Android, omitir o atributo poster na tag <video> faz com que uma miniatura padrão (fundo cinza com um botão de reprodução) seja exibida.
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.
Ativar o 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" >
Ativar 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 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 interface ou anúncios e reprodução forçada em tela cheia.
Isso geralmente acontece em navegadores móveis, como WeChat, UC Browser e QQ Browser.
Comentários flutuantes falham 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 interface nativa do iOS assume o controle do elemento <video> na camada mais alta, bloqueando sobreposições como comentários flutuantes. Como alternativa, defina a altura e a largura do contêiner do player para preencher toda a tela, simulando o modo de tela cheia enquanto mantém os comentários flutuantes funcionais.