适用于大型视频文件的MVC ActionResult

时间:2012-10-13 14:08:47

标签: asp.net-mvc video-streaming actionresult

我正在将ASP.NET MVC 4用于网站。该网站管理我们小组的在线活动,并为注册用户提供在线资料,网络活动档案和教学视频的访问权限。我已经建立了一个上传和管理视频的系统,现在我需要构建Controller Actions来将视频文件发送到网页。我们正在使用VideoJS作为观众,我现在非常满意。我们需要维护文件的安全性,以便将文件放在Web服务器上的某个位置似乎对我们不起作用。

我的主要问题是将文件返回给查看器的好方法是什么?我习惯使用ActionResult和JSONResult类,但它们似乎不适合视频文件。文件可能非常大,有时甚至高达GB或更高。我看到了MVC FileResult类,FileStreamResult类和FileContentResult类。我应该使用哪一个以及在构建它时应该考虑哪些其他因素?

感谢您的帮助。

道格

1 个答案:

答案 0 :(得分:0)

您肯定不应该将整个视频作为对观众的回复发送,因为他们会等待一段时间才能下载。您需要将它流式传输给他们。我想你需要从控制器返回某种字节流。

像YouTube这样的地方通过闪存提供视频是有原因的 - 因为质量和速率可以轻松控制,并且它提供了一定程度的复制保护(尽管它并非万无一失)。我刚刚进行了一次谷歌快速搜索,发现了这个:

http://www.longtailvideo.com/jw-player/download/

可能有用,但我不能亲自担保!

显然,Razor提供了自己的视频文件处理,您可能会发现它很有用:

http://www.asp.net/web-pages/tutorials/files,-images,-and-media/10-working-with-video

此外,HTML5支持视频流(我确定你知道,因为VideoJS使用它):

http://www.w3schools.com/html/html5_video.asp