我正在使用此 codeproject article 中的代码将 MP4 视频文件上传到 SQL 服务器 (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”中,播放器按钮可见,但当我点击播放按钮时,没有播放视频。当我们右键单击时,它会显示“将视频另存为...”选项,并且下载的文件可以在桌面媒体播放器上正常运行。
请帮助我正确的代码。
最佳答案
HTML5 Video
标签需要支持 Range Requests .
当您提供静态文件时,此支持由服务器内部提供,但在 HttpHandler
的情况下您需要自己提供这种支持。一般来说,这意味着处理 Range
和 If-Range
请求中的 header 并提供适当的 206 部分内容 响应 Content-Range
, Date
和 ETag
或 Content-Location
标题。
文章Range Requests in ASP.NET MVC – RangeFileResult详细描述了如何创建 ASP.NET MVC ActionResult
有了 Range Request 支持 - 你应该能够从 ExecuteResult
移动所有逻辑ProcessRequest
的方法HttpHandler
的方法|没有问题。
关于c# - 使用 HTML5 视频标签通过 ashx 处理程序从 sql server blob 播放视频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12783106/