我正在使用此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”中,播放器按钮可见但是当我点击播放按钮时,不会播放任何视频 . 当我们右键单击它时会显示“将视频保存为...”选项,并且下载的文件可以通过桌面媒体播放器正常运行 .
请帮我正确的代码 .
2 回答
HTML5
Video
tage需要支持 Range Requests .当您提供静态文件时,此支持由服务器在内部提供,但在
HttpHandler
的情况下,您需要自己提供此支持 . 通常,这意味着在请求中处理Range
和If-Range
标头,并使用Content-Range
,Date
和ETag
或Content-Location
标头提供正确的206部分内容响应 .文章Range Requests in ASP.NET MVC – RangeFileResult详细描述了如何创建具有范围请求支持的ASP.NET MVC
ActionResult
- 您应该能够将所有逻辑从ExecuteResult
方法移动到ProcessRequest
方法HttpHandler
,没有任何问题 .使用静态视频源测试
<video>
代码块 . 一旦你的标记被认为是好的,测试处理程序,确保它正确编码视频并提供正确的接受 . 尝试使用媒体播放器..等等