以HTML 5视频标记流式传输来自Google云端硬盘的视频

问题描述 投票:1回答:2

如何从谷歌硬盘流式传输更大的(200MB)视频文件?

我做了什么。

  • 测试了24MB文件,它的工作原理。
  • 网络上的每个人都可以公开共享文件 <source src="https://drive.google.com/uc?export=download&id=0B0gf7RQXoPVEa0xCSEhiRG5GNHM" type="video/mp4"> Oops. HTML 5 video not supported.

当我在浏览器中正常调用此URL时,会显示我必须接受的安全请求。

我认为这正是问题,它阻止了。

是否可以发送多个export和id查询参数?

html html5 video google-drive-sdk html5-video
2个回答
4
投票

我不认为你可以直接,但有像www-drv.com这样的服务作为代理,让你公开Goog​​le Drive或OneDrive的内容。

我有一些关注他们的服务,因为常见问题解答有点不清楚他们需要多少访问GDrive / OneDrive,如果你不得不让他们从根目录访问它(这对我来说是不行的)是不明显的或者如果您可以选择单个目录(和子目录)。我过去曾给他们发过电子邮件,要求澄清,但没有回复...只是想包括这种谨慎。


2
投票

无论大小如何,您都可以使用HTML 5视频代码实际流式传输Google云端硬盘视频。我花了一段时间来弄清楚这一点,所以这里是:

  • 获取视频的可共享链接。这可以通过右键单击Google云端硬盘中的视频并点击获取可共享链接按钮来完成。将此链接复制到剪贴板。
  • 使用可共享链接查看视频。只需将您从上一步获得的链接粘贴到Web浏览器中即可。请在接下来的几个步骤中使用Firefox或Chrome。
  • 选择您想要的质量。使用Google云端硬盘播放器并选择所需的质量,如1080p或720p。单击“播放”以确保质量发生变化。
  • 获取视频的绝对路径。这是有趣的部分:右键单击视频播放器,您将看到内置菜单,其中包含用于书呆子的循环和统计数据等选项。再次右键单击,您将看到浏览器内置菜单,其中包含复制视频地址或保存视频等选项。选择复制视频地址并对其进行测试,将其粘贴到新标签页中,然后查看视频是否播放。
  • 将链接插入视频标记。这是最令人满意的部分: <video width="1280" height="720" controls> <source src="link from Google Drive" type="video/mp4" /> </video>

或者,您可以使用开发人员工具中随时可用的网络检查工具。可以通过右键单击网页并选择检查元素,然后单击网络选项卡或使用内置浏览器菜单来访问它们。您可能必须刷新页面并在视频出现在网络选项卡中之前开始播放。通常,它被归类为媒体,因此您可以过滤掉引用媒体文件的每个请求。从那里,您将看到视频的链接并能够复制它们。

重要的是要注意每个URL实际上与客户端的IP相关联。这意味着您获得的链接不一定适用于其他人的设备。要解决此问题,您可以预先加载从客户端获取链接的页面,然后获取源并搜索在Google Drive源中启动fmt_map_stream的JSON数组。在那里,你将获得360p480p720p1080p的四个逃脱链接。复制这些链接并在视频标记中使用它们。请记住,此过程应该从服务器端进行。

此外,我建议使用Google相册。 Google照片允许免费存储,无限制,因为您允许照片压缩视频,以免他们在Google云端硬盘上用完您的配额。要开始使用,请先上传任意大小的视频文件。然后,执行以下操作:

  • 创建一个新专辑。相应地命名,然后拖动视频或选择您已上传的现有内容。
  • 选择共享选项。在右上角,有一个分享按钮。选择该选项将允许您获取相册的可共享链接。确保只有您可以向此相册添加视频至关重要。确保生成可共享链接之上的情况。
  • 获取单个视频的可共享链接。这很简单:右键单击视频并复制地址。你应该得到这样的格式:https://photos.google.com/share/SomeId/photo/SomeOtherId?key=AKey
  • 从服务器端获取下载链接。以下示例是一个C#示例,它从以上格式的任何链接获取下载链接: var source = ""; using (var webClient = new WebClient()) { source = webClient.DownloadString(link_from_above); } var chunks = source.Split(','); var downloadLink = ""; foreach (var chunk in chunks) { if (chunk.Contains("video-downloads.googleusercontent.com")) { downloadLink = chunk.Replace("\"", string.Empty); Process.Start("iexplore.exe", downloadLink); } }

上面的代码只是从您之前获得的链接下载源代码。然后,它被逗号分开,因为任何块包含ideo-downloads.googleusercontent.com被提取并且所有"被替换。在此示例中,将启动Internet Explorer并解析链接。结果将是Internet Explorer要求您保存视频。从这里,您可以执行以下操作:

<video width="1280" height="720" controls>
    <source src="download link from source" type="video/mp4" />
</video>

然后,您就可以进行流式传输。您也可以从VLC流式传输。唯一的缺点是搜索并不总是有效,因为文件在技术上是同时下载和播放的。这种方法比Google云端硬盘容易得多。

© www.soinside.com 2019 - 2024. All rights reserved.