Skip to content

Latest commit

 

History

History
40 lines (28 loc) · 3.25 KB

architecture.md

File metadata and controls

40 lines (28 loc) · 3.25 KB

Architektur

EncodeX ist ein plattformübergreifendes Multimedia-Konvertierungstool auf Basis von FFmpeg, React, TypeScript und Electron. Es richtet sich an Entwickler, die verstehen möchten, wie die Bausteine zusammenspielen, bevor sie beitragen.

EncodeX architecture

Designprinzipien

Der Renderer startet nie Prozesse und greift nie direkt auf das Dateisystem zu. Alle privilegierten Operationen (Dateidialoge, FFmpeg-Ausführung, Analyse, Fenstersteuerung) leben im Hauptprozess und werden über IPC erreicht.

  • Drei-Prozess-Trennung — main, preload und renderer nach Electron-Sicherheitsmodell (contextIsolation: true, nodeIntegration: false).
  • Eine einzige Abstraktion über Medien-Backends — das Interface ITranscoder verbirgt, ob die Konvertierung über fluent-ffmpeg, einen rohen FFmpeg-CLI-Kindprozess oder das BMF-Framework gesteuert wird.
  • IPC als typisierter Vertrag — jeder Kanal ist eine Konstante in src/shared/ipc-channels.ts, und der Renderer kommuniziert nur über die vom Preload-Skript bereitgestellte Brücke window.electronAPI mit dem Hauptprozess.
  • Geteilte Typen und Konstanten — src/shared/ wird von allen drei Prozessen importiert, damit Interfaces per Konstruktion synchron bleiben.
  • Progressive Erweiterung der UI — Seiten sind mit React.lazy code-gesplittet, der Zustand lebt in Zustand-Stores, und langlaufende Jobs streamen ihren Fortschritt über IPC-Ereignisse zurück.

Deep Dives

Die vollständige Architektur ist in fokussierte Dokumente aufgeteilt:

Dokument Themen
Prozesse, Build-System & Start Prozessmodell (main/preload/renderer/shared), Build-System, Binär-Auflösung, Startsequenz, CLI-Modus, geteilte Code-Ebene
Transcoder-Abstraktion & Konvertierung Interface ITranscoder, FfmpegCore / FFToolCore / BmfCore, gemeinsamer Flag-Aufbau, Hardwarebeschleunigung, Medien-Analyse, Konvertierungsfluss
Renderer, Zustand & Subsysteme Render-Baum, Seiten, Hooks, Zustand-Stores, Batch-Warteschlange, Video-Player, Timeline-Media, Bildverarbeitung, Fehlerbehandlung, Logging, i18n, Theming, Datenfluss-Referenz

Weitere Dokumentation

Dokument Themen
Funktionsreferenz Funktionen, unterstützte Medienformate, Codec-Tabellen, Validierungs-Utilities
CLI-Nutzung CLI-Nutzung, Subcommands, alle Optionstabellen
IPC-Kanäle IPC-Kanäle (Request/Send-only/Events), electronAPI-Brücke
Tests Testsuite (123 Dateien, 1603 Tests), Test-Setup, E2E-Specs
Projektstruktur Vollständiger Verzeichnisbaum mit Annotationen
Update-Manager Implementierung des integrierten Update-Managers

Repository

Die vollständige Source of Truth liegt im docs/-Ordner des Repos. Für einen Projektüberblick, Installationsschritte und den Contribution-Guide siehe das README auf GitHub.