HTML 5视频无法从我的MVC网站播放

时间:2012-11-14 05:01:53

标签: c# asp.net asp.net-mvc html5 html5-video

我有一个简单的MVC操作,返回指向视频的FilePathResult。出于某种原因,HTML5视频(使用js-video.js)未播放视频。如果我将URL更改为我知道有效的URL,则视频播放正常。所以它必须与我提供文件的方式有关。

如果我浏览浏览器中的URL,视频会下载,然后播放正常。

视频为.mp4,返回的MIME类型为video/mp4

我正在使用Video Studio 2012.NET 4IIS 8 ExpressWindows 7 x64 Home Premium

以下是我的代码:

[Authorize(Roles = "File_Read")]
public FileResult Get(int? id)
{
    try
    {
        if (id == null)
            throw new ArgumentNullException("id");

        var fileRepo = FileRepositoryFactory.Repository;

        var file = fileRepo.GetById(id.Value);
        if (file == null)
            throw new InvalidOperationException(String.Format("Failed to find file with id: {0}", id));

        if (String.IsNullOrWhiteSpace(file.FilePath))
        {
            return this.File(file.Data, file.MIMEType, file.FileName);
        }
        else
        {
            return this.File(file.FilePath, file.MIMEType, file.FileName);
        }
    }
    catch (Exception ex)
    {
        return this.File("failed.txt", "text/plain");
    }
}

以下是Chrome返回的屏幕截图:

Network

File get request

Failed mp4 request

Failed mp4 request details

1 个答案:

答案 0 :(得分:6)

HTML5 Video tage需要支持 Range Requests

如果是静态文件,则此支持由服务器在内部提供,但在 ASP.NET MVC 操作的情况下,需要在ActionResult级别实现。

文章Range Requests in ASP.NET MVC – RangeFileResult详细介绍了如何使用 Range Request 支持创建ASP.NET MVC ActionResult。还有一个使用 VideoJS 的示例应用程序:VideoJS in ASP.NET MVC