Skip to content

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
Arhitectura Jellyseerr

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

sql
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
);
sql
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
);
sql
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:

  1. Detectare capabilități dispozitiv client
  2. Analiză codec-uri și containere media
  3. Decodare sursă media
  4. Processare (rescale, transcode audio, burn subtitrări)
  5. Encodare în format compatibil
  6. Streaming către client
Arhitectura JellyseerrArhitectura Jellyseerr

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ă:

  1. Inițializare configurație din fișierele XML
  2. Conexiune la bazele de date SQLite
  3. Încărcare plugin-uri instalate
  4. Scanare librării media configurate
  5. Pornire server web și servicii network
  6. Anunțare prezență pe rețea locală

© 2025 Popica Adelin. Toate drepturile rezervate.