【问题标题】:HTML 5 Video not playing from my MVC websiteHTML 5 视频未从我的 MVC 网站播放
【发布时间】:2012-11-02 14:58:19
【问题描述】:

我有一个简单的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 返回的屏幕截图:

【问题讨论】:

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


    【解决方案1】:

    HTML5 Video 标记需要支持 Range Requests

    对于静态文件,此支持由服务器内部提供,但对于 ASP.NET MVC 操作,它需要在ActionResult 级别实现。

    文章Range Requests in ASP.NET MVC – RangeFileResult 详细描述了如何创建具有范围请求 支持的ASP.NET MVC ActionResult。这里还有一个使用 VideoJS 的示例应用程序:VideoJS in ASP.NET MVC

    【讨论】:

    • 谢谢。我让它处理 mp3 文件,但我的 mp4 不起作用。我在主帖中添加了带有错误信息的屏幕截图。
    • @rhughes 您标记的内容长度是正确的,因为请求具有Range: bytes=518758-518758 标头(浏览器要求一个字节)。在 Chrome 上播放 mp4 文件存在一些问题(不支持的编码等),只是谷歌找到一些。我建议在另一个浏览器中测试您的 mp4 文件,并测试一个已知可以在 Chrome 中运行的 mp4(这个应该很好 - longtailvideo.com/jw/upload/bunny.mp4 首先从这个位置测试它,而不是下载并在您的应用程序中使用)。还要确保 HTML5 视频/源的标记中有正确的代码。
    • 我试过兔子视频,它在 IE 9 中运行良好,但在 Chrome 中不行。你知道这是为什么吗?
    • @rhughes 据我所知,Chrome 不支持某些可用于 mp4 文件的编码,当您 google 'chrome mp4 issue' 时,您可以找到很多关于此的线程。我担心我不是视频编码主题的专家(我什至不确定这是否是 StackOverflow 的主题),但您的测试证实 ASP.NET MVC 部分工作正常并且问题出在 Chrome 中。我建议您就 Chrome 问题提出一个单独的问题,在那里您可以找到一些 Chrome 专家。
    • 这是有道理的。谷歌抛出了一些有趣的 cmets。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    相关资源
    最近更新 更多