WebApi在移动设备上提供视频服务

时间:2015-06-16 09:49:52

标签: ios html5-video mobile-safari asp.net-web-api2

我正在使用WebApi在网站上投放视频。我已经在所有主流桌面浏览器上测试了这一点,HTML5视频标签按预期播放视频。但是,我无法在iPhones(Mobile Safari)上使用它。即使在按下播放按钮后也不会调用Get()方法。

WEBAPI代码

public HttpResponseMessage Get()
{

    var path = System.Web.Hosting.HostingEnvironment.MapPath("~/Content/testbw2.mp4");

    var stream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read);

    if (Request.Headers.Range != null)
    {
        try
        {
            HttpResponseMessage partialResponse = Request.CreateResponse(HttpStatusCode.PartialContent);
            partialResponse.Content = new ByteRangeStreamContent(stream, Request.Headers.Range, _mediaType);
            return partialResponse;
        }
        catch (InvalidByteRangeException invalidByteRangeException)
        {
            return Request.CreateErrorResponse(invalidByteRangeException);
        }
    }
    else
    {
        HttpResponseMessage fullResponse = Request.CreateResponse(HttpStatusCode.OK);
        fullResponse.Content = new StreamContent(stream);
        fullResponse.Content.Headers.ContentType = _mediaType;
        return fullResponse;
    }
}

HTML

<video controls>
    <source src="http://localhost/WebApplication24/api/range" type="video/mp4">
    Your browser does not support the video tag.
</video> 

如果我将视频src更改为直接指向文件...

src="http://localhost/WebApplication24/Content/testbw2.mp4"

它有效,所以我知道这不是编码问题。

我做错了吗?如果网址不以.mp4

结尾,我感觉移动safari不会请求视频src

1 个答案:

答案 0 :(得分:3)

以下是(some)可能导致您的文件不起作用的原因以及可能的解决方案:

  1. Safari完全期待一个实际命名的MP4。没有其他文件和mime类型的组合。其他浏览器首先选择WEBM文件,尤其是Chrome。 source
  2. 在7.0.2之前的iOS上,Safari确实支持HTML5视频,必须安装Quicktime Player才能使其正常工作。 source
  3. 还有一些问题,就像本地文件那样,iOS 7中的漫游不起作用。 source
  4. 由于某些原因,除非设置controls="true",否则视频无法在iOS上播放。 source
  5. iOS不支持h.264提供的所有配置文件。您必须使用基线配置文件对h264进行编码,才能在iphone / ipad上播放。 Encoding with Miro Video Converter可能有所帮助。 source