Лучший способ добавить функцию загрузки видео, кодирования и потоковой передачи в приложение Rails?
Каков наилучший способ добавить функцию загрузки видео, кодирования и потоковой передачи в мое приложение Rails?
Я думаю о миксе как о: Rails app + Video Online Encoder + Amazon S3. Как вы думаете?
Для онлайн-кодировщика видео (VOE), какой из них проще в использовании с Rails: heywatch, panvidea, encoding.com, pandastream,...?
Кстати, приложение позволит пользователям воспроизводить потоковые видео с динамическими текстами, схемами и звуками, добавленными к ним во время выполнения. Вот пример:
- в приложении rails (backoffice или frontoffice): Загрузка видео (.mov,.avi,...)
- VOE: кодирование видео в формате FLV + хранилище в Amazon S3
- в приложении rails, backoffice: в домашнем Flash-приложении "добавить" к видео текст и схемы, показанные через 1 минуту (информация хранится в БД приложения Rails).
- в приложении rails, frontoffice: воспроизведение потокового видео с Amazon S3 (+ Cloudfront) в домашнем Flash-проигрывателе, который показывает динамику текста и схемы через видео после 1 минуты воспроизведения.
Часть, которую я действительно не понимаю, это FLV-потоковое видео. Я думал, что Cloudfront может это сделать.
Надеюсь, я достаточно ясен; -)
Спасибо всем за ваши ответы!
Ответы
Ответ 1
Zencoder выглядит здорово, и, вероятно, вам нужна поддержка API. Использовать вспышку для проигрывателя, я предполагаю? Для этого вам понадобится FMS или Red5. Вот ссылка на действительно простой пример, который транскодирует что-то, хранящееся в S3 для вас, в Ruby, конечно!: http://zencoder.com/docs/integration-libraries/#library
Ответ 2
Отказ от ответственности: я являюсь соучредителем transloadit.com.
Я бы отговорил вас от вашего собственного решения. Ссылка alexy13, безусловно, даст вам приложение, которое может получать видео пользователя и кодировать их. Однако вы получите несколько ограничений:
- Измененные изображения будут искажены, если их соотношение сторон составляет 4: 3. Чтобы избежать этого, вам нужно обнюхать их измерение перед преобразованием, а затем применить набор дополнений -vfilters к ffmpeg. Если вы правильно оцениваете размер, потребуется коктейль из минимум двух инструментов командной строки (сам ffmpeg и exiftool) + куча сумасшедшего кода для обработки пропорций отображения, которые отличаются от пропорций пикселей.
- Не все видео конвертируются. Иногда вам нужно дополнительно обнюхивать видеоконтент и устанавливать некоторые пользовательские флаги, иначе вы получите сообщение об ошибке. Конечно, 95% всех видео, вероятно, будут работать - но получить последние 5% сложно.
- Вам понадобится дополнительный веб-сервер, который кодирует видео, иначе ваш сайт будет очень вялым, пока видео кодируется. Вы можете обойти это, используя приятную команду для ограничения ресурсов ЦП, используемых ffmpeg, но это приведет к значительному увеличению времени кодирования.
Это краткий список проблем, но, как правило, вы ~ 100 часов от системы, которая работает без hickup и может иметь дело с некоторой нагрузкой.
Поэтому я бы посоветовал вам повторно рассмотреть возможность использования службы. Наши конкуренты довольно приятные, но, конечно, я был бы очень рад, если бы вы посетили наш сервис (transloadit.com) или отправили мне электронное письмо по адресу [email protected], если у вас есть какие-либо вопросы.
Существует также приложение примера Rails3 для использования transloadit со скрепкой и S3:
http://github.com/joerichsen/transloadit-paperclip-example
- фг
Ответ 3
Я бы чувствовал себя скептически, используя бесплатную стороннюю онлайн-службу. Я бы подумал об использовании кодирования на стороне сервера, потому что сторонний веб-сервис мог иметь переменную производительность и мог делать в основном что угодно для видео. Если у вас нет большого количества ЦП, то сторонний сервис может быть хорошим выбором.
EDIT: Эта ссылка должна помочь вам немного