我想使用JavaScript在Youtube视频上启用PiP。我可以在html <video>%s上这样做,但在Youtube <iframe>%s上似乎不可能这样做。有人在这方面有什么线索吗?
发布于 2020-07-07 01:33:08
用户可以右击两次(调出html5菜单)并选择图片中的图片,但似乎不可能从iframe外部以编程方式触发它,因为iframe的同源策略。我认为iframe URL中的&origin=参数实际上不会更改从youtube发送的头文件,它在我的测试中似乎不起作用。SecurityError: Blocked a frame with origin from accessing a cross-origin frame
youtube iframe api通过使用postMessage实现了gets around this,但是目前还没有实现执行video.requestPictureInPicture()的消息。在播放器base.js脚本内部似乎定义了一个togglePictureInPicture函数,但这似乎没有通过消息传递API公开
发布于 2020-11-20 10:18:27
我总是在控制台的youtube页面上使用下一行:
document.getElementsByTagName('video');这将显示一个HTML Collection,打开它,右键单击集合的第一个位置,将其存储为全局变量,这将生成类似temp1的内容。然后你必须写下一行:
temp1.requestPictureInPicture();就是这样。
发布于 2021-08-06 18:46:48
你不能使用Youtube的iframe 以编程的方式启用 PiP。唯一的选择是将URL直接连接到Google的流媒体服务器,或者自己流式传输视频数据。无论哪种方式,您都需要一个stream URL来设置为视频元素的src,然后对视频调用video.requestPictureInPicture()。
https://r4---sn-4g5ednls.googlevideo.com/videoplayback?expire=1627319351&ei=15...这就是google托管的视频的流URL的样子。一个叫Levi的家伙写了一个library来检索一个给定Youtube视频的网址。但是该库向他的代理服务器yt2html.com发出请求,以便检索这个URL。
在这篇blog post中,我将更详细地介绍YT PiP的问题。
https://stackoverflow.com/questions/60877157
复制相似问题