首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Youtube iframe api检查视频是否存在

Youtube iframe api检查视频是否存在
EN

Stack Overflow用户
提问于 2012-11-10 21:20:55
回答 3查看 5.7K关注 0票数 1

我在一个简单的页面上工作,这个页面有一个文本输入,用户可以在其中添加他们想要插入到页面中的youtube视频的id,然后我调用youtube的iframe api来加载视频。但是,如果用户添加了一个不存在的id,我会得到一个黑屏。

我希望有人知道一种方法,可以在加载之前检查视频是否存在。

这是我的代码:

代码语言:javascript
运行
复制
$(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
          }
     });
  });
});
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-20 18:13:01

此处$videoId包含yuotube url的视频id

代码语言:javascript
运行
复制
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;
        }
    }
票数 1
EN

Stack Overflow用户

发布于 2012-11-10 21:31:01

根据documentation的说法,onError应该会给你这样的信息

100 -找不到请求的视频。当视频已被删除(由于任何原因)或已标记为私有时,会出现此错误。

将onError事件处理程序添加到events对象

代码语言:javascript
运行
复制
events: {
  'onReady': onPlayerReady,
  'onStateChange': onPlayerStateChange,
  'onError': function(errEvent) {
      var errCode = errEvent.data;
      if(errCode == 100) {
          alert('Video Not Found');
      }
  }
}
票数 5
EN

Stack Overflow用户

发布于 2012-11-10 21:32:36

只需在打开播放器之前触发对URL的测试Ajax请求。如果Youtube页面上的视频不存在,它会返回一个404头(我刚刚用一个不存在的视频URL测试了这个头)。

如果使用$.ajax方法,可以在成功回调中插入播放器加载函数,并在错误回调中触发错误告警(如响应头部为4xx或5xx则应调用)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13322397

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档