我在流式传输Google Drive的视频,我有两种方法。
<video>
<source src="https://www.googleapis.com/drive/v3/files/videoXXX?key=APIXXX&alt=media">
</video>
或者...
<video>
<source src="https://drive.google.com/uc?export=download&id=videoXXX">
</video>
它们对小文件都有相当好的效果,但它们在divs上抓取的全尺寸视频永远不会超过200像素宽。在我的文件上有一个很大的跳跃,从12到88MB的大小。小于12mb的东西都能用,而大于88mb的东西就不行,所以在它们之间有一个截止点。
我发现,通过物理访问URL,格式为 https:/drive.google.comfiledvideoXXXview。我可以降低质量,然后右键单击并获得低分辨率文件的URL。
我也设法用以下方法获得该网址。file_get_contents("https://drive.google.com/file/d/videoXXX/view")
并对结果进行解析。你可以用URL做同样的事情 https:/docs.google.comget_video_info?docid=videoXXX。.
问题是这个URL依赖于用户的IP地址,将其嵌入到视频标签中不起作用(复制和粘贴到浏览器中也不起作用),因为它被锁定在服务器的IP上。
我试过用Ajax检索它,在iframe中加载视频并抓取源码,以及最近尝试下载服务器的IP锁定的URL到服务器上并从那里播放它。
除了最近的一次,我知道是因为我不能做这个跨源,但是为什么PHP能够做到呢?我怎样才能从用户的 IP 地址中加载这个页面并在客户端抓取 URL?
我知道是因为我不能做这个跨源,但是为什么PHP能够做到呢?
因为跨源是在浏览器中执行的,而不是在服务器上。PHP 忽略了跨源头。浏览器会执行它们。如果不修改和重新编译浏览器的源代码,就没有办法绕过它们。如果有办法绕过 CORS,那就没有用了,也就不存在了。