A API do IFrame do YouTube onError é acionada com o código de erro 150 para vídeos do Vevo
Deixe-me explicar meu cenário. Eu quero usarAPI do IFrame do YouTube para incorporar alguns vídeos no meu site. Eu testei o video com idwdGZBRAwW74 (https://www.youtube.com/watch?v=wdGZBRAwW74) nesta página:Demonstração do Youtube IFrame Player. E isso funciona bem.
Eu tentei este código de exemplo:
<!DOCTYPE html>
<html>
<body>
<!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
<div id="player"></div>
<script>
// 2. This code loads the IFrame Player API code asynchronously.
var tag = document.createElement('script');
tag.src = "//www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads.
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'wdGZBRAwW74',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange,
'onError': onPlayerError
}
});
}
// 4. The API will call this function when the video player is ready.
function onPlayerReady(event) {
event.target.playVideo();
}
// 5. The API calls this function when the player's state changes.
// The function indicates that when playing a video (state=1),
// the player should play for six seconds and then stop.
var done = false;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING && !done) {
setTimeout(stopVideo, 6000);
done = true;
}
}
function onPlayerError(event){
console.log(event.data);
}
function stopVideo() {
player.stopVideo();
}
</script>
</body>
</html>
com alguns domínios de host virtual no meu localhost e eu tenho resultado:
com domínioapp.centaur.com/youtube/index.htm: API do IFrame funciona OK, o vídeo é reproduzido sem problemas.com domínioapp.music.com/youtube/index.html: API do IFrame funciona OK, mas o vídeo não pode ser reproduzido, a API dispara onError com erro 150 e a mensagem de exibição do player incorporado "Este vídeo contém conteúdo da VEVO, que o impediu de ser exibido neste site. Assista no Youtube"com domínioapp.musiccentaur.com/youtube/index.htm: como no primeiro caso, tudo funciona bemcom domínioapp.centaurmusic.com/ youtube /: como no primeiro caso, tudo funciona okComo eu sei erro 150 significa "O proprietário do vídeo solicitado não permite que ele seja jogado em players incorporados". Mas eu vejo que ainda funciona no caso 1, 3, 4, então o que isso significa?
Parece que todos os vídeos da Vevo estão relacionados a esses problemas. Não tenho certeza se a Vevo definiu alguma política para incorporar seus vídeos.
Talvez o problema venha do meu domíniomusic.com, mas não tenho certeza se há algumas regras de domínio para incorporar o vídeo da Vevo em sites.
E se eu comprar um domínio para o meu site, então eu tenho erro 150, isso é tão ruim. :(
Existe alguém que lida com isso antes? Por favor, me dê algumas soluções. Desde já, obrigado.
Nota: este erro ocorre apenas nos vídeos do Vevo.