我可以将视频存储为indexedDB中的blob吗?

时间:2013-04-29 22:45:07

标签: indexeddb

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

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

PSEUDO CODE

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

有这样的东西吗?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用您展示的dataURL来观看视频。 特定的浏览器,如特定的格式,以及另一个线程,但它是可能的。 数据url格式基本上是“data:”+ mimeType + [base64 flag?] +“,”+ btoa(data)。 所以,你可以轻松地从一个字符串中创建一个dataURL,如果这就是你所拥有的。

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

你可以从blob创建一个对象URL,听起来就像你拥有的那样。 如果没有,您可以从array bufferbinary stringdataURLajax response创建blob。