嵌入的 YouTube 视频在 iframe HTML 中不可用

Posted

技术标签:

【中文标题】嵌入的 YouTube 视频在 iframe HTML 中不可用【英文标题】:Embeded YouTube video not available in iframe HTML 【发布时间】:2020-04-19 07:46:47 【问题描述】:

我有一个嵌入的 youtube 视频列表。我的问题是,在我显示的四个视频中,一个返回错误:Video not available

我尝试过更换浏览器,但它也不起作用。我还检查了视频是否允许嵌入到外部。如果我查看浏览器的控制台,则不会引发异常。

    <li class="col-sm-3 col-xs-6 single_item vid">
    <iframe   src="https://www.youtube.com/embed/KdbDDVcw7qc?rel=0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
    <figcaption class="overlay">
    </figcaption>
    </li>

有谁知道,为什么这个视频不起作用,而其他所有的都可以?

【问题讨论】:

它对我有用。当它在 youtube 上是新的并且正在处理中时,您可以对其进行测试 你能直接在 youtube 上看到那个视频吗?它可能在您所在的国家/地区被屏蔽。 @AliSheikhpour 我将链接更改为新链接-您尝试的视频也对我有用。现在可以再试一次吗? 新的也适用于我。如果您在一页中有很多视频,请尝试一个。当您同时有多个请求时,可能会出现网络错误。 这似乎是您的设备的问题,而不是 YouTube 或代码的问题。您是否在其他设备上进行过测试?例如,您的手机或其他计算机?或者 - 也许它可能是一个网络问题?您尝试在不稳定的网络上流式传输的是特别大/高分辨率的视频吗?如果是这样,请尝试在实际视频播放器加载时将视频质量设置更改为低 【参考方案1】:

完美运行。我尝试嵌入四个不同的视频,它们都运行良好。这是链接https://jsfiddle.net/Arpit09/kt1dwqjp/7/

<iframe   src="https://www.youtube.com/embed/KdbDDVcw7qc?rel=0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

【讨论】:

我复制了完全相同的链接,但它对我不起作用。我真的不知道问题可能是什么。感谢您的帮助 这很奇怪。您可以在 youtube.com 上流式传输此特定视频吗? @mrbeans 您是否尝试过他在问题中提供的链接? @Lukas 我只能看到问题youtube.com/embed/KdbDDVcw7qc?rel=0 中提到的嵌入链接,您指的是这个链接还是其他链接? @mrbeans 是的,我可以在 YouTube 上观看视频。这是我自己制作的视频。我也尝试重新上传它,然后再试一次。但这也没有用。【参考方案2】:

YouTube 禁止在没有公共域的 localhost environment 中嵌入某些视频,但您的视频可以通过 public domain/ sub-domain 毫无问题地嵌入,尝试使用虚拟主机应用程序或在线 html 工具。

【讨论】:

所以你认为如果他设置一个公共域的虚拟主机,它应该可以工作? 是的,它会起作用的。我试过了。某些视频可能对社区政策有一些限制,我认为这就是某些视频可能显示为不可用的原因 @Lukas 您可以尝试使用 localtunnel 等工具在公共域上进行测试【参考方案3】:

如果您无法在 MrBean 提供的 JSFiddle 链接上看到视频,那么 您的设备有问题,而不是嵌入本身。

如果是这样,下一步就是隔离问题。

你试过了吗:

    不同的浏览器。 (也许您的某个扩展或缓存有问题。)

    网络上的另一台计算机。 (可能是您的安全设置或防火墙过滤器有问题。)

    不同网络上的不同计算机。 (这将模拟大多数用户报告能够正确观看视频。)

【讨论】:

【参考方案4】:

该视频应该可以播放,但您可能无权查看或显示它。

【讨论】:

你能详细解释一下吗? @Lukas 我从未对iframe 或在我自己的网站上嵌入 YT 电影感兴趣。您可能正在使用 ***(如我)并且您的位置不允许您观看电影。阻止某些内容的原因可能是 Internet 或其提供商的过错。同样的事情发生在我的浏览器中,如果您想请我帮助您,我也无法观看视频(*** guilt 设置为美国):)【参考方案5】:

我们有一个非常相似的问题,但此处列出的标准方法和其他 SO 问题中的任何一个都没有回答/解决我们的问题。

在我们的案例中,问题仅限于具有许可内容的视频,通常是知名艺术家的音乐风格视频。

当视频未获得许可时,该问题并未发生。我知道一些艺术家可以标记他们的视频不可共享,并且可以允许/阻止域等。但是,我们知道这些都与我们无关。

相反,问题在于推荐人政策。我怀疑 Google / Youtube 为许可内容建立了一个信任模型,并且该信任模型的一部分需要强大的推荐人政策。

我们通过将Referer Policy MDN Refer Policy 设置为更强大的referer 政策解决了我们的问题。

如果我们使用默认值:

'降级时无推荐人'

播放的视频会显示视频不可用。

我们改为:

起源-何时-跨起源

视频播放成功

【讨论】:

【参考方案6】:

我在文档头部有这一行,我删除它并开始工作

<meta name='referrer' content='no-referrer'/>

【讨论】:

以上是关于嵌入的 YouTube 视频在 iframe HTML 中不可用的主要内容,如果未能解决你的问题,请参考以下文章

通过 iframe 嵌入的 YouTube 视频忽略 z-index?

嵌入没有 iframe 的 HTML5 YouTube 视频?

嵌入的 YouTube 视频在 iframe HTML 中不可用

Youtube - 如何在嵌入链接/<iframe> 中强制 480p 视频质量

嵌入 iframe 的 Youtube 视频无法在 Android 4.0.3 上播放

重复的 YouTube iframe 嵌入视频播放