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

Дозвольте представитися — мене звати Валерій, я починав працювати як 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. Фактично — додатки зможуть працювати в обхід їх, без рута і джейлбрейка.

Буду радий почути думку спільноти про цю затію.

Спасибі за увагу!

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.