0

我有一个 mvc4 应用程序向客户端提供我的 HTML 5 代码。我正在使用HTML 5视频标签来显示视频。通常我会把视频文件放到我的应用程序根目录来访问它,但现在我想实现另一个场景。我的应用程序的根目录是 ieC:\MyApp而视频文件在目录中C:\VideoDir

现在我想使用视频标签并将其作为来源传递给它,看起来像

http://myurl/MyApp/Media/Video/test.mp4

我需要找到一种方法将此 URL 重定向到 VideoDir 内的实际视频文件,而不会将 VideoDir 通过http公开。这种方法的原因是,我想在提供视频之前检查权限。如果我通过 将 VideoDir 公开http,任何知道 baseurl 的人都可以观看他/她想看的任何视频。

我用FileContentResult,FilePathResult和进行了一些测试FileStreamResult。Chrome 可以处理结果,但无法搜索,甚至最糟糕的是 iOS 的 Safari 的视频标签无法消耗这些结果,而它可以消耗原始的 .mp4 文件。

有什么想法或建议吗?

4

2 回答 2

0

在 IIS 中,在您的应用程序文件夹中添加虚拟目录,名称如下

媒体

现在您可以访问如下视频文件

http://myurl/MyApp/Media/Video/test.mp4

注意- 请在 App 中添加虚拟目录并命名将指向 VideoDir 的虚拟目录媒体

希望对你有帮助

于 2013-05-15T00:37:45.830 回答
0

查看标签发送的标头后,<video>我发现解决此问题的方法是处理范围请求。总结一下:我的问题与这个问题有点重复:c# streaming over http to iphone

要使这项工作与 mvc4 一起工作,您需要忽略 *.mp4 扩展名,以便它由您自己的处理程序处理,而不是由 mvc4 处理。RegisterRoutes只需在您的方法中执行以下行:

routes.IgnoreRoute("{file}.mp4");

或您的Application_Start方法中的以下内容:

RouteTable.Routes.IgnoreRoute("{file}.mp4");

(归功于:使用 ASP.NET 路由来提供静态文件

于 2013-05-21T19:20:14.877 回答