嵌入式播放器在不清楚的情况下向部分用户显示“请点击此处在 YouTube 上观看此视频”
Posted
技术标签:
【中文标题】嵌入式播放器在不清楚的情况下向部分用户显示“请点击此处在 YouTube 上观看此视频”【英文标题】:The embedded player shows "Please click here to watch this video on YouTube" to some users under unclearly circumstances 【发布时间】:2020-02-18 11:56:30 【问题描述】:我们在基于 Cordova 的混合应用上使用 YouTube 嵌入式播放器。该应用在全球拥有大量流量。
当某些用户在不清楚的情况下尝试播放任何视频时,播放器会向某些用户显示“请点击此处在 YouTube 上观看此视频”消息。
我们没有看到明确的模式,这似乎不取决于用户所在的国家或视频的限制。
我们在播放器代码 (https://www.youtube.com/yts/jsbin/player_ias-vflrnurMS/en_US/base.js) 中看到该消息被分配给一个名为“TOO_MANY_REQUESTS_WITH_LINK”的常量,但每个用户的请求量并不高,无法配置配额与其他 Google API 一样。
我们遵循 iFrame API 参考: https://developers.google.com/youtube/iframe_api_reference?hl=en
<iframe id="player" src="https://www.youtube.com/embed/M7lc1UVf-VE?autoplay=1&cc_load_policy=0&controls=0&disablekb=1&enablejsapi=1&fs=0&iv_load_policy=3&loop=0&modestbranding=1&playsinline=1&rel=0&showinfo=0&wmode=transparent&origin=XXX" frameborder="0"></iframe>
<script type="text/javascript">
var player,
scriptTag = document.createElement('script'),
firstScriptTag = document.getElementsByTagName('script')[0];
scriptTag.src = "https://www.youtube.com/iframe_api";
firstScriptTag.parentNode.insertBefore(scriptTag, firstScriptTag);
function onYouTubeIframeAPIReady()
var options = JSON.parse('"autoplay":1,"cc_load_policy":0,"controls":0,"disablekb":1,"enablejsapi":1,"fs":0,"iv_load_policy":3,"loop":0,"modestbranding":1,"playsinline":1,"rel":0,"showinfo":0,"wmode":"transparent","origin":"XXX"');
if (!options.origin)
options.origin = location.origin ||
location.protocol + '//' + location.hostname + (location.port ? ':' + location.port : '');
player = new YTRemoteVPlayer('player', '<%-videoId%>', options);
</script>
有谁知道可能发生了什么以及如何解决它?
【问题讨论】:
我在一个使用 iFrame API 的 android 应用上遇到了同样的问题。这个错误开始于 10 月 19 日发生。正如您所说,我也无法弄清楚这个错误发生的任何模式,但它反映了很多 1 星。在 YouTube / Chromium 论坛上搜索,我找不到任何答案/修复 =/ Teran,如果与该问题相关的差评数量从昨天到今天已经减少(甚至为零),您能否在此处查看并发布? YouTube 似乎已经解决了这个问题。谢谢你:) 确实,从昨天开始我们没有收到任何错误。感谢您的帮助! 又发生了:( 我在 issuetracker 上开了一个新问题:issuetracker.google.com/issues/144057800 【参考方案1】:我和我的队友设法在本地重现了这种行为。
要重现该行为,您只需在同一 IP 地址下多次加载不同视频的 youtube JS。虽然我无法说明它必须执行的确切次数(我们将一些设备放在一边),但这种行为确实发生了。
为了解决该问题,我们访问了 https://web.archive.org/web 网站并获取了一个旧的 YouTube JS 脚本 (https://www.youtube.com/iframe_api)。我们尝试使用那个旧脚本,但没有成功。消息继续出现=/。
我真的不知道我们这些开发者是否能做些什么,但请等待 YouTube 声明和/或对他们最近的更改进行修订。
更新
在 Google 的问题跟踪器网站上打开了一个问题:
https://issuetracker.google.com/issues/143091693更新
YouTube 似乎最终解决了这个问题。我们会持续关注:)
更新(2019 年 11 月 5 日)
问题又出现了。
更新(2019 年 11 月 7 日)
我在 issuetracker 上开了一个新问题: - https://issuetracker.google.com/issues/144057800
【讨论】:
又发生了:( @angel.teran,我可以确认问题再次发生在我们和其他应用程序上 =; /【参考方案2】:我没有修复它,但我可以添加有关该问题的更多信息,这样也许有人可以帮助我们解决这个问题。
我遇到了一些用户同样的错误,就像你说的那样,没有明确的模式。我的设备工作正常,但我在遇到此错误的应用程序用户的帮助下进行了一些测试。根据结果:
我的测试中使用的演示:https://developers.google.com/youtube/youtube_player_demo
测试 1 - 在设备的浏览器上打开 iframe 播放器 api 演示 - 工作
测试 2 - 在我的应用上将 iframe 播放器 api 演示打开到 web 视图中 - 失败
测试 3 - 使用 *** 连接将 iframe 播放器 api 演示打开到我的应用程序的 web 视图中 - 工作
所以,看来是APP+IP的组合被屏蔽了。我不知道原因,如果有人重复这些测试将非常有帮助。我正在尝试与其他用户确认,但很难找到愿意提供帮助的人。
更新:第二个用户尝试使用 ***,并且对他也有效。
更新 2:有这个问题的用户告诉我,视频现在又可以正常工作了。它似乎是 Youtube 在服务器端的临时阻止。
【讨论】:
很高兴看到你的贡献回来了,@AllanBueno \o/。非常感谢您提供的所有信息:D 哈哈是的!我删除了我的回复,因为你的回复更有帮助:) 无论如何我把它带回来了,因为如果问题再次发生,它可以帮助某人。感谢您提供所有信息,这对您有很大帮助! 问题又回来了:( 这是真的。问题也出现在我的应用程序中 =/ 我在 issuetracker 上开了一个新问题:issuetracker.google.com/issues/144057800以上是关于嵌入式播放器在不清楚的情况下向部分用户显示“请点击此处在 YouTube 上观看此视频”的主要内容,如果未能解决你的问题,请参考以下文章
如何在不干扰本机控件的情况下向我的 HTML5 视频添加点击播放?