我正在处理一个带有文本输入的简单页面,用户可以在其中添加要插入页面的YouTube视频的ID,然后我调用youtube的iframe api来加载视频。但是,如果用户添加了不存在的ID,则会出现黑屏。
我希望有人知道在加载视频之前检查视频是否存在的方法。
这是我的代码:
$(document).ready(function() {
$('#loadVid').click(function() {
var player;
var urlVid = $('#urlVid').val(); //GET THE VIDEO CODE FROM THE TEXT INPUT
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: urlVid,
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
});
});
答案 0 :(得分:4)
根据documentation onError 应该为您提供此类信息
100 - 找不到请求的视频。 a时发生此错误 视频已被删除(出于任何原因)或已被标记为私有。
将onError事件处理程序添加到事件对象
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange,
'onError': function(errEvent) {
var errCode = errEvent.data;
if(errCode == 100) {
alert('Video Not Found');
}
}
}
答案 1 :(得分:0)
在打开播放器之前,只需触发对URL的测试Ajax请求。如果Youtube页面视频不存在,则会返回404标题(我刚刚使用不存在的视频网址对其进行了测试)。
如果你使用$ .ajax方法,你可以在成功回调中插入播放器加载函数,并在错误回调中触发错误警告(如果响应头是4xx或5xx则应该调用它)
答案 2 :(得分:0)
这里$ videoId包含youtube url的videoid
public function checkVideoExists() {
$headers = get_headers('http://gdata.youtube.com/feeds/api/videos/' . $videoId);
if (!strpos($headers[0], '200')) {
echo "The YouTube video you entered does not exist";
return false;
}
}