Arhitectura Tehnică a Platformei Emby
1. Arhitectura Serverului Emby
1.1 Componentele de Bază ale Serverului
Emby Server este construit ca o aplicație multi-tier cu următoarele straturi principale:
- Backend Service - Serviciul Windows sau Daemon-ul Linux care rulează în fundal
- Web Server - Serverul HTTP care gestionează cererile clienților
- Database Layer - Stratul de gestionare a bazelor de date
- API Layer - REST API pentru comunicarea cu clienții
- Media Processing - Motorul de procesare media și transcoding
1.2 Tehnologii și Limbaje de Programare
Emby este dezvoltat primar în C# și .NET, cu componente în:
- C# .NET pentru logica de business principală
- SQLite pentru bazele de date embedded
- ASP.NET pentru serverul web și API-urile REST
- FFmpeg pentru procesarea media și transcoding
- JavaScript/HTML/CSS pentru interfața web
2. Sistemul de Baze de Date
2.1 Structura Bazelor de Date
Emby utilizează multiple baze de date SQLite specializate:
library.db - Database-ul principal ce conține:
Tabela Users - utilizatori și autentificare
Tabela Items - metadata pentru toate elementele media
Tabela UserData - preferințe și progres redare
Tabela Images - informații despre imaginile asociate
activity.db - Jurnale de activitate și statistici devices.db - Înregistrări ale dispozitivelor conectate channels.db - Date despre canale și plugin-uri
2.2 Schemele de Tabele Principale
CREATE TABLE Users (
Id GUID PRIMARY KEY,
Name NVARCHAR(255) NOT NULL,
PasswordHash NVARCHAR(255),
Salt NVARCHAR(255),
IsAdministrator BIT,
IsHidden BIT,
LastLoginDate DATETIME,
LastActivityDate DATETIME
);CREATE TABLE TypedBaseItems (
Id GUID PRIMARY KEY,
Type NVARCHAR(255),
Path NVARCHAR(MAX),
Name NVARCHAR(255),
Overview TEXT,
ProductionYear INTEGER,
PremiereDate DATETIME,
DateCreated DATETIME,
DateModified DATETIME
);CREATE TABLE UserData (
Id INTEGER PRIMARY KEY AUTOINCREMENT,
UserId GUID,
ItemId GUID,
PlayCount INTEGER,
IsFavorite BIT,
PlaybackPositionTicks BIGINT,
LastPlayedDate DATETIME
);3. Serverul Web și API-ul REST
3.1 Arhitectura Web Server
Emby incorporează un server web ASP.NET care:
- Gestionează cereri HTTP/HTTPS
- Servește interfața web și API-urile
- Manageriază autentificarea și autorizarea
- Processează stream-urile media
3.2 Endpoint-uri API Principale
/api/users - Management utilizatori
/api/items - Operațiuni pe elemente media
/api/sessions - Gestiune sesiuni de redare
/api/library - Operațiuni pe librării
/api/plugins - Management plugin-uri
3.3 Sistemul de Autentificare
Emby folosește token-based authentication:
- La login se generează un Access Token
- Token-ul este inclus în header-ul cererilor
- Fiecare utilizator poate avea multiple token-uri pentru diferite dispozitive
- Token-urile expiră după o perioadă configurată
4. Sistemul de Procesare Media
4.1 Arhitectura Motorului de Transcoding
Emby integrează FFmpeg pentru:
- Transcoding în timp real pentru compatibilitate dispozitive
- Extragere de metadate din fișiere media
- Generare de thumbnails și capitole
- Procesare audio și subtitrări
4.2 Pipeline-ul de Transcoding
Fluxul de procesare media:
- Detectare capabilități dispozitiv client
- Analiză codec-uri și containere media
- Decodare sursă media
- Processare (rescale, transcode audio, burn subtitrări)
- Encodare în format compatibil
- Streaming către client
5. Sistemul de Plugin-uri și Extensii
5.1 Arhitectura Plugin-urilor
Emby suportă plugin-uri developate în C# care pot:
- Adăuga providere noi de metadate
- Extinde interfața web cu funcționalități noi
- Adăuga formate media suplimentare
- Integra cu servicii externe
5.2 Structura unui Plugin
Un plugin Emby tipic conține:
- Assembly .NET DLL cu logica business
- Fișiere de configurare
- Resurse web (JavaScript, CSS, imagini)
- Manifest cu metadatele plugin-ului
6. Sistemul de Network și Comunicare
6.1 Protocolul de Comunicare
Emby utilizează multiple protocoale:
- HTTP/HTTPS pentru API și web interface
- WebSockets pentru notificări în timp real
- UDP pentru discoverability pe rețea locală
- RTSP/HTTP pentru streaming media
6.2 Descoperirea Automată pe Rețea
Serviciul utilizează SSDP (Simple Service Discovery Protocol) pentru:
- Anunțarea prezenței serverului pe rețea
- Descoperirea automată de către clienți
- Configurarea rapidă a conexiunii
7. Sistemul de Cache și Performanță
7.1 Stratul de Cache
Emby implementează multiple niveluri de cache:
- Cache de imagini (postere, backdrop-uri)
- Cache de metadate pentru performanță căutare
- Cache de rezultate API
- Cache de resurse web
7.2 Optimizări de Performanță
Tehnici utilizate pentru performance:
- Indexare agresivă în baze de date
- Paginare pentru rezultate mari
- Compresie pentru transfer date
- Load balancing pentru cereri multiple
8. Sistemul de Securitate
8.1 Măsuri de Securitate Implementate
Emby include:
- Autentificare bazată pe token-uri
- Autorizare bazată pe roluri
- Validare input pentru prevenire atacuri
- Logging extensiv pentru audit
- Opțiuni pentru HTTPS și certificare
9. Procesul de Inițializare Server
9.1 Secvența de Pornire
La start, Emby Server execută:
- Inițializare configurație din fișierele XML
- Conexiune la bazele de date SQLite
- Încărcare plugin-uri instalate
- Scanare librării media configurate
- Pornire server web și servicii network
- Anunțare prezență pe rețea locală