【问题标题】:Youtube iframe api check if video existsYoutube iframe api检查视频是否存在
【发布时间】:2013-04-20 18:13:00
【问题描述】:

我正在处理一个简单的页面,该页面有一个文本输入,用户可以在其中添加他们想要插入页面的 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
          }
     });
  });
});

【问题讨论】:

    标签: javascript jquery youtube youtube-api


    【解决方案1】:

    根据documentationonError 应该给你这样的信息

    100 – 未找到请求的视频。发生此错误时 视频已被删除(出于任何原因)或被标记为私有。

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

    events: {
      'onReady': onPlayerReady,
      'onStateChange': onPlayerStateChange,
      'onError': function(errEvent) {
          var errCode = errEvent.data;
          if(errCode == 100) {
              alert('Video Not Found');
          }
      }
    }
    

    【讨论】:

    • 嘿,谢谢你的回答!我已按照您的建议和文档中所示将“onError”添加到事件中,但它仍然会加载黑屏并且不会调用警报。这是我的演示页面:dev.xtendi.com/bin/youtube.html
    【解决方案2】:

    这里 $videoId 包含 yuotube url 的视频 id

    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;
            }
        }
    

    【讨论】:

      【解决方案3】:

      在打开播放器之前触发对 URL 的测试 Ajax 请求。如果 Youtube 页面视频不存在,则返回 404 标头(我刚刚使用不存在的视频 URL 进行了测试)。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-08
        • 2016-02-26
        • 1970-01-01
        • 2016-11-18
        • 2015-08-10
        • 2012-11-10
        • 2020-07-13
        • 2015-08-01
        相关资源
        最近更新 更多