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.
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
ITranscoderverbirgt, ob die Konvertierung überfluent-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ückewindow.electronAPImit 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.lazycode-gesplittet, der Zustand lebt in Zustand-Stores, und langlaufende Jobs streamen ihren Fortschritt über IPC-Ereignisse zurück.
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 |
| 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 |
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.
