2

我正在编写一个位于台式计算机本地的 Web 应用程序,可以在 Firefox 或 Chrome 中运行。它使用 HTML5 和本地数据库存储:IndexedDB。用户需要能够从在线存储中下载视频并将其自动添加到应用程序中。我不能使用 ajax 来抓取和检查文件(因为它在本地文件系统上,所以它失败了相同的来源),所以他们改为单击一个链接,在新选项卡中打开远程托管的视频并提示保存到电脑。此时,我的应用程序不知道文件在哪里或它们是否存在于本地(并且取决于用户将其保存到正确的文件夹中)。Firefox 也没有 FileSystem API。

所以相反,我想让这对用户更加无缝,让应用程序只需通过 JSONP 将 blob 数据下载到 indexedDB 中。但是它需要通过 avideo sourceobjectflash 标签显示。这可能吗?我可以将这些标签的源/数据设置为实际数据而不是 URL 吗?所以像:

伪代码

<video><source src="data:video/mp4;base64,iVBORw0..."/></video>
<video><object data="data:video/flv;base64,iVBORw0..."/></video>

有这样的吗?

4

1 回答 1

3

是的,您可以使用显示的 dataURL 来查看视频。特定的浏览器喜欢特定的格式,以及另一个线程,但这是可能的。数据 url 格式基本上是 "data:"+mimeType+[base64 flag?]+","+ btoa(data)。所以,如果你有的话,你可以很容易地从一个字符串中创建一个 dataURL。

我建议改用objectURL,因为视频可能非常大,而且 dataURL 在大文件上往往表现不佳。

您可以从 blob 创建一个对象 URL,听起来就像您拥有的一样。如果没有,您可以从数组缓冲区二进制字符串dataURLajax 响应创建 blob 。

于 2013-04-29T23:55:36.617 回答