检测 YouTube 嵌入式视频何时不再播放?

Detect when YouTube embedded video no longer playable?

有没有办法检测嵌入的 YouTube 视频不是 loading/playing 由于内容限制或删除? (而不只是用户互联网...等等)

我在网站上嵌入了一些 YouTube 视频。每隔一段时间,由于作者删除内容或使其不再 public 或任何其他原因,它们变得无法播放。

目标是利用某种 detection/trigger 来接收通知或采取一些措施来确保我的网站上没有一堆 stale/broken 视频嵌入。

我应该能够利用 API 轮询每个视频并检查其状态,但如果可能的话,我宁愿采用更被动的方法(或者可能两者结合,但想知道什么选项可用)。

您可以使用嵌入代码API。您可以只检查视频的持续时间,如果为零,则视频加载失败。

https://developers.google.com/youtube/iframe_api_reference

      // with this modification
      function onPlayerReady(event) {
        if (player.getDuration() === 0) console.log("Failed to load video");
      }

我认为您可以使用 API 中的“onError”事件来了解 YouTube 视频是否加载失败。

function onYouTubeIframeAPIReady() {
  var player;
  player = new YT.Player('player', {
    width: 1280,
    height: 720,
    videoId: 'M7lc1UVf-VE',
    events: {
      'onReady': onPlayerReady,
      'onStateChange': onPlayerStateChange,
      'onError': onPlayerError
    }
  });
}

function onPlayerError(event) {
  // Handle error ere
}

或者,如果您使用其他 API 获取视频详细信息,请查看他们的官方错误文档,找到适合您的问题的错误代码。 https://developers.google.com/youtube/v3/docs/errors