Lak*_*ddy 5 c# asp.net html5 sql-server-2008 html5-video
我正在使用此代码项目文章中的代码将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>
Run Code Online (Sandbox Code Playgroud)
如果我使用物理视频文件作为视频源,它可以工作.但是上面的代码不起作用.
在"Internet Explorer"中,标签呈现带有红叉的黑盒子
在"Chrome"中,播放器按钮可见但是当我点击播放按钮时,不会播放任何视频.当我们右键单击它时会显示"将视频保存为..."选项,并且下载的文件可以与桌面媒体播放器一起运行.
请帮我正确的代码.
HTML5标准Video需要支持范围请求.
当您提供静态文件时,此支持由服务器在内部提供,但是如果HttpHandler您需要自己提供此支持.一般来说,这意味着处理Range并If-Range在请求头和适当的服务206个部分内容与反应Content-Range,Date以及ETag或Content-Location头.
文章在ASP.NET MVC范围请求- RangeFileResult详细描述了如何创建ASP.NET MVC ActionResult与范围请求支持-你应该能够从移动所有的逻辑ExecuteResult方法ProcessRequest的方法HttpHandler没有问题.
<video>使用静态视频源测试您的代码块。一旦你的标记被认为是好的,测试处理程序,确保它正确编码视频并提供正确的接受。尝试使用媒体播放器等
<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();
.....
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4099 次 |
| 最近记录: |