Youtube iframe picture-in-picture mode



我想使用JavaScript在Youtube视频上启用PiP。我可以在html<video>s上这样做,但在Youtube<iframe>s上似乎不可能这样做。有人在这方面有线索吗?

用户可以右键单击两次(调出html5菜单(并选择画中画,但由于iframe的同源策略,似乎不可能从iframe外部以编程方式触发它。我不认为iframe URL中的&origin=参数实际上会更改从youtube发送的头,它在我的测试中似乎不起作用。SecurityError:阻止具有原点的帧访问跨原点帧

youtube iframe api通过使用postMessage绕过了这一点,但目前还没有实现执行video.requestPictureInPicture()的消息。在播放器base.js脚本中似乎定义了一个togglePictureInPicture函数,但这似乎并没有通过传递API 的消息来公开

我总是在控制台的youtube页面上使用下一行:

document.getElementsByTagName('video');

这将显示一个HTML集合,打开它并右键单击集合的第一个位置,将其存储为全局变量,这将生成类似temp1的内容。然后你必须写下一行:

temp1.requestPictureInPicture();

就是这样。

不能使用Youtube的iframe嵌入程序启用PiP。唯一的选择是直接将URL发送到谷歌的流媒体服务器,或者自己流式传输视频数据。无论哪种方式,您都需要一个流URL来设置为视频元素的src,然后在视频上调用video.requestPictureInPicture()

https://r4---sn-4g5ednls.googlevideo.com/videoplayback?expire=1627319351&ei=15...

这就是谷歌托管视频的流URL的样子。一个叫Levi的家伙写了一个库来检索给定Youtube视频的URL。但是库向他的代理服务器yt2html.com发出请求,以便检索此URL。

我在这篇博客文章中详细介绍了YT PiP的问题。

以下是来自开发人员的测试用例:https://beaufortfrancois.github.io/sandbox/media/iframe-video.html带有PiP

文档中有很多示例:

阅读有关该主题的更多信息:https://developers.google.com/youtube/iframe_api_reference
关于PiP-Api:
画中画Web Api规范:https://wicg.github.io/picture-in-picture,https://levelup.gitconnected.com/pip-videos-in-a-floating-window-452e775555fe?gi=21f55e7bf6fa

相关内容

  • 没有找到相关文章

最新更新