Pull to refresh

Стриминг интерактивного контента. Без Плагинов

Reading time 3 min
Views 5.3K
Позвольте представиться — меня зовут Валерий, я начинал работать как 3D-artist, а затем — немножко руководитель проектов в одной известной отечественной компании по разработке образовательного ПО для школ.

В качестве основной платформы разработки очень давно был выбран Adobe (тогда еще Macromedia) Flash за то, что был достаточно простым и позволявшим с помощью ActionScript решать все наши задачи. И хорошо работал на почти всех существовавших тогда платформах (ведь их было не так много — целились только на десктопы, а там всегда были отличные браузеры с возможностью поставить плагин).

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

Переписывать\перекомпилировать и оборачивать в AIR-плеер каждый из нескольких десятков тысяч модулей очень не хотелось. Но морально к этому уже готовились и начали вести R&D в этом направлении…

В одном из отвлечённых диалогов с друзьями мы обсуждали какую-то новую демку от Amazon. Там они показывали перспективную разработку и стримили игрушку прямо на свои киндлы. И тут меня перемкнуло: вот оно — решение! Нам нужно просто стримить любой ненативный контент на клиенты. Это решило бы сразу кучу проблем, в том числе пиратству наших продуктов был бы положен конец. Для меня, как разработчика — это хоть и не ключевой, но один из важных факторов. С учётом того, что конкретно наши флешки не имели повышенных требований к отклику, в отличии от игр, я самонадеянно решил, что поставленная цель достижима.



Однако отвлекать кого-либо из команды не представлялось возможным. Во первых все были чем-то уже заняты, а во вторых, на меня, как на 3D-артиста посмотрели бы с недоверием — и это оправдано. Я и сам точно не знал — сколько времени может занять разработка, кто для этого нужен и насколько удачной окажется затея. Но я досконально понимал, как должна выглядеть итоговая концепция и часть архитектуры приложения.

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

Очевидно, что тут речь идёт о клиент-серверной архитектуре: серверу скармливается флешка, клиенту стримится изображение, от клиента принимаются координаты нажатий обратно на сервер. Был куплен сервер Amazon для объективной оценки отклика и скорости работы всей конструкции под боевой нагрузкой.

Ядром системы после ряда проб и ошибок, а так же внесённых предложений со стороны потенциальных заказчиков, выступил Chromium, как регулярно обновляемый, быстрый и открытый. В запущенный процесс браузера, который работает во вне-экранном режиме (OSR), мы загружаем SWF ровно в оригинальном виде, без всяких модификаций и перекомпиляций самой флешки. Снимаем с него изображение и шлём… в HTML5 клиент. Вернее, сперва я думал о том, что клиенты придётся писать свои под каждую платформу, и хотя их функция предельно проста — хотелось этого избежать и написать один универсальный. Впрочем, наличие API оставляет возможность платформо-ориентации.



Текущие показатели производительности более чем удовлетворительны для стриминга образовательного флеш-контента (сервер способен держать до сотни подключенных и работающих клиентов). Пока мы ограничиваем поток 12 кадрами в секунду на клиента, но к вопросам оптимизации и форматов данных еще даже не подступались.

Таким образом, система способна перемалывать любые интерактивы и доставлять их хоть на smart-часы, если это понадобится. Нужен только современный браузер. В итоге — наследие десятилетий разработки может быть спасено и не нужно изобретать велосипед только потому, что Adobe Flash игнорируется одной яблочной компанией и кем-либо еще.

Сегодня у нас есть вполне рабочий прототип. Есть понимание того, к чему эта конструкция должна прийти — а именно — облачный сервис с возможностью для каждого стримить любой интерактивный контент, который можно засунуть в полноценный декстоп-браузер (то есть, фактически, все существующие плагины, от Java до Unity и др.) на любое устройство. Возможность встраивать стрим-плеер в обычную веб-страничку. Отсутствие зависимости от магазинов приложений типа app store. Фактически — приложения смогут работать в обход их, без рута и джейлбрейка.

Буду рад услышать мнение сообщества об этой затее.

Спасибо за внимание!
Tags:
Hubs:
+2
Comments 3
Comments Comments 3

Articles