Архитектура Lampa TV: принципы работы и устройство системы
Инженерный разбор архитектуры Lampa TV: клиентский JS-рантайм, изоляция от стриминга, связь с TorrServer Matrix и каталоги TMDB. Узнайте, как устроена оболочка.
Самое важное из статьи:
- Lampa представляет собой легковесный SPA-клиент (Single Page Application) на чистом JavaScript, не содержащий внутри видеофайлов и серверных трекеров.
- Децентрализация архитектуры обеспечивает юридическую чистоту: приложение лишь визуализирует каталоги метаданных TMDB и запускает локальные медиапотоки.
- Связь с P2P-сетями вынесена на внешний движок TorrServer Matrix, взаимодействующий с оболочкой по локальному HTTP REST API.
Используйте наш интерактивный конфигуратор плагинов или проверьте статус серверов и зеркал онлайн.
Медиаоболочка Lampa кардинально изменила модель потребления домашнего видеоконтента на Smart TV. В отличие от традиционных онлайн-кинотеатров со сложной закрытой инфраструктурой, Lampa построена по модульному децентрализованному принципу. Понимание внутренних механизмов работы этой среды позволяет не только грамотно ее настраивать, но и мгновенно устранять возникающие технические сбои.
Концепция тонкого клиента и изоляция данных
В основе Lampa лежит архитектурная парадигма Single Page Application (SPA). Фронтенд оболочки представляет собой набор статических файлов, написанных на чистом JavaScript без оверхеда в виде тяжелых фреймворков React или Angular. Это критично для аппаратных платформ Smart TV, где объем оперативной памяти часто ограничен 1.5 ГБ, а частота ядер процессора редко превышает 1.2–1.5 ГГц.
Клиент выполняет три фундаментальные задачи:
- Отрисовка адаптивного интерфейса с шагом сетки под пульты дистанционного управления.
- Обработка пользовательского ввода с перехватом кодов клавиш DPAD и Back.
- Маршрутизация запросов к внешним поставщикам метаданных и локальным службам.
Архитектура строго разделена на независимые слои, что исключает единую точку отказа (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.
- Подключенный плагин парсера обращается к агрегаторам и получает magnet-ссылку.
- Lampa отправляет POST-запрос с хешем раздачи на эндпоинт
http://127.0.0.1:8090/torrent/upload. - Демон TorrServer подключается к swarm-сети BitTorrent, запрашивает метаданные файла и начинает последовательное скачивание сегментов в кольцевой буфер ОЗУ объемом 200–500 МБ.
- Как только буфер предварительной загрузки (Preload) заполняется на 100%, сервер генерирует прямой линейный URL вида
http://127.0.0.1:8090/stream/fname.mkv?link=HASH. - 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 хранит пользовательские настройки, списки установленных плагинов, историю просмотров и закладки, избавляя от повторной настройки при смене устройства.