【问题标题】:Playing a video file from a sql server blob via ashx handler using HTML5 Video Tag使用 HTML5 视频标签通过 ashx 处理程序从 sql server blob 播放视频文件
【发布时间】:2012-10-08 13:49:24
【问题描述】:

我正在使用 codeproject article 中的代码将 MP4 视频文件上传到 SQL server(varbinary(MAX)) 并从那里播放。

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

这是我用来播放视频的代码:

<video id='my_video_1'  controls
   width="640" height="264"
  data-setup="{"controls":true, "preload":none}" >
  <source src='<%# "VideoHandler.ashx?id=" + Eval("ID") %>' type='video/mp4'>  
</video>

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

在“Internet Explorer”中,标签呈现一个带有红十字的黑框

在“Chrome”中,播放器按钮是可见的,但是当我点击播放按钮时,没有播放视频。当我们右键单击它显示“将视频另存为...”选项时,下载的文件可以在桌面媒体播放器上正常运行。

请帮助我正确的代码。

【问题讨论】:

  • 数据设置属性中的双引号会导致问题吗?

标签: c# asp.net html sql-server-2008 html5-video


【解决方案1】:

HTML5 Video 标签需要支持 Range Requests

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

文章Range Requests in ASP.NET MVC – RangeFileResult 详细描述了如何创建具有范围请求 支持的ASP.NET MVC ActionResult - 您应该能够将所有逻辑从ExecuteResult 方法移动到@ HttpHandler 的 987654333@ 方法没有问题。

【讨论】:

    【解决方案2】:

    使用静态视频源测试您的 &lt;video&gt; 代码块。一旦你 已知标记是好的,测试处理程序,确保它是 正确编码视频并提供正确的接受。试试媒体播放器..etc

    <video id='my_video_1' controls width="640" height="264"
      data-setup='{"controls":true, "preload":none}' >
      <source src='<%# "VideoHandler.ashx?id=" + Eval("ID") %>' 
         type='video/mp4 codecs="avc1.42E01E, mp4a.40.2"'>  
    </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();
        .....
    }
    

    【讨论】:

      猜你喜欢
      • 2014-02-10
      • 2012-11-11
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-04
      相关资源
      最近更新 更多