通过c#ashx处理程序提供mp4视频不适用于iphone

时间:2012-01-04 21:53:07

标签: c# asp.net html5-video

我正在尝试使用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

回复相同

2 个答案:

答案 0 :(得分:1)

在请求上,iPhone发送一个Range标头。当我发现Apple的移动设备上的Safari浏览器挑剔时,您的服务器必须做出相应的响应。

specs(第14.35.2段)和你的小提琴输出你必须先开始只发送前两个字节然后用206回复,之后玩家可能会回来加上GET标头设置。

我没有iPhone或iPad,所以我无法验证这个答案是否成立......

答案 1 :(得分:1)

手机上的“转到设置”图标和Safari选项启用插件。还要确保您的视频编码为h264 baseline。