如何从YouTube嵌入中删除暂停时叠加的“更多视频”? Edpuzzle和可汗学院以某种方式做到了

问题描述 投票:0回答:1

我想在嵌入式YouTube视频暂停时不显示“更多视频”叠加层。

[我见过其他类似oneone的帖子,但没有人提到Edpuzzle(例如https://edpuzzle.com/media/5e96205457b2f23efd7e8903)和Khan Academy能够阻止“更多视频”(ytp暂停-overlay)显示。

YouTube对于教育网站是否有例外?

youtube youtube-api youtube-data-api
1个回答
0
投票

我查看了Edpuzzle的源代码,他们使用通过链接传递参数嵌入的iframe。您可以查看受支持的参数here,但似乎没有一个参数允许人们隐藏视频的信息,相关视频(相关视频是视频结尾处显示的视频),并且似乎没有参数提及“更多视频”覆盖。话虽如此,YouTube文档指出不再支持以前对rel和showinfo参数的支持,并且它们的行为已更改。

这是showinfo参数的弃用声明。此外,rel参数的行为正在更改。标题,频道信息和相关视频是YouTube核心用户体验的重要组成部分,这些更改有助于使YouTube在不同平台上的观看体验保持一致。

Edpuzzle不仅能够关闭更多视频,而且还隐藏了视频标题和海报信息。在检查他们的网站时,似乎他们在向YouTube请求其iframe的内容时,YouTube会给他们提供一个播放器的文档,该播放器已加载了适当的CSS类,这使我相信YouTube为iframe请求设置了白名单。汗学院和edpuzzle。

由于CORS policy禁止,我们无法直接从窗​​口中更改iframe #document内容>

当启用jsapi时,YouTube的公开事件侦听器中可能会有一个空缺,因此进行探索,并将postMessage()从我们的窗口发送到iframe窗口可能会富有成果。

想到的另一种方法是创建一个可以处理观看视频的功能正常的YouTube代理,由于您将是所显示内容的所有者,因此可以不受限制地将视频播放器的CSS更改为您的偏好通过CORS,您可以嵌入视频而无需覆盖“更多视频”。

网络抓取工具会获取视频的原始URL,然后在视频标签上使用该URL,这可能是一个理想的解决方案,但这不会保留YouTube播放器,而这并不是您想要的。

以上方法超出了我的专业知识,但是我找到了某种方法。您可以通过用div包装iFrame并将其“裁剪”以隐藏您不想看到的内容来隐藏嵌入式iFrame的更多视频和标题。之所以可以这样做,是因为YouTube的播放器始终将显示的视频居中,并在标题和更多视频部分中填充顶部和底部。因此,我们要做的就是创建一个非常高的视频播放器,然后裁剪div的顶部和底部。

可以找到[div裁剪]方法的工作演示here。我对此解决方案有一些担心,就是它的可移植性以及使浏览器窗口高度变小的行为。另一个问题是底部没有控件,因为某些人可能想要这样做,并且由于无法访问播放器的顶部而无法观看排队的播放列表视频。值得一提的是,可以通过使用YouTube的iFrame API及其函数(例如player.seekTo())在底部像Edpuzzle一样创建自定义控件。此外,可能不允许在他们的服务条款中隐藏YouTube徽标。尽管存在这些问题,但此解决方案隐藏了嵌入的“更多视频”部分。请注意,我不是CSS专家,因此肯定可以对该解决方案进行一些改进。

HTML可能看起来像这样。我们添加的CSS将使视频变高,并裁剪顶部和底部(请参阅CodePen链接)

<div id="player-size" style="">
  <div id="cropping-div" style="">
    <div id="div-to-crop" style="">
      <div id="player-wrapper">
        <!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
        <div id="player"></div>
      </div>
    </div>
  </div>
</div>

此代码段可能不适用于堆栈溢出,因此I provided the CodePen link to see the working demo。这项研究使我得出了一些令人敬畏的发现,感谢您提出问题,希望此答案对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.