Dla zespołów technicznych

Pod maską

Odtwarzacze oparte na Dockerze, SaaS API-first, MCP do integracji z AI — wszystko, czego Twój zespół techniczny potrzebuje do oceny.

Platforma SaaS

media-player.app to w pełni zarządzana usługa chmurowa. Bez własnego serwera, bez instalacji, bez konserwacji. Ty skupiasz się na treściach — my zajmujemy się infrastrukturą.

Hostowane i zarządzane

Bez serwera on-premise — SaaS z chmury
Automatyczne aktualizacje i konserwacja platformy
Multi-tenant: Twoje dane są ściśle izolowane
Hosting w UE, zgodność z RODO
Dostępność API i panelu na poziomie 99,9%
Bez bazy danych ani serwera WWW do zarządzania

Docker jako środowisko uruchomieniowe

Oprogramowanie odtwarzacza działa jako kontenery Docker
Działa na każdym Linuksie z Dockerem (arm64 + amd64)
Raspberry Pi, Intel NUC, Mini-PC, Cloud VM, Thin Client
Bez specjalnego systemu operacyjnego — wystarczy standardowa instalacja Dockera
Obrazy kontenerów dystrybuowane przez prywatny rejestr
Architektura 3 kontenerów: Agent, Playback, Heartbeat

Architektura

Każdy wyświetlacz jest zasilany przez trzy izolowane kontenery Docker. Działa na dowolnym systemie Linux z Dockerem — od Raspberry Pi po serwery x86. Jasny podział odpowiedzialności, niezależna skalowalność i możliwość indywidualnej aktualizacji.

Agent

Warstwa sterowania

Rejestracja urządzeń, zarządzanie tokenami, pobieranie treści i harmonogramowanie playlist. Udostępnia lokalne API na porcie 7071 do sterowania kontenerem odtwarzania.

GoREST APISHA256Plan Sync

Playback

Warstwa odtwarzania

Zunifikowane lokalne API na porcie 7070. Używa mpv do sprzętowo akcelerowanego wideo (DRM/KMS) i Chromium w trybie kiosku do treści webowych. Zarządza przejściami między elementami.

mpvChromiumDRM/KMSVAAPI

Heartbeat

Monitoring

Wysyła regularne raporty kondycji do backendu: temperatura CPU, obciążenie, pamięć, dysk. Implementuje logikę watchdog do automatycznego restartu kontenerów.

Health ReportsWatchdogAuto-Recovery

Architektura przechowywania

Wszystkie operacje intensywnie zapisujące dane na wolumenach Docker (chroni kartę SD)
/var/lib/signage/config/ — Konfiguracja urządzenia i tokeny
/var/lib/signage/content/ — Zasoby medialne, indeksowane wg SHA256
/var/lib/signage/state/ — Pliki stanu i kondycji (JSON)
/var/lib/signage/cache/ — Pliki tymczasowe
/var/lib/signage/db/ — Opcjonalna kolejka SQLite

Mechanizm aktualizacji

Aktualizacje obrazów kontenerów przez Docker Registry
Sprawdzanie kondycji po aktualizacji, automatyczne przywracanie w razie błędu
Mechanizm ratunkowy oparty na plikach blokady
Bez restartu — stopniowa wymiana kontenerów
Kolejka offline dla oczekujących aktualizacji podczas braku sieci

Obsługiwane urządzenia

Oprogramowanie odtwarzacza jest oparte na Dockerze i działa na każdym systemie Linux z Dockerem. Zoptymalizowane dla ARM64 (Raspberry Pi) i AMD64 (serwery x86, mini-PC). Wsparcie dla profesjonalnych wyświetlaczy z SoC jest planowane.

Raspberry Pi 5

Rekomendowany
BCM2712, Quad-Core Cortex-A76 @ 2.4 GHz
4 GB lub 8 GB LPDDR4X-4267
GPU VideoCore VII — dekodowanie sprzętowe H.265 4K60
2x Micro-HDMI 2.1 (do 4Kp60)
MicroSD (A2) lub NVMe przez HAT
Zasilanie 5V/5A USB-C
Zalecane: pasywny radiator lub obudowa z wentylatorem

Raspberry Pi 4

Obsługiwany
BCM2711, Quad-Core Cortex-A72 @ 1.8 GHz
2 GB, 4 GB lub 8 GB LPDDR4-3200
GPU VideoCore VI — dekodowanie sprzętowe H.265 4K30
2x Micro-HDMI 2.0 (4Kp30 lub 1080p60)
MicroSD (zalecana klasa A2)
Zasilanie 5V/3A USB-C
Wystarczy pasywny radiator

Linux x86 / Mini-PC

Obsługiwany
Dowolny system Linux x86_64 z Dockerem (Ubuntu, Debian, Alpine, ...)
Intel NUC, Lenovo ThinkCentre, Dell OptiPlex Micro itp.
Akceleracja GPU przez VAAPI (Intel/AMD)
Wyjście HDMI, DisplayPort lub VGA
Min. 2 GB RAM, 8 GB pamięci masowej
Ethernet lub WiFi
Idealny dla lokalizacji z istniejącym sprzętem x86

Profesjonalne wyświetlacze z SoC

Planowane
Philips/PPDS (Android SoC), Samsung (Tizen/SSSP), LG (webOS), Sony BRAVIA
Wbudowany SoC w wyświetlaczu — bez dodatkowego sprzętu
Natywny odtwarzacz pełnoekranowy w trybie kiosku / lock-task
Centralne zarządzanie przez ten sam panel
Idealny do wdrożeń na dużą skalę z profesjonalnymi wyświetlaczami
Raportowanie odtwarzania (proof of play) jak na wszystkich platformach
Oddzielne środowisko uruchomieniowe dla każdego ekosystemu producenta

Silnik odtwarzania

Hybrydowe odtwarzanie: mpv do wideo i zdjęć z akceleracją sprzętową przez DRM/KMS/VAAPI, Chromium do treści webowych w trybie kiosku. Kontener agenta steruje odtwarzaniem poprzez lokalne REST API.

mpv — Wideo i zdjęcia

Sprzętowe dekodowanie przez V4L2 M2M (Raspberry Pi) lub VAAPI (x86). Wyjście framebuffer przez DRM/KMS dla minimalnych opóźnień, bez X11 ani Wayland.

Bezpośrednie wyjście DRM/KMS (bez serwera wyświetlania)
Sprzętowe dekodowanie V4L2 M2M na Pi 4/5
Obsługa rotacji: 0°, 90°, 180°, 270°
Przejścia: Zanikanie, Przesunięcie w lewo, Przesunięcie w prawo, Cięcie
Konfigurowalny czas wyświetlania dla każdego elementu
Tryb pętli dla pojedynczych filmów i playlist

Chromium — Treści webowe

Bezgłowy Chromium w trybie kiosku do stron HTML, dashboardów i treści interaktywnych. Sterowany przez Chrome DevTools Protocol (CDP).

Tryb kiosku: bez ramek, bez interfejsu przeglądarki
Sterowanie CDP do nawigacji i zrzutów ekranu
Pełna obsługa JavaScript i CSS
Lokalne pliki HTML i zewnętrzne adresy URL
Automatyczny fallback przy błędzie połączenia CDP
Wykładnicze wycofywanie przy problemach z połączeniem
FormatKodek / DekoderAkceleracja sprzętowa
H.264 / AVCh264_v4l2m2m✓ Sprzętowa
H.265 / HEVChevc_v4l2m2m✓ Sprzętowa
VP9vp9_v4l2m2m✓ Sprzętowa
AV1av1 (SW)— CPU
JPEG / PNGGPU decode✓ Sprzętowa
HTML / CSS / JSChromium— CPU

Pipeline treści

Od wgrania do odtworzenia: każdy plik jest weryfikowany, wersjonowany i atomowo synchronizowany z odtwarzaczami. Odtwarzacz zawsze pracuje w spójnym stanie — nigdy z częściowo pobranym plikiem.

Wgrywanie i wersjonowanie

Wgrywanie metodą przeciągnij i upuść przez panel SaaS
Automatyczne rozpoznawanie typu MIME
Wersjonowanie: każde wgranie tworzy nową wersję
Poprzednie wersje są zachowywane (możliwość przywrócenia)
Hash SHA256 obliczany przy wgrywaniu

Weryfikacja i przechowywanie

Przechowywanie adresowalne przez treść: pliki indeksowane wg SHA256
Deduplikacja: identyczne pliki przechowywane tylko raz
Sprawdzenie integralności przed aktywacją na odtwarzaczu
Uszkodzone pobierania są automatycznie ponawiane

Synchronizacja planu i aktywacja

Plan = wersjonowana migawka: playlisty + media + harmonogramy
Atomowa aktywacja: wszystko albo nic, bez stanów pośrednich
Pobieranie różnicowe: tylko zmienione pliki
Możliwość pracy offline: ostatni prawidłowy plan pozostaje aktywny
Wersjonowanie oparte na znacznikach czasu ISO

Bezpieczeństwo

Izolacja multi-tenant, szyfrowana komunikacja i uwierzytelnianie oparte na tokenach. Żadne urządzenie nie ma dostępu do danych innego tenanta.

Uwierzytelnianie

Uwierzytelnianie API oparte na tokenach (Bearer Tokens)
Oddzielne zakresy tokenów dla panelu, odtwarzacza i automatyzacji
Rotacja tokenów dla urządzeń
Limity zapytań na wszystkich endpointach API

Izolacja tenantów

Ścisła separacja na poziomie bazy danych (tenant_id w każdej tabeli)
Egzekwowanie zakresu przez middleware
Brak możliwości dostępu między tenantami na poziomie API
Oddzielna biblioteka mediów i konfiguracja dla każdego tenanta

Bezpieczeństwo urządzeń

8-cyfrowy kod parowania z TTL (wygasa po 15 min)
Token urządzenia wydawany po pomyślnym sparowaniu
Powiązanie z ID urządzenia: token przypisany do konkretnego urządzenia
Automatyczna blokada po wielokrotnych nieudanych próbach

Bezpieczeństwo transportu

HTTPS/TLS dla całej komunikacji API
Suma kontrolna SHA256 dla każdego pobrania treści
Brak nieszyfrowanych połączeń w środowisku produkcyjnym
Konfiguracja CORS ograniczona do dozwolonych źródeł

REST API

Cała platforma jest API-first. Wszystko, co można zrobić w panelu, da się zautomatyzować przez REST API. Dokumentacja OpenAPI w zestawie.

Endpointy API (fragment)
# Pobierz odtwarzacze
GET /api/v1/players
GET /api/v1/players/{id}
GET /api/v1/players/{id}/health

# Utwórz treść
POST /api/v1/media-items
POST /api/v1/playlists
POST /api/v1/channels

# Przypisania
PUT /api/v1/playlists/{id}/items
PUT /api/v1/channels/{id}/playlists

# Uwierzytelnianie
Authorization: Bearer {token}
X-Tenant-ID: {tenant_id}
Content-Type: application/json

RESTful JSON API

Spójna struktura zasobów, metody HTTP, standardowe kody statusu. Żądania i odpowiedzi w formacie JSON.

Dokumentacja OpenAPI 3.1

Automatycznie generowana interaktywna dokumentacja API. Testuj endpointy bezpośrednio w przeglądarce.

Paginacja kursorowa

Wydajna paginacja dla dużych zbiorów danych. Filtrowanie, sortowanie i wyszukiwanie na wszystkich endpointach listowych.

MCP — Integracja z AI

media-player.app implementuje Model Context Protocol (MCP) jako pełnoprawną powierzchnię integracyjną. Oprócz REST API, agenty AI, przepływy n8n i pipeline'y LangChain mogą sterować platformą bezpośrednio.

Czym jest MCP?

Model Context Protocol to otwarty standard komunikacji między agentami AI a systemami zewnętrznymi. Zamiast zastrzeżonego API, dowolny klient z obsługą AI (Claude, GPT, własne modele LLM) może sterować platformą za pomocą narzędzi, zasobów i promptów.

Narzędzia MCP

Tylko odczyt: status odtwarzacza, przegląd floty, aktywne plany, heartbeaty, logi błędów
Diagnostyka: żądanie zrzutów ekranu, tworzenie pakietów logów, raporty odtwarzania
Operacyjne: przypisywanie kanałów, publikowanie planów, zmiana ustawień (z kontrolą zakresu)
Raportowanie: zagregowane zapytania o dowody odtwarzania

Przypadki użycia

Bot wsparcia oparty na AI: diagnostyka i rozwiązywanie problemów przez czat
n8n / Make.com: zautomatyzowane przepływy pracy (np. nowa treść → aktualizacja playlisty)
LangChain / CrewAI: agenty AI zarządzające Twoją flotą digital signage
Własne dashboardy: MCP jako uniwersalny interfejs danych

Bezpieczeństwo

Tokeny automatyzacji z zakresem — szczegółowe uprawnienia na integrację
Tryb zatwierdzania dla krytycznych operacji (restart, aktualizacja)
Niezmienialny dziennik audytu każdego wywołania narzędzia MCP
Ścisła walidacja schematu JSON, bez dowolnego wykonywania
Limity zapytań na token i tenanta

Monitoring i telemetria

Każdy wyświetlacz wysyła dane o kondycji do backendu w konfigurowalnych odstępach czasu. Kontener heartbeat zbiera metryki systemowe i zdarzenia odtwarzania.

MetrykaŹródło
CPU Temperature/sys/class/thermal
CPU Load/proc/loadavg
Memory Usage/proc/meminfo
Disk Usagestatvfs()
Network LatencyAPI ping
Playout EventsPlayback Engine
Container StatusDocker API
Display StateHDMI / CEC

Wymagania sieciowe

Odtwarzacze potrzebują wychodzącego połączenia internetowego. Nie trzeba otwierać żadnych portów przychodzących — odtwarzacz łączy się z backendem, nie odwrotnie.

Połączenia wychodzące

HTTPS (443) → api.media-player.app (API, heartbeat)
HTTPS (443) → registry.media-player.app (obrazy kontenerów)
HTTPS (443) → cdn.media-player.app (pobieranie treści)
DNS (53) → Dowolny resolver DNS
NTP (123) → Synchronizacja czasu (zalecane)

Przepustowość i tryb offline

Początkowa synchronizacja: zależy od rozmiaru treści (jednorazowo)
Bieżąco: < 1 MB/dzień na heartbeaty i wywołania API
Treści są buforowane lokalnie, odtwarzane offline
Synchronizacja różnicowa: tylko zmienione pliki
Zalecenie: 10 Mbps dla płynnego pierwszego pobrania

W skrócie

Platforma SaaS

Hostowane w chmurzeMulti-TenantREST APIOpenAPI 3.1MCP

Środowisko odtwarzacza

DockerGompvChromiumAlpine Linux

Platformy

Raspberry Pi 4/5Linux x86_64ARM64AMD64

Integracja

REST APIMCPWebhooksn8nLangChain

Monitoring

Heartbeat AgentHealth APIPlayout EventsWatchdog

Bezpieczeństwo

HTTPS/TLSToken AuthTenant IsolationAudit LogGDPR

Przekonany?

Wypróbuj media-player.app za darmo lub sprawdź dokumentację API.

Twój adres e-mail wykorzystamy wyłącznie do powiadomienia o starcie. Żadnego spamu.

Dokumentacja API