2013-10-05 40 views
1

客戶很有趣 - 隨時提出新要求......HTML5視頻 - 來自數據庫的數據

好的,所以我有一個ASP.NET 4.0 Webforms應用程序,客戶可以在其中上傳文件(如PDF或Excel文檔),並將這些文件存儲在VARBINARY(MAX)列中的SQL Server中。奇蹟般有效。

現在他們想出了一個新的要求:他們也希望能夠上傳視頻(如* .wmv,* .mp4等)。與請求時下載到客戶硬盤的文檔相反,對於視頻,他們希望讓他們在我的Webforms應用程序上播放。

經過一番研究,看起來HTML5標籤將是最有效的方式。但我看到的所有樣本都使用基於文件的URL來獲取視頻 - 但我似乎無法找到任何關於如何提供來自的視頻數據的任何提及。

我真的需要將我的視頻從我的SQL Server數據庫存儲到磁盤上的臨時文件中,以便在我的Webforms應用程序中播放它們嗎?或者是否有一種將.NET流(MemoryStream)連接到HTML5 <video>元素以在屏幕上播放視頻的好方法?

回答

2

只需通過您製作的特殊頁面緩衝數據,例如:getvideo.aspx?videoid=nnn將頁面用作流代理。

在您將數據作爲任何文件流式傳輸到客戶端的頁面上,將客戶端的MIME類型設置爲video/mp4,並確保它是8位二進制格式。

然後你只需將此頁設置爲視頻源的元素:

HTML:

<video width=640 height=320 autoplay controls> 
    <source src="getvideo.aspx?videoid=123&type=mp4" type="video/mp4"> 
    <source src="getvideo.aspx?videoid=123&type=ogg" type="video/ogg"> 
    Sorry, no video support in the browser you're using. 
</video> 

請注意,並非所有的瀏覽器支持MP4文件格式。您可能需要考慮允許回退格式,例如OGG和WEBM。

+0

謝謝 - 你能詳細介紹一下前兩段嗎?他們完全聽起來對我來說希臘:-)你有一個頁面/博客文章/文章,顯示(代碼)如何實際做到這一點? (我已經看到了'.ashx'處理程序的方法,據推測會回傳數據 - 不幸的是,到目前爲止,我發現的所有樣本實際上都不起作用 - 頁面上沒有任何視頻出現....) –

+0

@marc_s我很遺憾在博客和.net頁面都很短:(對不起,我會看看我能否解決這個問題或找到示例。原則上,當您查詢SQL Server時,只需將數據直接返回到該頁面內的輸出流(在運行查詢的過程中,只需首先發送標題) – K3N

+0

對於來自任意源(如視頻)的字節流(如視頻)的示例,如DB blob:http://www.martin- brennan.com/aha-1-ashx-video-streaming/。不錯,他展示瞭如何告訴視頻可以尋求的Chrome視頻播放器。 – yzorg