1

客户很有趣——总是提出新的要求......

好的,所以我有一个 ASP.NET 4.0 Webforms 应用程序,客户可以在其中上传文件(如 PDF 或 Excel 文档),并且这些文件存储在 SQL Server 的VARBINARY(MAX)列中。奇迹般有效。

现在他们提出了一个新要求:他们还希望能够上传视频(如 *.wmv、*.mp4 等)。与在请求时才下载到客户硬盘上的文档相反,对于视频,他们希望让它们在我的 Webforms 应用程序上播放。

经过一番研究,HTML5<video>标签似乎是最有效的方法。但是我在那里看到的所有示例都使用基于文件的 URL 来获取视频 - 但我似乎找不到任何关于如何从中提供视频数据的提及。

我真的需要将我的视频从我的 SQL Server 数据库存储到磁盘上的一个临时文件中,以便在我的 Webforms 应用程序中播放它们吗?或者有没有一种巧妙的方法可以将 .NET 流 ( MemoryStream) 连接到 HTML5<video>元素以在屏幕上播放视频?

4

1 回答 1

4

只需通过您制作的特殊页面缓冲数据,例如: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 等后备格式。

于 2013-10-09T08:11:23.330 回答