嵌入式播放器在不清楚的情况下向部分用户显示“请点击此处在 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&amp;cc_load_policy=0&amp;controls=0&amp;disablekb=1&amp;enablejsapi=1&amp;fs=0&amp;iv_load_policy=3&amp;loop=0&amp;modestbranding=1&amp;playsinline=1&amp;rel=0&amp;showinfo=0&amp;wmode=transparent&amp;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 视频添加点击播放?

是否可以在不启动核心定位的情况下向用户询问当前位置

在不知道架构名称的情况下向组角色添加权限

在不干扰平移的情况下向 MKMapView 添加左滑动手势

我开发了提醒应用程序,因此如何在不使用 firebase 的情况下向用户发送本地通知

在不重新加载的情况下向 div 添加/删除内容