MVC ActionResult для больших видеофайлов

Я использую ASP.NET MVC 4 для веб-сайта. Сайт управляет онлайн-мероприятиями для нашей группы и предоставляет зарегистрированным пользователям доступ к онлайн-материалам, архивам веб-мероприятий и обучающим видео. Я создал систему для загрузки и управления видео, теперь мне нужно создать действия контроллера для отправки видеофайлов на веб-страницу. Мы используем VideoJS в качестве средства просмотра, и я очень доволен этим прямо сейчас. Нам нужно поддерживать безопасность файлов, поэтому простое размещение файлов на веб-сервере, похоже, не работает для нас.

Мой главный вопрос: какой хороший способ вернуть файлы в программу просмотра? Я привык использовать классы ActionResult и JSONResult, но они не совсем подходят для видеофайлов. Файлы могут быть ОЧЕНЬ большими, иногда до ГБ и более. Я вижу класс FileResult MVC, класс FileStreamResult и класс FileContentResult. Какой из них я должен использовать и какие другие соображения я должен учитывать при создании этого?

Я ценю вашу помощь.

Дуг


person drobertson    schedule 13.10.2012    source источник
comment
есть прогресс в этом?   -  person Kevkong    schedule 14.05.2013
comment
Хороший вопрос. Вам могут быть полезны следующие подходы: mediastreamingmvc.codeplex.com mvcresumingactions.codeplex.com dotnetslackers.com/articles/aspnet/   -  person acarlon    schedule 15.08.2013


Ответы (1)


Вы, безусловно, не должны отправлять все видео в качестве ответа зрителю, так как они будут ждать его загрузки довольно долго. Вам нужно передать это им. Я предполагаю, что вам понадобится какой-то поток байтов, возвращаемый контроллером.

Есть причина, по которой такие места, как YouTube, предлагают свои видео через флэш-память — потому что качество и скорость можно легко контролировать, и она предлагает определенную степень защиты от копирования (хотя и не надежная). Я только что сделал быстрый поиск в Google и нашел это:

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

person Spikeh    schedule 20.08.2013