我有一个mvc4应用程序向客户端提供我的HTML 5代码。我使用 HTML 5 视频标记来显示视频。通常我会将视频文件放入我的应用程序根目录来访问它,但现在我想实现另一个场景。我的应用的根目录是C:\MyApp
,而视频文件位于目录C:\VideoDir
中。
现在我想使用视频标记并将其作为源代码传递给
http://myurl/MyApp/Media/Video/test.mp4
我需要找到一种方法将此网址重定向到VideoDir内部的实际视频文件,而不会通过http
向公众展示VideoDir。这种方法的原因是,我想在提供视频之前检查权限。如果我通过http
向公众展示VideoDir,任何知道baseurl的人都可以观看他/她想要的任何视频。
我使用FileContentResult
,FilePathResult
和FileStreamResult
进行了一些测试。 Chrome可以处理结果,但是无法寻找,甚至最糟糕的是,iOS的Safari视频标签无法使用这些结果,而它可能会消耗原始的.mp4文件。
有任何想法或建议吗?
答案 0 :(得分:0)
在IIS中,在App文件夹中添加虚拟目录,其名称为以下
媒体
现在您可以访问如下所示的视频文件
http://myurl/MyApp/Media/Video/test.mp4
注意 - 请在App中添加虚拟目录并命名将指向VideoDir的虚拟目录媒体
希望这会对你有所帮助
答案 1 :(得分:0)
查看<video>
标记发送的标题后,我发现此问题的解决方案是处理范围请求。总结一下:我的问题对于这个问题来说是一个重复的问题:c# streaming over http to iphone
要使用mvc4工作,您需要忽略* .mp4扩展名,因此它由您自己的处理程序处理,而不是由mvc4处理。只需在RegisterRoutes
方法中执行以下行:
routes.IgnoreRoute("{file}.mp4");
或Application_Start
方法中的以下内容:
RouteTable.Routes.IgnoreRoute("{file}.mp4");