【问题标题】:Youtube API - Handling Videos that have Been Removed by YoutubeYoutube API - 处理已被 Youtube 删除的视频
【发布时间】:2012-01-02 13:27:01
【问题描述】:

这是我正在开发的网站: http://t3kno.dewpixel.net/

如您所见,有一个正在运行的歌曲列表(YouTube 歌曲视频)。我实现了一个功能,一旦一首歌曲播放完毕,列表中的下一首歌曲就会自动开始播放。

当我尝试加载的视频因版权内容而被 youtube 删除时,我遇到了问题。目前,我正在通过调用以下方式检查歌曲的状态:

player.getPlayerState()

并等待状态返回 0(结束)。歌曲结束后,我尝试加载下一首歌曲。加载那首歌后,我会调用:

player.playVideo()

但是,如果那首歌已被删除,我就不走运了。我想尝试找到一种方法来捕捉该事件并跳到下一首歌。但是,当我尝试播放已删除的歌曲时,状态没有变化。含义:

function onytplayerStateChange(newState) {
//do stuff
}

永远不会被执行。如何检测此事件并正确处理?

【问题讨论】:

  • 如果视频无效,为什么getPlayerState不立即返回0?
  • 我不确定。每次 youtube 视频更改状态时都会执行 onytplayerStateChange()。当视频无效时,它永远不会改变状态......不知道为什么

标签: javascript api youtube


【解决方案1】:

尝试使用 OnError 事件侦听器,而不是使用 onStateChange。如果返回 100,则表示该视频已被删除或转为私有。有关 onError 侦听器的官方文档,请参阅此处: https://code.google.com/apis/youtube/flash_api_reference.html#Adding_event_listener

所以你会想要按照这些思路做一些事情:

ytplayer.addEventListener("onError", "onPlayerError");

function onPlayerError(errorCode) {
    if(errorCode == 100)
    {
       //play next video
    }
}

您可以通过以下方式处理 api 并确定捕获错误的最佳方法: https://code.google.com/apis/ajax/playground/?exp=youtube#polling_the_player

【讨论】:

  • 完美。 Code Playground 非常有用,您的解决方案可以完美运行。享受你的赏金吧,伙计!
猜你喜欢
  • 1970-01-01
  • 2016-08-25
  • 2018-11-30
  • 2013-02-16
  • 2014-02-07
  • 2020-11-17
  • 2018-04-18
  • 1970-01-01
  • 2020-10-24
相关资源
最近更新 更多