Немного о MovieMasher

moviemasherДовелось мне столкнуться с этим зверем. Впечатления довольно сильные, поэтому пока не забыл спешу тут всё изложить.

Что такое MovieMasher
============
Наверняка каждый из читателей видел сервисы демотиваторов. Любой пользователь может загрузить некое изображение, и любые другие пользователи могут поглумиться над ним, приписывая свои тексты. Я видел сервис, в котором можно было прямо в онлайне что-то даже пририсовывать. Не важно.

А теперь представьте что всё это происходит не с изображениями а с видео! Юзеры грузят свои клипы, а некто может над ними изгаляться, вставлять свои титры, накладывать эффекты, делать врезки, вставлять свои слайды и прочее! Понятно что там мозгов нужно на порядок больше чем при работе с графикой, но не в этом суть.

Представили такой сервис? А теперь вуаля — бесплатный набор скриптов с открытым кодом, позволяющий абсолютно нормально делать это НА ВАШЕМ САЙТЕ. Это, как вы наверное уже догадались, и есть MovieMasher! Та-да!

Немного общих слов
=======================
Вообще MovieMasher изначально был вполне себе десктопным приложением для монтажа видео. У ребят довольно мощные наработки в этом плане. И вот однажды они обратили внимание на Adobe Flash и подумали: «А слабо Вальдемару переписать свою софтину на флеш?». Сказано сделано.

В результате получился довольно толковый инструмент для работы с медиа. Но чтобы это стало сервисом, нужно что-то на сервере, хранение/обработка медиа. На этой стадии продукт оброс набором из PHP скриптов.

Ребята славно постарались, но поскольку продукт бесплатен, то бизнес-модель продукта не совсем понятна. У меня сложилось впечатление, что они зарабатывают на дотациях и поддержке/внедрении. Кроме того у них очень сильная привязка к хостингу Amazon, так что возможно они что-то и на этом зарабатывают.

Инсталляция
=======================
А вот тут розовые очки придётся снять, ибо начинается ад.

На оффициальном сайте можно скачать инсталляционный архив. В его состав входят примеры, исходники от флеша и собственно файлы moviemasher, которые можно разделить на публично доступные файлы, которые нужно положить в веб-директорию, и приватные файлы, которые нужно вывести из общей папки. Собственно в инструкции всё это есть

Начать знакомство лучше с примеров. Пример server смотреть последним!

Если не ставить задачу видеопроцессинга на сервере — то достаточно просто закинуть все эти файлы на ваш виртуальный хостинг. Вы сможете загружать изображения на хостинг, делать из них клипы накладывать титры эффекты и прочее. Всё что не требует обработки видео будет работать из коробки.

Готовые ролики moviemasher хранит в виде xml-файлов, в которых буквально расписано, на какой секунде какой трек включать, какой кадр запускать, какой титр или какой эффект начинать и т.д. Такие ролики можно просматривать тут же прямо в moviemasher, но надо понимать, что в таком случае происходит монтаж видео прямо на лету и естественно будут небольшие зависы и заторможенности. Хотим смотреть гладкое видео? Нужно сгенерировать цельный видеофайл.

Итак обработка видео на сервере может понадобиться в следующих случаях:

  1. При загрузке видео файлов. Ибо moviemasher любит работать с уже «раскодированным» видео. Он любит дербанить видео на кадры и хранить их в таком виде. Видимо обработка видео в таком виде требует меньше ресурсов
  2. При генерации видео.

Если же хотите поднять свой сервер видеообработки, то вам на сервере понадобится целый букет программного обеспечения. Для Linux это:

  • ecasound-2.7.1
  • ffmpeg
  • libtheora-1.1.1
  • mpg123-1.12.1r
  • opencore-amr-0.1.2
  • wav2png

Ясен перец, поставить это счастье можно только на своём сервере. Виртуальный хостинг отдыхает. Кроме того, чтобы запустить сервер MovieMasher (да, он ещё и в режиме сервера может работать) ваш PHP должен включать PCNTL. Иначе — упс.

Если нет желания всё это самим ставить — на хостинге Amazon есть возможность выбрать для вашего виртуального сервера готовый образ на базе Ubuntu со всеми установленными плюшками.

Amazon-ские штуки
=======================
Кроме готовых сборок есть ещё одна интересная привязка продукта к Amazon. Ни в коем разе не хочу рекламировать этот хостинг, его продвигают разработчики MovieMasher.

Организация такого видеосервиса накладывает на хостинг неслабые требования по трафику, нагрузке и ёмкости дискового пространства. У Amazon есть услуга которая как раз позиционируется под файловую свалку. Минимум мозгов, максимум дискового пространства, широкие каналы, если надо контроль доступа или даже контроль версий. И это называется даже не сервером, а S3-bucket.

Любопытная вещичка, надо сказать. К нему нет FTP-доступа, только web-интерфейс и REST протокол с цифровой подписью. Всё очень серьёзно. Судя по всему каждый такой bucket это даже не сервер с каким-то конкретным IP, а нечто размазанное по сети с разными IP. Так вот, раз есть такой специально-заточенный под файлы хостинг сам бог велел юзать его.

Один из самых интересных вариантов, это вариант с тремя серверами
rest_s3
На этой схеме CGI-сервер — это просто вебсайт со своей логикой. На этом сайте размещены файлы MovieMasher. Никакого видео-процессинга тут нет.

Видео процессинг ведётся на втором сервере. который обозначен как Movie Masher Server. Этот сервер проще всего ставить из образа. С ним будет вестись работа по протоколу REST.

Про S3 я уже говорил.

Есть желающие написать на PHP всё это адово сплетение? Да собственно и не надо, ведь именно для амазонских сайтов всё уже готово и заточено. Нужно только грамотно настроить настроечный XML файл от MovieMasher. В поставке MovieMasher есть примеры конфигов для разных случаев. Главное надо внимательно всё сделать.

И да, настраивать следует тот MovieMasher, который на сайте. Тот который видеопроцессор сконфигурирован сразу.

За основу рабочих скриптов следует брать ту самую папку /example/server

Авторизация
=======================
Авторизация нужна. Она встроена. Но её можно переопределить. Для этого нужно переписать скрипт private\MovieMasher\lib\authutils.php. Самым логичным было бы использование сессии. Но это было бы если бы все скрипты вызывались бы прямо вашим браузером. Увы, часто запросов идёт от того самого флеш скрипта, а он теряет куки, так что нужно попотеть, чтобы передать хотя бы идентификатор сессии.

И даже если вы по-началу смогли передать этот идентификатор, не обольщайтесь. Там порой идёт по 10 вызовов скриптов за одну операцию, так что будьте готовы что авторизация потеряется где-нибудь посередине.

Вместо заключения
===========================
Думал взять и написать всё всё про MovieMasher. Хотя бы для себя шпаргалку на будущее. Всё чему научился и что узнал. Но то ли мало узнал, то ли уже всё забыл. То ли в систему не ложится…

Общее ощущение от продукта такое:
Иногда хочется взять и вообще всё переписать под себя, а не только ту функцию из авторизации. А иногда думаешь, блин ну ни за что так бы не написал.