Перейти к содержимому

Архитектура Lampa TV: принципы работы и устройство системы

Инженерный разбор архитектуры Lampa TV: клиентский JS-рантайм, изоляция от стриминга, связь с TorrServer Matrix и каталоги TMDB. Узнайте, как устроена оболочка.

6 мин чтения
Архитектура Lampa TV: принципы работы и устройство системы

Самое важное из статьи:

  • Lampa представляет собой легковесный SPA-клиент (Single Page Application) на чистом JavaScript, не содержащий внутри видеофайлов и серверных трекеров.
  • Децентрализация архитектуры обеспечивает юридическую чистоту: приложение лишь визуализирует каталоги метаданных TMDB и запускает локальные медиапотоки.
  • Связь с P2P-сетями вынесена на внешний движок TorrServer Matrix, взаимодействующий с оболочкой по локальному HTTP REST API.
Полезные сервисы Lampa
Бесплатно

Используйте наш интерактивный конфигуратор плагинов или проверьте статус серверов и зеркал онлайн.

Медиаоболочка Lampa кардинально изменила модель потребления домашнего видеоконтента на Smart TV. В отличие от традиционных онлайн-кинотеатров со сложной закрытой инфраструктурой, Lampa построена по модульному децентрализованному принципу. Понимание внутренних механизмов работы этой среды позволяет не только грамотно ее настраивать, но и мгновенно устранять возникающие технические сбои.

Концепция тонкого клиента и изоляция данных

В основе Lampa лежит архитектурная парадигма Single Page Application (SPA). Фронтенд оболочки представляет собой набор статических файлов, написанных на чистом JavaScript без оверхеда в виде тяжелых фреймворков React или Angular. Это критично для аппаратных платформ Smart TV, где объем оперативной памяти часто ограничен 1.5 ГБ, а частота ядер процессора редко превышает 1.2–1.5 ГГц.

Интерфейс медиаоболочки Lampa с каталогом фильмов на экране телевизора

Клиент выполняет три фундаментальные задачи:

  1. Отрисовка адаптивного интерфейса с шагом сетки под пульты дистанционного управления.
  2. Обработка пользовательского ввода с перехватом кодов клавиш DPAD и Back.
  3. Маршрутизация запросов к внешним поставщикам метаданных и локальным службам.

Архитектура строго разделена на независимые слои, что исключает единую точку отказа (Single Point of Failure).

Уровень архитектурыИспользуемый стек технологийВыполняемые функции
Интерфейсный слой (UI)HTML5, CSS3 Grid, Vanilla JSНавигация по карточкам, фокус кнопок, рендеринг постеров
Слой метаданныхTMDB REST API v3, CUB CloudПолучение описаний фильмов, трейлеров, персонализация
Слой расширенийДинамические JS-модулиПодключение онлайн-балансеров, парсеров и плейлистов
Транспортный слойHTTP/REST, WebSocketsПередача параметров воспроизведения в системный плеер
Стриминговый движокTorrServer MatrixСборка P2P-пакетов в линейный HTTP-видеопоток

Такая изоляция гарантирует правовую безопасность платформы: проект не содержит собственного контента и не осуществляет хостинг медиафайлов. Все взаимодействия с публичными серверами осуществляются через безопасные актуальные адреса и зеркала Lampa, что снижает риск простоя. Дополнительные возможности открывают проверенный каталог плагинов для Lampa и внешние онлайн-балансеры, подключаемые на лету.

Роль рантайма WebView на Smart TV

Поскольку оболочка написана на веб-технологиях, средой ее исполнения выступает системный компонент WebView. В зависимости от производителя телевизора стек различается:

  • LG webOS: Использует модифицированный движок Chromium (версии от 68 до 108 в зависимости от поколения webOS 3.5–24), доступный через контейнер Media Station X.
  • Samsung Tizen OS — базируется на форке WebKit/Chromium с проприетарными мультимедийными расширениями Samsung Product API, запускаемый через среду MSX или WGT-пакет.
  • Android TV / Google TV: Задействует компонент Android System WebView, обновляемый через Google Play.
  • Apple tvOS: оболочка работает в нативной обертке Luxo для Apple TV, транслирующей вызовы JavaScript в нативные API AVPlayer.

Для минимизации задержек интерфейса анимации карточек оптимизированы под GPU-композитинг с использованием CSS-свойств transform: translate3d() и will-change. Время отклика на нажатие стрелок пульта ДУ на процессорах уровня Amlogic S905X4 составляет не более 16 мс, что гарантирует стабильные 60 fps в меню. Практические шаги по развертыванию среды описаны в руководстве по установке Lampa на Smart TV.

Интеграция с локальным бэкендом TorrServer

Главная вычислительная нагрузка в связке ложится не на оболочку, а на стриминговый сервер TorrServer Matrix. Этот модуль написан на компилируемом языке Go и работает как локальный веб-сервер (по умолчанию на порту 8090).

Схема архитектурного взаимодействия оболочки Lampa и локального демона TorrServer Matrix

Взаимодействие происходит по следующему конвейеру:

  1. Пользователь выбирает фильм в каталоге Lampa.
  2. Подключенный плагин парсера обращается к агрегаторам и получает magnet-ссылку.
  3. Lampa отправляет POST-запрос с хешем раздачи на эндпоинт http://127.0.0.1:8090/torrent/upload.
  4. Демон TorrServer подключается к swarm-сети BitTorrent, запрашивает метаданные файла и начинает последовательное скачивание сегментов в кольцевой буфер ОЗУ объемом 200–500 МБ.
  5. Как только буфер предварительной загрузки (Preload) заполняется на 100%, сервер генерирует прямой линейный URL вида http://127.0.0.1:8090/stream/fname.mkv?link=HASH.
  6. Lampa передает эту ссылку встроенному или внешнему плееру (Vimu, Just Player, ExoPlayer).

Благодаря такой схеме телевизор или приставка не изнашивает постоянную флеш-память eMMC циклическими операциями записи. Весь поток проходит исключительно через оперативную память.

Модульная система плагинов: песочница и безопасность

Функциональность Lampa расширяется за счет внешних скриптов. Плагин представляет собой компактный JS-файл, загружаемый в рантайм через метод eval() или создание динамического тега <script>.

Для безопасного управления модулями реализована трехуровневая модель:

  • Изоляция глобального пространства имен: Каждый верифицированный плагин выполняется в собственной анонимной замыкающей функции (IIFE).
  • Перехват сетевых запросов: Поддерживается проксирование обращений через локальный сервер CORS, что предотвращает блокировку кросс-доменных запросов со стороны политики безопасности браузера.
  • Хранение конфигураций в LocalStorage: Персональные ключи авторизации и токены балансеров шифруются и не передаются в общий лог приложения.

Для сохранения конфигурации при переустановках используется учетная запись CUB. Оболочка сериализует список установленных расширений в компактный JSON-манифест и отправляет его на резервный сервер синхронизации по протоколу HTTPS.

Оптимизация сетевых протоколов и буферизации

При воспроизведении тяжелого контента с битрейтом от 60 до 120 Мбит/с в формате 4K HDR ключевым фактором стабильности становится управление сетевым стеком. Lampa непрерывно мониторит состояние буфера воспроизведения через события HTMLMediaElement.buffered и WebSocket-канал связи с TorrServer.

В случае проседания скорости скачивания интерфейс выводит оверлей с текущими показателями пиров, скорости отдачи и процентом заполнения буфера. Это позволяет зрителю сразу увидеть причину микрозадержки без глубокого погружения в системные логи операционной системы. Если же буферизация не прекращается или приложение теряет связь с демоном, обратитесь к нашему практическому руководству по устранению сбоев и ошибок в Lampa.

Аппаратное декодирование и сквозной вывод звука

При воспроизведении высокобитрейтных дорожек в форматах Dolby Digital Plus (E-AC-3), TrueHD или DTS-HD Master Audio веб-оболочка не занимается декодированием аудиопотока самостоятельно. Декодирование аудио и видео ложится на аппаратный DSP-процессор чипсета телевизора или ТВ-бокса:

  • Режим прямого вывода (Bitstream / Pass-through): Плеер отправляет нетронутый цифровой поток через порт HDMI eARC напрямую на AV-ресивер или саундбар. В настройках Lampa это регулируется переключателем типа аудиотракта.
  • Преобразование многоканального звука в Stereo PCM: Если телевизор не имеет лицензии DTS (распространенная проблема в моделях LG и Samsung последних лет), внутренний плеер активирует программный даунмикс дорожки на лету с минимальной нагрузкой на CPU (менее 3–5%).

Контроль утечек оперативной памяти в режиме ожидания

Умные телевизоры редко выключаются полностью: при нажатии кнопки питания на пульте они переходят в дежурный режим Standby (быстрый сон). Если веб-оболочка остается в оперативной памяти неделями, циклические вызовы сетевых таймеров и накопление кэша картинок могут приводить к деградации интерфейса.

В архитектуре Lampa предусмотрен механизм автоматической очистки:

  • Сброс DOM-дерева неактивных вкладок: При переходе в подменю все невидимые карточки каталога выгружаются из памяти виртуального DOM.
  • Ограничение пула изображений: Кэш постеров жестко лимитирован 64 МБ в оперативной памяти, старые текстуры принудительно удаляются сборщиком мусора Garbage Collector.
  • Перезапуск WebSocket-сокетов: При выходе из режима сна сокеты к TorrServer инициализируются заново с проверкой RTT-пинга.
Интерактив
Мастер

Готовые плагины под вашу задачу

Ответьте на 3 вопроса о вашем ТВ, и мастер подберет проверенный набор скриптов.

  • 🍿 Онлайн-видео (балансеры)Без P2P
  • ⚡ 4K торренты (TorrServer)В стриме
  • 🟢 Зеркала CUB и плагиныАктуально
Запустить конфигуратор

Теги

Опубликовано:
Обновлено:

❓︎ Часто задаваемые вопросы (FAQ)

Хранятся ли медиафайлы или торрент-раздачи на серверах Lampa?

Нет. Серверы проекта отдают исключительно статический бандл разметки и логики интерфейса (HTML, CSS, JS). Все видеопотоки формируются либо локально через TorrServer, либо внешними балансерами.

Почему Lampa работает одинаково быстро на Android TV, Tizen и webOS?

Интерфейс собран без тяжелых сторонних фреймворков и исполняется встроенным движком WebView браузера телевизора с аппаратным ускорением рендеринга CSS transform.

Что происходит при отключении основного домена lampa.mx?

Пользователь может мгновенно переключиться на альтернативные зеркала или поднять собственную копию Lampac в локальной сети, сохранив полную работоспособность приложения.

Зачем приложению синхронизация через CUB?

Сервис CUB хранит пользовательские настройки, списки установленных плагинов, историю просмотров и закладки, избавляя от повторной настройки при смене устройства.