在Google Chrome扩展程序中播放获利的YouTube歌曲。我有什么选择吗?

时间:2012-06-03 19:02:55

标签: iframe google-chrome-extension youtube youtube-api youtube-javascript-api

我在开发Google Chrome扩展程序时遇到了一个巨大的障碍。任何获利的YouTube歌曲(例如有广告)都不会播放。

这里有记录: https://developers.google.com/youtube/flash_api_reference_as2#Events

以及此处:https://stackoverflow.com/questions/4852490/some-videos-not-playing-through-youtube-api

以前,我一直在使用YouTube的Flash API。这很有效,直到我尝试部署我的扩展。那时我遇到了巨大的安全问题,由于权限不足而导致应用程序被锁定。因此,我重写了播放器以使用iFrame API而不是Flash API。

iFrame API允许我在没有任何Flash安全问题的情况下成功部署,但现在我无法播放任何包含广告的歌曲。

有没有人知道这方面的工作?

编辑:

我可以在此处下载我的扩展程序:http://www.meomixes.com/

此处可以看到扩展程序的来源:http://github.com/MeoMix/YouPod

举个例子,这首歌对我来说非常合适:http://www.youtube.com/watch?v=QXtPoNfOYSo

然而,这首歌在播放时引发错误:http://www.youtube.com/watch?v=_dfVAAWbLUY

请注意,第二首歌已经货币化。

1 个答案:

答案 0 :(得分:3)

首先,我初始化了播放器并加载了视频:

player = new YT.Player(getFrameID('MusicHolder'));player.loadVideoById('_dfVAAWbLUY')

正如您所看到的,播放器拒绝嵌入视频,因为播放器太小。所以,我改变了播放器的大小,并再次尝试:

$('iframe').width(640).height(390);player.loadVideoById('_dfVAAWbLUY');

视频开始播放了。我在扩展中测试了相同的代码,问题也消失了。

因此,按如下方式创建虚拟框架:

<iframe
    width="640"
    height="390"
    src="http://www.youtube.com/embed/dummy?enablejsapi=1"
></iframe>

更多调试信息:

  • 在之前的屏幕截图中,http://localhost:8000/是Chrome扩展程序的根目录。我使用python -m SimpleHTTPServer来创建服务器。
  • 我拦截了框架和页面之间的消息,发现错误代码150被抛出。根据{{​​3}},这个“与101相同”,并且“当请求的视频不允许在嵌入式播放器中播放时,广播101错误代码。”

documentation