Per team tecnici

Sotto il cofano

Player basati su Docker, SaaS API-first, MCP per l'integrazione AI — tutto ciò che serve al tuo team tecnico per la valutazione.

Piattaforma SaaS

media-player.app è un servizio cloud completamente gestito. Nessun server da gestire, nessuna installazione, nessuna manutenzione. Tu ti concentri sui contenuti — noi gestiamo l'infrastruttura.

Hosted e gestito

Nessun server on-premise necessario — SaaS dal cloud
Aggiornamenti e manutenzione automatici della piattaforma
Multi-tenant: i tuoi dati sono rigorosamente isolati
Hosting EU, conforme al GDPR
Disponibilità API e dashboard al 99,9%
Nessun database o server web da gestire

Docker come runtime

Il software del player funziona come container Docker
Funziona su qualsiasi Linux con Docker (arm64 + amd64)
Raspberry Pi, Intel NUC, Mini-PC, Cloud VM, Thin Client
Nessun sistema operativo speciale necessario — basta un'installazione Docker standard
Immagini container distribuite tramite registry privato
Architettura a 3 container: Agent, Playback, Heartbeat

Architettura

Ogni display è alimentato da tre container Docker isolati. Funziona su qualsiasi sistema Linux con Docker — dal Raspberry Pi ai server x86. Responsabilità chiare, scalabili indipendentemente e aggiornabili singolarmente.

Agent

Piano di controllo

Registrazione dispositivo, gestione token, download contenuti e programmazione playlist. Fornisce un'API locale sulla porta 7071 per controllare il container di riproduzione.

GoREST APISHA256Plan Sync

Playback

Piano di riproduzione

API locale unificata sulla porta 7070. Utilizza mpv per video con accelerazione hardware (DRM/KMS) e Chromium in modalità kiosk per contenuti web. Gestisce le transizioni tra gli elementi.

mpvChromiumDRM/KMSVAAPI

Heartbeat

Monitoraggio

Invia report di stato regolari al backend: temperatura CPU, carico, memoria, disco. Implementa la logica watchdog per il riavvio automatico dei container.

Health ReportsWatchdogAuto-Recovery

Architettura storage

Tutte le operazioni di scrittura intensive su volumi Docker (protegge la scheda SD)
/var/lib/signage/config/ — Configurazione dispositivo e token
/var/lib/signage/content/ — Asset media, indicizzati per SHA256
/var/lib/signage/state/ — JSON di stato e salute
/var/lib/signage/cache/ — Download temporanei
/var/lib/signage/db/ — Coda SQLite opzionale

Meccanismo di aggiornamento

Aggiornamento immagini container tramite Docker Registry
Health check dopo l'aggiornamento, rollback automatico in caso di errore
Meccanismo di ripristino basato su lockfile
Nessun riavvio necessario — sostituzione rolling dei container
Coda offline per aggiornamenti in sospeso durante interruzioni di rete

Hardware supportato

Il software del player è basato su Docker e funziona su qualsiasi sistema Linux con Docker. Ottimizzato per ARM64 (Raspberry Pi) e AMD64 (server x86, mini PC). Il supporto per display commerciali con SoC è pianificato.

Raspberry Pi 5

Consigliato
BCM2712, Quad-Core Cortex-A76 @ 2.4 GHz
4 GB o 8 GB LPDDR4X-4267
GPU VideoCore VII — decodifica hardware H.265 4K60
2x Micro-HDMI 2.1 (fino a 4Kp60)
MicroSD (A2) o NVMe tramite HAT
Alimentatore USB-C 5V/5A
Consigliato: dissipatore passivo o case con ventola

Raspberry Pi 4

Supportato
BCM2711, Quad-Core Cortex-A72 @ 1.8 GHz
2 GB, 4 GB o 8 GB LPDDR4-3200
GPU VideoCore VI — decodifica hardware H.265 4K30
2x Micro-HDMI 2.0 (4Kp30 o 1080p60)
MicroSD (A2 consigliato)
Alimentatore USB-C 5V/3A
Dissipatore passivo sufficiente

Linux x86 / Mini-PC

Supportato
Qualsiasi Linux x86_64 con Docker (Ubuntu, Debian, Alpine, ...)
Intel NUC, Lenovo ThinkCentre, Dell OptiPlex Micro, ecc.
Accelerazione GPU tramite VAAPI (Intel/AMD)
Uscita HDMI, DisplayPort o VGA
Min. 2 GB RAM, 8 GB storage
Ethernet o WiFi
Ideale per sedi con hardware x86 esistente

Display commerciali con SoC

Pianificato
Philips/PPDS (Android SoC), Samsung (Tizen/SSSP), LG (webOS), Sony BRAVIA
SoC integrato nel display — nessun hardware esterno necessario
Player nativo a schermo intero in modalità kiosk / lock-task
Gestione centralizzata tramite la stessa dashboard
Ideale per rollout su larga scala con display commerciali
Report proof of play come tutte le piattaforme
Runtime separato per ogni ecosistema produttore

Motore di riproduzione

Riproduzione ibrida: mpv per video e immagini con accelerazione hardware tramite DRM/KMS/VAAPI, Chromium per contenuti web in modalità kiosk. Il container agent controlla la riproduzione tramite un'API REST locale.

mpv — Video e immagini

Decodifica con accelerazione hardware tramite V4L2 M2M (Raspberry Pi) o VAAPI (x86). Output framebuffer tramite DRM/KMS per latenza minima, senza X11 o Wayland.

Output diretto DRM/KMS (nessun display server necessario)
Decodifica hardware V4L2 M2M su Pi 4/5
Supporto rotazione: 0°, 90°, 180°, 270°
Transizioni: Dissolvenza, Scorrimento-Sinistra, Scorrimento-Destra, Taglio
Durata di visualizzazione configurabile per elemento
Modalità loop per singoli video e playlist

Chromium — Contenuti web

Chromium headless in modalità kiosk per pagine HTML, dashboard e contenuti interattivi. Controllato tramite Chrome DevTools Protocol (CDP).

Modalità kiosk: senza cornice, nessun elemento UI
Controllo CDP per navigazione e screenshot
Supporto completo JavaScript e CSS
File HTML locali e URL esterni
Fallback automatico in caso di errore connessione CDP
Backoff esponenziale in caso di problemi di connessione
FormatoCodec / DecoderAccelerazione HW
H.264 / AVCh264_v4l2m2m✓ Hardware
H.265 / HEVChevc_v4l2m2m✓ Hardware
VP9vp9_v4l2m2m✓ Hardware
AV1av1 (SW)— CPU
JPEG / PNGGPU decode✓ Hardware
HTML / CSS / JSChromium— CPU

Pipeline contenuti

Dall'upload alla riproduzione: ogni file viene verificato, versionato e sincronizzato atomicamente sui player. Il player esegue sempre uno stato consistente — mai un download parziale.

Upload e versionamento

Upload drag & drop tramite dashboard SaaS
Rilevamento automatico del tipo MIME
Versionamento: ogni upload crea una nuova versione
Le versioni precedenti vengono conservate (rollback possibile)
Hash SHA256 calcolato all'upload

Verifica e storage

Storage content-addressable: file indicizzati per SHA256
Deduplicazione: file identici salvati una sola volta
Controllo integrità prima dell'attivazione sul player
Download corrotti vengono ritentati automaticamente

Sincronizzazione e attivazione plan

Plan = snapshot versionato: playlist + media + programmazioni
Attivazione atomica: tutto o niente, nessuno stato intermedio
Download differenziale: solo i file modificati
Funziona offline: l'ultimo plan valido resta attivo
Versionamento basato su timestamp ISO

Sicurezza

Isolamento multi-tenant, comunicazione crittografata e autenticazione basata su token. Nessun dispositivo ha accesso ai dati di un altro tenant.

Autenticazione

Autenticazione API basata su token (Bearer Token)
Scope token separati per dashboard, player e automazione
Rotazione token per i token dispositivo
Rate limiting su tutti gli endpoint API

Isolamento tenant

Separazione rigorosa a livello di database (tenant_id su ogni tabella)
Enforcement dello scope tramite middleware
Nessun accesso cross-tenant possibile a livello API
Libreria media e configurazione separate per tenant

Sicurezza dispositivo

Codice di abbinamento a 8 cifre con TTL (scade dopo 15 min)
Token dispositivo emesso dopo abbinamento riuscito
Binding Device-ID: token legato a un dispositivo specifico
Blocco automatico dopo tentativi ripetuti falliti

Sicurezza del trasporto

HTTPS/TLS per tutte le comunicazioni API
Checksum SHA256 per ogni download di contenuti
Nessuna connessione non crittografata in produzione
Configurazione CORS limitata alle origini consentite

REST API

L'intera piattaforma è API-first. Tutto ciò che la dashboard può fare, puoi automatizzarlo tramite l'API REST. Documentazione OpenAPI inclusa.

Endpoint API (estratto)
# Recupera player
GET /api/v1/players
GET /api/v1/players/{id}
GET /api/v1/players/{id}/health

# Crea contenuto
POST /api/v1/media-items
POST /api/v1/playlists
POST /api/v1/channels

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

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

API JSON RESTful

Struttura risorse coerente, verbi HTTP, codici di stato standard. Request/response JSON.

Documentazione OpenAPI 3.1

Documentazione API interattiva generata automaticamente. Testa gli endpoint direttamente nel browser.

Paginazione a cursore

Paginazione efficiente per grandi dataset. Filtraggio, ordinamento e ricerca su tutti gli endpoint di lista.

MCP — Integrazione AI

media-player.app implementa il Model Context Protocol (MCP) come superficie di integrazione di prima classe. Oltre all'API REST, agenti AI, workflow n8n e pipeline LangChain possono controllare la piattaforma direttamente.

Cos'è MCP?

Il Model Context Protocol è uno standard aperto per la comunicazione tra agenti AI e sistemi esterni. Invece di un'API proprietaria, qualsiasi client AI-capable (Claude, GPT, LLM personalizzati) può controllare la piattaforma tramite tool, risorse e prompt.

Tool MCP

Sola lettura: stato player, panoramica flotta, plan attivi, heartbeat, log errori
Diagnostica: richiedi screenshot, crea bundle di log, report di riproduzione
Operativi: assegna canali, pubblica plan, modifica impostazioni (scope-gated)
Reporting: query aggregate proof-of-play

Casi d'uso

Bot di supporto AI: diagnosi e troubleshooting via chat
n8n / Make.com: workflow automatizzati (es. nuovo contenuto → aggiorna playlist)
LangChain / CrewAI: agenti AI che gestiscono la tua flotta di digital signage
Dashboard personalizzate: MCP come interfaccia dati universale

Sicurezza

Token di automazione con scope — permessi granulari per integrazione
Modalità approvazione per operazioni critiche (riavvio, aggiornamento)
Audit log a prova di manomissione per ogni chiamata MCP tool
Validazione schema JSON rigorosa, nessuna esecuzione arbitraria
Rate limit per token e tenant

Monitoraggio e telemetria

Ogni display invia dati di stato al backend a intervalli configurabili. Il container heartbeat raccoglie metriche di sistema ed eventi di riproduzione.

MetricaSorgente
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

Requisiti di rete

I player necessitano di una connessione internet in uscita. Non è necessario aprire porte in ingresso — il player si connette al backend, non il contrario.

Connessioni in uscita

HTTPS (443) → api.media-player.app (API, heartbeat)
HTTPS (443) → registry.media-player.app (immagini container)
HTTPS (443) → cdn.media-player.app (download contenuti)
DNS (53) → Qualsiasi resolver DNS
NTP (123) → Sincronizzazione orario (consigliato)

Larghezza di banda e offline

Sincronizzazione iniziale: dipende dalla dimensione dei contenuti (una tantum)
In corso: < 1 MB/giorno per heartbeat e chiamate API
I contenuti sono salvati localmente, riproduzione offline
Sincronizzazione differenziale: solo i file modificati
Raccomandazione: 10 Mbps per un download iniziale fluido

In sintesi

Piattaforma SaaS

Cloud-hostedMulti-TenantREST APIOpenAPI 3.1MCP

Player Runtime

DockerGompvChromiumAlpine Linux

Piattaforme

Raspberry Pi 4/5Linux x86_64ARM64AMD64

Integrazione

REST APIMCPWebhooksn8nLangChain

Monitoraggio

Heartbeat AgentHealth APIPlayout EventsWatchdog

Sicurezza

HTTPS/TLSToken AuthTenant IsolationAudit LogGDPR

Convinto?

Prova media-player.app gratuitamente o consulta la documentazione API.

Utilizziamo la tua email solo per informarti sul lancio. Niente spam.

Documentazione API