2013-04-29 72 views
1

我正在寫一個Web應用程序,它位於桌面計算機上本地,可以在Firefox或Chrome中運行。它使用HTML5和本地數據庫存儲:IndexedDB。用戶需要能夠從在線存儲下載視頻並將其自動添加到應用程序中。我無法使用ajax來抓取並檢查這些文件(因爲它位於本地文件系統中,因此它失敗的原因是相同的),所以它們只需單擊一個鏈接即可在新選項卡中打開遠程託管視頻並提示保存到電腦。在這一點上,我的應用程序不知道文件的位置或它們在本地存在(並取決於用戶將其保存到正確的文件夾)。 Firefox也沒有FileSystem API。我可以將視頻作爲blob存儲在indexedDB中嗎?

相反,我想讓這個對用戶更加無縫,讓應用程序通過JSONP將blob數據下載到索引數據庫中。但是,它需要通過videosourceobject閃存標記進行顯示。這可能嗎?我可以將這些標記的來源/數據設置爲實際數據而不是URL嗎?因此,像:

僞代碼

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

是否有這樣的事?

回答

1

是的,您可以使用您顯示的dataURL查看視頻。 特定的瀏覽器喜歡特定的格式,而另一個線程,但它是可能的。 數據的url格式基本上是「data:」+ mimeType + [base64 flag?] +「,」+ btoa(data)。 所以,你可以很容易地從一個字符串中創建一個dataURL,如果這就是你所擁有的。

我建議使用objectURL來代替,因爲視頻可能非常大,dataURL往往在大文件上表現不佳。

你可以從一個blob創建一個對象的URL,這聽起來像你有。 如果不是,則可以從array bufferbinary stringdataURLajax response創建blob。

+0

謝謝!你知道objectURL是否可以在'source'標記的「src」屬性和'object'標記的「data」屬性中起作用嗎? – 2013-04-30 00:05:03

+0

它應該在http url的任何地方工作,除了可能的表單動作... – dandavis 2013-04-30 14:33:49

+0

謝謝,我會試試看,並報告它是否工作。 – 2013-04-30 16:30:31

相關問題