我正在尝试使用ashx处理程序提供mp4文件,但它无法在Iphone上运行。但在Safari PC中可以使用。
我想要这个(ashx):
<video width="100%" height="auto" controls=""><source type="video/mp4" src="play.ashx"></source></video>
而不是(mp4):
<video width="100%" height="auto" controls=""><source type="video/mp4" src="play.mp4"></source></video>
这是我的代码:
public void ProcessRequest(HttpContext context)
{
context.Response.ClearContent();
context.Response.ClearHeaders();
var length = new System.IO.FileInfo(context.Server.MapPath("~/big_buck_bunny.mp4")).Length;
context.Response.CacheControl = "Public";
context.Response.AddHeader("Content-Length", length.ToString());
context.Response.ContentType = "video/mp4";
context.Response.WriteFile(context.Server.MapPath("~/big_buck_bunny.mp4"));
context.Response.Flush();
context.Response.Close();
}
如果您要下载,请输入以下文件:http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4
我之所以这样做是因为客户希望控制对视频的访问。
提琴手信息(仅限差异):
申请Iphone:
User-Agent: AppleCoreMedia/1.0.0.9A405 (iPhone; U; CPU OS 5_0_1 like Mac OS X; en_us)
Accept: */*
Range: bytes=0-1
Accept-Encoding: identity
Connection: keep-alive
请求Safari Windows
User-Agent: QuickTime/7.7.1 (qtver=7.7.1;os=Windows NT 6.1Service Pack 1)
Pragma: no-cache
回复相同
答案 0 :(得分:1)
在请求上,iPhone发送一个Range标头。当我发现Apple的移动设备上的Safari浏览器挑剔时,您的服务器必须做出相应的响应。
从specs(第14.35.2段)和你的小提琴输出你必须先开始只发送前两个字节然后用206回复,之后玩家可能会回来加上GET标头设置。
我没有iPhone或iPad,所以我无法验证这个答案是否成立......
答案 1 :(得分:1)
手机上的“转到设置”图标和Safari选项启用插件。还要确保您的视频编码为h264 baseline。