客户很有趣 - 始终提出新的要求....
好的,所以我有一个ASP.NET 4.0 Webforms应用程序,客户可以上传文件(如PDF或Excel文档),并将这些文件存储在VARBINARY(MAX)
列内的SQL Server中。像魅力一样。
现在他们想出了一个新的要求:他们也希望能够上传视频(如* .wmv,* .mp4等)。与刚刚被要求下载到客户硬盘的文档相反,对于视频,他们希望在我的Webforms应用程序上播放它们。
经过一些研究,似乎HTML5 <video>
标签将是最有效的方式。但我看到的所有样本都使用基于文件的URL来获取视频 - 但我似乎无法提及如何从流提供视频数据。
我是否真的需要将我的SQL Server数据库中的视频存储到磁盘上的临时文件中,以便在我的Webforms应用程序中播放它们?或者有一种很好的方法可以将.NET流(MemoryStream
)连接到HTML5 <video>
元素以在屏幕上播放视频吗?
答案 0 :(得分: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。