2013-10-05 14 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