YouTube IFrame API onError запускается с кодом ошибки 150 для видео от Vevo
Позвольте мне объяснить мой сценарий. Я хочу использоватьYoutube IFrame API разместить несколько видео на моем сайте. Я проверил видео с идентификаторомwdGZBRAwW74 (https://www.youtube.com/watch?v=wdGZBRAwW74) на этой странице:Youtube IFrame Player Демо, И это работает хорошо.
Я пытаюсь этот пример кода:
<!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>
с некоторыми доменами виртуального хоста на моем локальном хосте, и я получил результат:
с доменомapp.centaur.com/youtube/index.htm: API IFrame работает нормально, видео воспроизводится без проблем.с доменомapp.music.com/youtube/index.html: API IFrame работает нормально, но видео не может воспроизводиться, API запускает onError с ошибкой 150, и встроенный проигрыватель показывает сообщение "Это видео содержит контент от VEVO, который заблокировал его показ на этом сайте. Смотреть на Youtube"с доменомapp.musiccentaur.com/youtube/index.htm: как в первом случае, все работает нормальнос доменомapp.centaurmusic.com/ youtube /: как в первом случае, все работает нормальноКак я знаю, ошибка 150 означает «Владелец запрошенного видео не позволяет воспроизводить его во встроенных проигрывателях». Но я вижу, что это все еще работает в случае 1, 3, 4, так что это значит?
Смотрите все видео Vevo, связанные с этой проблемой. Я не уверен, что Vevo определил какую-то политику для встраивания своих видео.
Может проблема из моего доменаmusic.com, но я не уверен, что есть какие-то правила домена для размещения видео Vevo на сайтах.
Что если я куплю домен для своего сайта, то получу ошибку 150, это так плохо. :(
Кто-нибудь имел дело с этим раньше? Пожалуйста, дайте мне несколько решений. Заранее спасибо.
Примечание: эта ошибка возникает только на видео Vevo.