我试图使用Google Drive作为托管视频的地方,但是每当我尝试将视频用作源时,google都不会返回任何东西。 (甚至没有http响应)
视频播放器示例
<video>
<source
src="https://www.googleapis.com/drive/v3/files/<file_id>/?alt=media&key=<api_key>"
type="video/mp4"
/>
</video>
如果我在浏览器中输入网址,它会成功提示我下载许可。
有人知道该怎么做吗?
答案 0 :(得分:1)
这应该有效:
<video>
<source src="https://drive.google.com/uc?export=download&id=file_ID" type='video/mp4'>
</video>
用您的视频ID替换链接中的“ file_ID”。 (要找到它,请右键单击Google云端硬盘视频,获取可共享的链接。应该共享该文件才能访问该文件。)
它将播放源视频。如果您想更改质量或使用不受支持的编解码器,则如前一个答案所述,获取Google驱动器流/转换后的文件并不容易。 (由于CORS和PHP在服务器端,并且Ajax不允许您获取链接,因此该链接包含IP地址,因此无法直接从客户端进行访问。)
答案 1 :(得分:1)
这是一个很长的答案,我会尽量缩短它。
只需尝试一下!!! 希望这对您有所帮助!
答案 2 :(得分:1)
// This works...
<video src="https://www.googleapis.com/drive/v3/files/fileID?alt=media&key=apiKey">
// But, even better if you have access to a worker or can otherwise output the file through a script (and modify resonse headers)
async function getFile(request) {
let response = await fetch('https://www.googleapis.com/drive/v3/files/fileID?alt=media&key=apiKey', request)
response = new Response(response.body, response)
response.headers.set('Accept-Ranges', 'bytes') // Allow seeking, not necessarily enabled by default
response.headers.set('Content-Disposition', 'inline') // Disable Google's attachment (download) behaviour, display directly in browser or stick into video src instead
return response
}
addEventListener('fetch', event => {
event.respondWith(getFile(event.request))
})
答案 3 :(得分:0)
简短回答:否
更长的答案:天哪。我花了很长时间试图自己弄清楚这一点!我正在开发一个名为DriveStream的项目,该项目旨在仅使用JavaScript和Apps Script来创建云端硬盘帐户的有组织的视频库。
项目本身运行良好,但是实现视频流并没有按计划进行。我尝试了几种不同的方法。一个类似于您的,另一个涉及获取文件的downloadUrl
属性并解析下载提示页面的html,以使我可以直接链接到该文件。我可以启动该文件的下载,并且可以在网络请求中看到该文件,但是无法将其流式传输到视频容器中。
不起作用的原因是由于AJAX的限制。它可以从视频中返回数据,但是似乎没有办法将数据集中到视频容器中。
最后,我不得不通过将每个视频的“播放”按钮仅链接到预览视频来进行补偿。
https://drive.google.com/file/d/fileId/preview
这不是一个坏的解决方法,因为它可以播放您上传的任何内容的1080p编码。
答案 4 :(得分:0)
我可能回答得有点晚,但是如果有人感兴趣,我会在here之前写有关Google云端硬盘流视频的答案。有几种解决方法,但是总之,如果您不想使用Google Drive的嵌入式播放器,则必须进行一些服务器端编程(可以是ASP.NET,PHP等)。另外,如果您要流式传输的大型视频超出了100MB的限制,是否已研究HLS(HTTP实时流式传输)?您可以创建包含视频片段(最好小于100MB)的.m3u8
播放列表,这样就可以流式传输视频。希望我的回答对您有帮助!