Плавная потоковая передача видео из хранилища BLOB-объектов

У меня есть приложение MVC 4, которое содержит представление для отображения «Видео» только из хранилища BLOB-объектов Azure в формате MP4. В настоящее время я использую MediaElment.js (или любой типичный флеш-плеер) в качестве видеоплеера. Как я могу воспроизвести эти видео в режиме плавной потоковой передачи или прогрессивной загрузки (адаптивная потоковая передача). Какие конфигурации мне нужно настроить в Azure для поддержки потоковой передачи? Что мне нужно сделать перед загрузкой файла MP4 в хранилище BLOB-объектов?

Я перешел по этой ссылке http://msdn.microsoft.com/en-us/spazuretrainingcourse_spblobstorageazure.aspx, и, насколько я понял, Windows Azure Blobs Uploader используется для загрузки видеофайлов в azure и silverlight в качестве клиента. В моем случае видео загружается из отдельного приложения, поэтому манипулирование видеофайлом невозможно. Итак, есть ли способ реализовать потоковую передачу без каких-либо изменений и воспроизвести ее в видеопроигрывателе, кроме использования Silverlight?

Можно ли что-нибудь сделать, если я могу изменить медиафайл во время загрузки?

Спасибо.


person Dennis    schedule 13.09.2012    source источник
comment
Из любопытства заглянули ли вы в службы Windows Azure Media? WAMES поддерживает адаптивную потоковую передачу из хранилища BLOB-объектов и даже предоставляет способ преобразования видео в формат плавной потоковой передачи с небольшими усилиями.   -  person Rytmis    schedule 14.12.2012


Ответы (1)


Я делал почти именно это, но без Adaptive Streaming (я имею дело с видеофайлами размером всего 25 МБ или меньше). Я использую JWPlayer для внешнего интерфейса на своей веб-странице, а видео находится в хранилище BLOB-объектов Azure.

Я использую предварительно созданный двоичный файл ffmpeg.exe для Windows. Я загрузил его в Azure (поместил в корень проекта Worker Role), затем я использую System.Diagnostics.Process в WorkerRole для массажа видеофайлов. Вы можете сделать то же самое для создания версий разного качества, которые вам нужны.

Итак, когда пользователь загружает видео, уровень моей бизнес-логики помещает сообщение в очередь сообщений Azure, моя рабочая роль забирает его, копирует видео в Azure LocalStorage (LocalStorage - это физический диск, который вы можете настроить в файле настроек проекта Azure), запускает ffmpeg.exe над файлом и затем помещает его обратно в хранилище BLOB-объектов.

person hollystyles    schedule 13.09.2012
comment
Огромное спасибо. Итак, согласно вашему методу, при загрузке видеофайла в хранилище BLOB-объектов вы преобразуете медиа-файл в потоковый контент с помощью ffmpeg и сохраняете этот поток-контент в blob. Верно? - person Dennis; 13.09.2012
comment
Не совсем. ПОСЛЕ загрузки в blob я копирую видеофайл в папку temp_folder, используя ffmpeg для изменения кодировки (но вы можете многое делать с ffmpeg, и я подозреваю, что вы можете использовать его вместо Expression Encoder, чтобы делать то, что вы хотите в командной строке , на стороне сервера в вашем экземпляре Azure) Затем я помещаю измененный видеофайл обратно в хранилище BLOB-объектов. - person hollystyles; 14.09.2012
comment
Ok. Я готов использовать FFMPEG для кодирования видеофайла (MP4) по мере необходимости. Что нужно сделать, чтобы передать поток на плеер? т.е. мне нужно создать что-то вроде обработчика, который может передавать видео на плеер по запросу? Я хочу, чтобы видео воспроизводилось постепенно (не дожидаясь загрузки всего видео). Мне нужно что-то устанавливать на стороне клиента (плеера) или на стороне сервера? - person Dennis; 18.09.2012
comment
2. Какая кодировка будет использоваться для потоковой передачи? 3. Надеюсь, все, что нам нужно сделать, это установить источник видео в плеере как URI закодированного файла FFPMEG в большом двоичном объекте, верно? - person Dennis; 18.09.2012
comment
Да, это то, что я делаю, просто устанавливаю Uri в Player, и он автоматически буферизуется. - person hollystyles; 19.09.2012
comment
Спасибо. Поскольку я новичок в FFMPEG и процессе потокового видео, не могли бы вы сказать мне, каким должен быть формат для выходного файла (для такой команды: ffmpeg -i input.mp4-b: v 64k output.avi) для примера. Кодирование файла MP4 в вывод MP4 имеет смысл? - person Dennis; 19.09.2012
comment
Пойдем в чаты chat.stackoverflow.com/rooms/7/c Я тоже новичок в FFMPEG . - person hollystyles; 19.09.2012
comment
Если вы не возражаете, не стесняйтесь включать в ответ вывод из таблицы. Я искал то же самое и думаю, что вы получите несколько голосов за полный ответ. - person Poul K. Sørensen; 27.07.2013