Пользователь
20,8
рейтинг
5 февраля 2014 в 15:03

Разработка → Кроссплатформенное Smart TV приложение в одном экземпляре. Библиотека SmartBox для Samsung, LG, Philips, STB Mag 200/250 и других recovery mode

Копаясь в памяти своего неискушённого идеальным миром мозга, я, припоминаю, как два года назад начиналась наша история по разработке приложений для SmartTv. Если коротко, то это был АД!!! богатейший опыт.

image


Однако, хотелось бы получить этот опыт сразу, не наступая на недокументированные грабли, разложенные по всей технологии, и специальные детские грабли разложенные каждым вендором отдельно. Но как говорится «c'est la vie» и нам пришлось пробиваться сквозь тернии к звёздам!

В итоге мы получили кроссплатформенную расширяемую библиотеку для всех SmartTv.
И имя этой библиотеке — SmartBox. Opensource, а потому постоянно в процессе разработки и документирования.

Координаты и демки Smartbox




Предпосылки к созданию библиотеки


Несмотря на то, что почти всё SmartTv стоит на браузерных движках (Gecko, Webkit), есть у каждого отдельного вендора свои баги нюансы и баги недокументированные возможности. Собственно отсюда всё зло:

  • Невозможность писать один раз. Несмотря на созданные вендорами телевизоров альянсы и даже SDK, как ни старайся, а несколько приложений делать. Да и плюс к этому, есть вендоры, которым этот альянс за глаза не нужен, например, Samsung. Итого: если появится еще одна платформа или вы захотите расширить приложение на существующую, вам придётся не сладко.

  • Невозможность писать один раз для одного вендора. Да, как ни удивительно, но есть и такое. Различие вёрстки, различные движки браузеров, различие API объектов. Голова кругом! (например 2011 и 2012 и 2013 TV Samsung)

  • Нежелание использовать чужое. Здесь это как раз оправданный баг сознания. Под чужим я понимаю специализированные разные элементы управления интерфейсом: клавиатуры, селекты, инпуты, формы и т.д. У каждого вендора они, к сожалению, разные. Попробовав однажды — откажешься навсегда! А откажешься из-за банальной непереносимости на другие платформы.

  • Необходимость использовать чужое. Есть целый комплекс низкоуровневых для TV API, который нет возможности, а порой и желания переносить на TV-братьев по разуму. К таким мы относим: видеоплееры, системы защиты контента, DRM и т.д.

  • Сырость технологии в целом. Действительно, редкий фронтэнд программист сядет и с лёту сделает приложение для SmartTV, а тем более для нескольких разом. К тому же, как я уже говорил, детские грабли, разложенные каждым вендором отдельно, создают некоторые болевые ощущения в области их удара после обнаружения. Более глубокое осознание проблемы заключается в диком желании писать код абстрагируясь от конечного устройства. Это полезно как на первом этапе знакомства с технологией, так и после досконального изучения всего сущего в Smart Tv.

  • Альтруизм. Избавляем мир от граблей! Особенно детских.

image


Возможности библиотеки SmartBox


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

Также мы изучили исходники наших конкурентов братьев по оружию — i*i, yo*a, TV*avr, Z**mbyBox и иных видео сервисов. (Откуда и каким способом они были получены я не знаю, даже не спрашивайте). Из этих исходников мы просто выяснили, что все мы идём одной дорогой к счастливому будущему SmartTv.

В итоге сели и всё переделали написав библиотеку, которая упростила нам жизнь в разы. И, надеемся, что упростит и начинающим «смартистам».

Из возможностей:

  • Писать абстрактный код основываясь на API библиотеки, а не каждого TV или приставки (и это реально работает).
  • Расширять приложения на различные платформы без перепиливания самого приложения.

Поддерживаемые платформы:

Пока мы используем термин triple penetration, т.е. имеем проникновение в 3 платформы:

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

Из плагинов на сегодняшний день:

  • Методы отдельных платформ,
  • Консоль Лог,
  • Навигация (Логика и возможности описаны очень подробно в документации),
  • Поля ввода,
  • Виртуальная расширяемая на любой язык или набор символов клавиатура,
  • Голосовое управление (актуально для Samsung),
  • Управление жестами,
  • Легенда,
  • Плеер,
  • Абстракция LocalStorage — хранение данных на конечных устройствах.

image

TODO на ближайшее будущее


  • Написать более высокоуровневый framework.
  • Внедрять поддержку других Вендеров помимо лидеров (Sony, Panasonic, DuneHD, др).
  • Фичи и баги.

Всем спасибо и хорошего окончания недели!

PS:
  • Возможные баги в браузере не являются аномалией. Песня о другом.
  • Надеюсь Сашка не засудит меня как мистера Дурова.
  • Вероятно не на все тонкости смогу ответить. Потому инвайты можно слать заслуженным разработчикам:
    • Чинин Денис (chininden[at]gmail.com) — девелопер,
    • Полецкий Артём (artempoletsky[at]gmail.com) — девелопер,
    • Попович Илья (Loshadushka[at]gmail.com) — тестер-языковед-переводчик,
    • Шамгунов Ильдар (il.shamgunov[at]gmail.com) — режиссёр и оператор,
    • Логинов Павел (@PLoginoff) — критик и главный редактор.



UPD:

Вышла статья о том как создать и запустить приложение.
Создание кроссплатформенного Smart TV приложения на базе библиотеки SmartBox для Samsung, LG, Philips и других

UPD2:

Внедрена поддержка STB Mag 200/250
Dmitriy Paunin @ZmeeeD
карма
17,0
рейтинг 20,8
Пользователь
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (55)

  • +76
    Картинка для привлечения внимания отменная.
    • –1
      А кто это?
      • +55
        Александра Серова (педагог, писатель, актриса)
        • 0
          А ну если такая известная, то ясно. Просто не понял коммент — лицо как лицо, где там отменность…
          • +21
            Святой человек.
            • –15
              Ну да, святой человек)
              image
              • +3
                Что за дурацкая привычка лепить картинки к словам. Вы уже не можете достаточно емко выразить мысль только словами?
                • +5
                  Наверное это смайлик ^_^
                • 0
                  То есть все те, кто вставляют картинки, не могут выразить мысль только словами?

                  Ограничений на способы выражения мысли на хабре нету, так что моя картинка с мемом «Врунишка» в рамках закона)
                  Другое дело, что многим, видимо, не так понравился этот мем, это дело вкуса.
          • 0
            У кого-то и того нет.
      • +44
        One_Two: А кто такой Саша Грей?
        ЖёлтыйДракончикД: Сэр Александр Грей (англ. Sir Alexander Gray; 6 января 1882 – 17 февраля 1968) – шотландский экономист, поэт и переводчик.
        One_Two: и все на него дрочат??? с ума посходили что ли?
        catsmile: у нас тут интеллектуальное общество, знаете ли.

        БАШ
      • +3
        То есть вы поняли что разговор не об отменном телевизоре, а о девушке, но кто она вы не знаете?
      • 0
        А кто это?

        Как мы Вам завидуем!
    • –1
      Логично же — «triple penetration»
    • 0
      Да не очень картинка-то. Глаза прикрыты несимметричто, и кажется, что левая (от зрителя) сторона лица отекла.
      • +1
        Интересно, а то, что у нее на левом глазу тени забыли нанести — только мне кажется?
    • +1
      Странно, у меня ощущение, что я её где-то уже видел…
  • 0
    Вопрос по делу, при запуске SmartBox спрашивает пользователя, есть ли зрителю 18?
    • 0
      Резонный вопрос — зачем? И если вы о демке, то там нет ничего из категории 0+
      И это просто демка… не продукт.
      • 0
        Эх… Тогда верно...
        Картинка для привлечения внимания отменная.
  • +1
    Внедрять поддержку других Вендеров помимо лидеров
    Благое дело делаете…
    Кстати Philips'у к большему моему сожалению, не долго осталось быть в лидерах, т.к. скоро они "будут делать только лампочки".
    Немного оффтоп: по philips-ам у меня вообще странная картина вырисовывается:
    — класное железо, при том, что
    — софт — говно баговый донельзя.
    — на баг-репорты забивают, на запрос «дайте ваши исходники, т.к. опенсорс» вроде как дали, но на самом деле не совсем, потому что залить поправленый код не получится (нужен ключ для подписи, а его не дают).
    • 0
      дада… Филипс много чем себя не зарекомендовал, халатным отношением как минимум, тормозными телеками, отсутствие лидирующих вендоров защиты контента.
  • +2
    Джиквери в плагинах!
    Заглянул в клавиатуру, а там — использование jQuery предполагается. А это — потери десятков миллисекунд, т.к. телевизоры на порядок медленнее компьютеров. Я бы писал системные вещи на нативном коде, чтобы не утяжелять исполнение для пользователей плагинов. (А если у них вообще джиквери нет?)
    • +3
      Если нет jQuery, его всегда можно подключить. Это раз.
      Скорее вы имели ввиду потери при навигации (это отдельный плагин), и да мы очень хотели не использовать эту зависимость, однако пришлось (по разным причинам). Это два.
      Но мы стремимся к оптимизации и ждём pull request'ов :)

      + по лабораторным юзерским испытаниям, нас пока удовлетворяют отклики интерфейса (это видно из видео — скорость приемлемая)
    • 0
      И для того же самсунга где встроен jq лохматых версий мы используем более свежий подключая его в коде приложения.
  • –5
    лошадушка ))) это пять ))
  • 0
    А что умеет воспроизводить «Плеер» в комплекте?
    • +2
      Список форматов зависит от платформы. Смотрите, что заявлено в спецификации устройства. Под каждую платформу делается прослойка.
    • +2
      Добавлю. Philips, LG, Samsung в полной мере поддерживают в качестве VOD — mp4/h264, в качестве потокового — HLS v3. Этого вполне достаточно.

      Поддержка DRM:
      • Verimatrix — Samsung 2012+, LG 2011+, Philips нет и уже не будет;
      • Widevine — Samsung 2011+, LG 2011+, Philips (это лучший вариант в плане документации);
      • PlayReady — Samsung 2011+, LG 2011+, Philps (не проверяли).


      Спека под Samsung: developer.samsung.com/devices/tv-specs
      • 0
        Спасибо, интересует для реализации IPTV плеера, есть конечно nStreamLmod, но он стал платный, да и дизайном не плещет. Внутри используется flash плеер, который очень примитивен, например вместо открытие нового потока, событием, они убивают старый и создают новый.
        По этому и интересуюсь, надо ли будет использовать свой flash для просмотра IPTV через udp.
        • 0
          Говорю про Samsung. Свежую версию не копали. В старой версии использовался нативный плеер. Он поддерживает проигрывание udp://@. Если всё же возникнет необходимость использовать флеш, то всего лишь нужно будет добавить прослойку. Для проигрывания HLS в браузере мы подключали FlowPlayer.
  • +4
    Также мы изучили исходники наших конкурентов братьев по оружию — i*i, yo*a, TV*avr, Z**mbyBox и иных видео сервисов.

    Z**mbyBox это отсыл к сервису Zoomby или нашему фреймвоку ZombieBox'у? :)
    Рад, что появился ещё один игрок на сцене. Предлагаю дружить!
    • +1
      к вам, к вам :) Давайте дружить. Общее дело делаем же
  • 0
    Посмотрел на КДПВ и тут я забыл зачем пришел в пост…
  • +1
    Спасибо за статью. Тема и правда плохо документирована, хотя уже должна быть предельно популярна.
    Список приложений в ТВ сторах довольно скуден (сужу по LG). Возможно это объясняется слабым железом и не возможностью смотреть ТВ и юзать приложение одновременно…
  • 0
    Подскажите пожалуйста а DemoApp из репозитория на Samsung ue40f6400 не установится да?
    • 0
      На моделях 2013 приложение будет работать без каких-либо проблем. Да, правильней в статье было бы указать как «Samsung 2011+».

      Единственное, что установке может помешать пресловутый «Security paper». Но это не наша вина. С сигнатурой разработчика всё будет работать отлично.
  • 0
    Подскажите пожалуйста, а как быть владельцам Samsung, скажем 2009, 2010 годов?

    Для них планируется поддержка?

    Насколько мне известно, там так же, есть некое подобие Smart TV.

    • 0
      На samsungdforum.com можно найти лишь упоминание про 2010 год. Мы подумаем насчет этого, честно. И соизмерим свои трудозатраты по отношению к доле телевизоров со SmartTV до 2011 года. Но, насколько я помню, до этого продавались по большей части устройства без Smart («простой телевизор»).
    • 0
      Да и сам Самсунг почти не поддерживает эти устройства же с «неким ПОДОБИЕМ Smart TV»
  • 0
    backbone? Для чего?
    • 0
      Для событий. Нам тоже он не очень нравится. Потому Артём и создал Frontbone. Можете попробовать.
  • 0
    Все хорошо и начинание отличное, хочется пожелать удачи. Одно НО, Вы бы еще выложили краткий ридмик как создать приложение скажем для LG и как его поместить в телевизор, а то не все в этом вопросе гуру :)
    • +1
      Следите за выпусками. В работе статья по поводу «howToUse» на примере демки, которую вы видели!
    • 0
      Вот специально для вас habrahabr.ru/post/211236/#upd :)
      • 0
        Здорово, огромное спасибо! Попробую.
  • 0
    Раз уж вы в это вляпались, скажите, есть ли смысл писать под SmartTV? Кто те люди, которые с телевизионного пульта в интернет ходят? Может приучать пользователя к различным hdmi-свисткам и писать под android?
  • +1
    Если коротко, то это был АД!!!

    О как я вас понимаю! Это реально был ад, особенно на заре(2010-2011 гг). Я пилил тогда одну вещь под Samsung TV, удалось даже App Certification пройти. Как вспомню так вздрогну.
  • 0
    Зависимости: jQuery(1.8.1!+),Underscore(или lodash), Backbone. Не слишком жирно для SmartTV?
    Разработчики некоторых плееров, например Dune, очень настойчиво (в личной переписке) рекомендуютне юзать jQuery.

    • 0
      Насчет jQuery. Просто при использовании нужно понимать внутреннее устройство, как делается каждый конкретный селектор. Ещё совет: под разработку в качестве основного устройства брать самое медленное (Samsung 2011). Иначе потом придется сидеть с профайлером и считать количество вызовов.

      • 0
        > брать самое медленное (Samsung 2011).
        Как же вам повезло, если самый тормозной Samsung 2011. Это же просто реактивный истребитель по сравнению с Phillips.
    • +1
      Причины? От чего такие рекомендации? Это же всего на всего js либа как и собственно ваш код.
      Жирно или нет решать разработчику приложения, нас устраивают скорости на поддерживаемых устройствах. Да как я писал уже, стремимся к оптимизации и ввиду того, что проект opensource, ждём pull request'ов с лучшими решениями :)
  • 0
    О, раз уж пошло о Smart TV.
    Почему они все так тупят на IPTV? Буферизация перед началом проигрывания доходит до 10 сеукнд :(. Замечено на разных LG и Samsung, с разными приложениями.
    • 0
      В продакшене мы с этим не работали, больше OTT решения. Нужно поиграться с настройками буферов (начальный, полный), подобрать оптимальный размер. Тогда запуск становится быстрым. Однако, картинка у нас всё равно в самом начале была поломанная. Возможно, это уже на совести вещателей.

      В SmartBox пока нет установки буферов через общий конфиг. Добавьте задачу на гитхабе))
      • 0
        У меня IPTV идёт по HTTP — там всё так же, как и в OTT. Разве что канал по дефолту постабильней.
        Поломанная картинка вначале на UDP — это нормально, бывает.

        Взял и добавил. github.com/immosmart/smartbox/issues/16

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.