使用HTML5video标记通过ashx处理程序从sql server blob播放video文件

我正在使用此代码项目文章中的代码将MP4video文件上传到SQL服务器(varbinary(MAX))并从那里播放。

我的要求是专门使用SQL服务器,而不是从文件系统存储和提取video。

这是我用来播放video的代码:

 

如果我使用物理video文件作为video源,它可以工作。 但是上面的代码不起作用。

在“Internet Explorer”中,标签呈现带有红叉的黑盒子

在“Chrome”中,播放器按钮可见,但是当我点击播放按钮时,不播放任何video。 当我们右键单击它时会显示“将video另存为…”选项,并且下载的文件可以通过桌面媒体播放器正常运行。

请帮我正确的代码。

HTML5 Video需要支持范围请求

当您提供静态文件时,此支持由服务器在内部提供,但在HttpHandler情况下,您需要自己提供此支持。 通常,这意味着在请求中处理RangeIf-Range标头,并使用Content-RangeDateETagContent-Location标头提供正确的206 Partial Content响应。

ASP.NET MVC中的Range Requests文章- RangeFileResult详细描述了如何创建具有Range Request支持的ASP.NET MVC ActionResult – 您应该能够将所有逻辑从ExecuteResult方法移动到HttpHandler ProcessRequest方法而没有任何问题。

使用静态video源测试代码块。 一旦你的标记被认为是好的,测试处理程序,确保它正确编码video并提供正确的接受。 尝试使用媒体播放器..等等

  public void ProcessRequest (HttpContext context) { .... context.Response.AppendHeader("Content-Type", "video/mp4");` context.Response.AppendHeader("Accept-Ranges", "bytes"); byte[] fileContents = GetYourBytesFromWhereEver(); context.Response.OutputStream.Write(fileContents, 0, fileContents.Length); context.Response.Flush(); ..... }