没有真正可靠的方法可以在真实视频标签中实际播放 YouTube 视频。YouTube 不希望你这样做,这可能违反了他们的服务条款。无论如何,该 URL 可能会定期更改,无论 YT 是否调整其基础架构,或者他们会竭尽全力阻止人们直接访问视频文件。
但是,如果您使用视频标签,您可以采取一些步骤来完成您可以做的所有事情。首先,您可以在嵌入中添加“html5=1”提示,这将告诉 youtube 使用 html5 视频而不是 Flash(它通常符合,但并非总是如此)。视频将在 iframe 中,但您可以将所有常用的 CSS 技巧应用于该 iframe - 不透明度、变换等。
如果您使用的是 YouTube API,请添加html5: 1
到playerVars
. 如果您只是直接嵌入 iframe,请将其添加到查询字符串中,如下所示:
http ://www.youtube.com/embed/okqEVeNqBhc?html5=1
现在,如果你想更进一步,Popcorn.js 现在为 YouTube API 提供了一个漂亮的包装对象,它将使 YouTube(他们也为 Vimeo 提供一个)视频表现得像一个 HTMLVideoElement,具有大多数相同的属性,方法和事件。它并不完美,但它非常好。
注意:该文件的官方来源位于mozilla/popcorn-js存储库中,但该文件目前正在修复错误和功能。您需要包含最新版本的 Popcorn.js 和wrappers/common/popcorn._MediaElementProto.js
来自该 repo 的内容。确保&html5=1
在设置src
.
您会注意到的差异是:
即使使用包装器,HTML5 视频 API 的性能也比 YT API 好一点。例如,更灵敏和更好的缓冲报告。
您无法摆脱在暂停或鼠标悬停时显示的右下角的 YouTube 图标。
您无法阻止 YouTube 展示广告。
您无法访问音频 API 和 canvas/webgl 绘图之类的实际视频/音频内容。但是由于跨域限制,您无论如何都不能这样做。