Не указан
50 ставок
ТЕХНИЧЕ ЗАДАНИЕ Разработка системы Digital Signage для сети рекламных экранов 1. Общий описание системыСистема предназначена для удаленного управления медиаконтентом (видео, изображения) на сети телевизоров под управлением Android TV.
Архитектура:Backend / Панель управления (Админка): PHP (Laravel / Yii2 или чистый PHP) + MySQL.Frontend (Плеер на ТВ): HTML5 / JavaScript (Одностраничное приложение), которое запускается на ТВ в полноэкранном режиме через приложение Fully Kiosk Browser.2. Функциональные требования: Панель управления (Админка на PHP)2.1. Управление экранами (Телевизорами)Возможность добавления/удаления экранов в системе.Каждому экрану присваивается: Название (гео-точка), уникальный ID (device_token) и статус (Онлайн/Офлайн).Мониторинг (Пинг): Отображение статуса ТВ в реальном времени. Если ТВ не отправлял запросов более чем 5 минут, окрашивать его статус в красный цвет (Офлайн).
2.2. Управление контентом (Медиатека)Загрузка файлов (видео, изображения) на сервер.Удаление файлов (с автоматическим удалением физического файла с сервера).Возможность просматривать (и изменять), на каких экранах транслируется каждый отдельный медиафайл.Настройка порядка воспроизведения файлов.
2.3. Серверное API (для связи с ТВ)Реализовать REST API (JSON):POST /api/ping — принимает от ТВ его ID, фиксирует время последней активности (для статуса Онлайн) и возвращает текущую версию плейлиста.GET /api/file/device_token — отдает актуальный JSON-массив с ссылками на медиафайлы, их порядком и настройками времени показа.3. Функциональные требования: Клиентский плеер (HTML5/JS на ТВ)Плеер является вебстраницей, которая открыта на ТВ. Главное задание клиента — автономность.3.1. Кеширование и синхронизация (Работа без интернета)При старте плеер запрашивает плейлист через API.Локальное хранилище: Все файлы из плейлиста (видео/изображения) JS должен загружать во внутреннюю память браузера (используя Cache API или IndexedDB). Стриминг (воспроизведение напрямую из интернета) запрещен.Синхронизация: Если на сервере добавлен новый контент, плеер загружает его в фоновом режиме, не прерывая текущий показ. После завершения загрузки — добавляет к трансляции. Если контент удален на сервере, плеер должен удалить его из локального кеша ТВ, чтобы не забивать память устройства.Офлайн-режим: При полном исчезновении интернета плеер бесконечно крутит по кругу последний успешно загруженный плейлист.
3.2. Воспроизведение и ротацияЦиклическое воспроизведение контента и согласно заданному в админке порядку.Для изображений должна настраиваться продолжительность отображения в секундах (по умолчанию 10 сек).Переходы между роликами должны быть плавными, без черных экранов и заметного перезагрузки страницы.
3.3. Логирование и контроль ошибок (Защита от сбоев)Обработка поврежденных файлов: Если видеофайл поврежден и не может воспроизводиться, плеер должен пропустить его и включить следующий по порядку, а не зависать на черном экране.Логи показов (Аналитика): Плеер должен записывать в локальную память факт каждого успешного воспроизведения ролика. При появлении интернета эти данные пачкой отправляются на сервер (POST /api/logs), чтобы в админке можно было увидеть статистику: "Ролик А на ТВ №3 был показан 450 раз за сутки и 2365 раз всего".4. Требования к оптимизации под Android TVИнтерфейс плеера не должен содержать никаких элементов управления (курсор, полосы прокрутки, кнопки). Только чистый контент на весь экран.JS-код должен быть оптимизирован по памяти (вовремя очищать неиспользуемые DOM-элементы и объектные URL), поскольку бюджетные телевизоры имеют жесткие ограничения по оперативной памяти и могут аварийно закрывать вкладку при утечке памяти через 12-24 часа непрерывной работы.