{"id":51847964,"url":"https://github.com/universe-coder/video-converter","last_synced_at":"2026-07-23T15:01:02.529Z","repository":{"id":368945766,"uuid":"1287625996","full_name":"universe-coder/video-converter","owner":"universe-coder","description":null,"archived":false,"fork":false,"pushed_at":"2026-07-02T22:51:54.000Z","size":96,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-03T00:07:33.141Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/universe-coder.png","metadata":{"files":{"readme":"README.de.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-07-02T21:35:39.000Z","updated_at":"2026-07-02T22:51:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/universe-coder/video-converter","commit_stats":null,"previous_names":["universe-coder/video-converter"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/universe-coder/video-converter","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/universe-coder%2Fvideo-converter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/universe-coder%2Fvideo-converter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/universe-coder%2Fvideo-converter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/universe-coder%2Fvideo-converter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/universe-coder","download_url":"https://codeload.github.com/universe-coder/video-converter/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/universe-coder%2Fvideo-converter/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35805966,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-07-23T02:00:06.683Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-07-23T15:00:57.354Z","updated_at":"2026-07-23T15:01:02.496Z","avatar_url":"https://github.com/universe-coder.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Video Converter\n\n[English](README.md) · [Русский](README.ru.md) · [Українська](README.uk.md) · **Deutsch** · [Français](README.fr.md) · [Español](README.es.md) · [Português](README.pt.md) · [中文](README.zh.md)\n\nPlattformübergreifende Desktop-App (Windows und macOS) zur Konvertierung von\nVideo von einem Format in ein anderes. Entwickelt mit **Electron + FFmpeg**.\nFFmpeg ist in der App enthalten — der Benutzer muss nichts zusätzlich\ninstallieren.\n\n![Video Converter](assets/icon.svg)\n\n## Funktionen\n\n- Dateien per Drag \u0026 Drop oder über einen Dialog auswählen; Stapelkonvertierung (Warteschlange).\n- Ausgabeformate:\n  - **Video:** MP4 (H.264), MKV, MOV, WebM (VP9), AVI (MPEG-4)\n  - **Audio:** MP3, M4A (AAC), WAV\n  - **GIF-Animation** aus Video\n- Qualitätsvoreinstellungen (hoch / mittel / niedrig) und Auflösungsskalierung\n  (bis zu 4K, 1080p, 720p, 480p, 360p) unter Beibehaltung des Seitenverhältnisses.\n- Fortschritt pro Datei, Abbruch und eine Schaltfläche „Im Ordner anzeigen“.\n- Auswahl des Ausgabeordners (standardmäßig neben der Originaldatei, ohne\n  die Quelldatei zu überschreiben).\n- **Mehrsprachige Oberfläche** — 8 Sprachen (Русский, English, Українська,\n  Deutsch, Français, Español, Português, 中文) mit automatischer Erkennung\n  der Systemsprache.\n- **Helles und dunkles Design** — automatische Erkennung des System-Designs\n  plus manuelle Überschreibung (System / Hell / Dunkel); die Sprach- und\n  Design-Auswahl bleibt zwischen den Starts erhalten.\n\n## Ausführen in der Entwicklung\n\n```bash\ncd video-converter\nnpm install\nnpm start          # oder npm run dev — mit DevTools\n```\n\n\u003e Beim ersten `npm install` werden die Electron- und FFmpeg-Binärdateien\n\u003e heruntergeladen (~200 MB).\n\n## Testen des Konvertierungskerns (ohne GUI)\n\nErzeugt ein Testvideo und lässt es durch jedes Format laufen:\n\n```bash\nnpm run smoke\n```\n\n## Installationsprogramme erstellen\n\n```bash\nnpm run dist:mac        # → dist/Video Converter-1.0.0.dmg\nnpm run dist:win        # baut den x64-Installer, dann ff:restore\nnpm run dist:win-x64    # nur 64-Bit:  …-win-x64-Setup.exe\nnpm run pack            # ungepackter Build in dist/ (schnelle Prüfung)\n```\n\n### Windows-Architekturen\n\n| Arch | Unterstützung | Hinweis |\n|------|---------|------|\n| **x64** | ✅ | primäres Ziel — 64-Bit Intel/AMD |\n| **ia32** | ❌ | Upstream-`ffmpeg-static` liefert keine 32-Bit-ffmpeg-Binärdatei mehr |\n| **arm64** | ❌ | `ffmpeg-static`/`ffprobe-static` haben keine Windows-ARM-Binärdateien; ARM-Geräte führen den x64-Build über die integrierte Emulation aus |\n\n**Wichtiger Hinweis zu FFmpeg und architekturspezifischen Builds.**\n`ffmpeg-static` speichert nur **eine** Binärdatei — für die Maschine, auf der\n`npm install` ausgeführt wurde. Bevor Sie also für eine andere Architektur\nbauen, müssen Sie die passende `ffmpeg.exe` beziehen. Dies übernimmt das\nSkript `scripts/fetch-ffmpeg.js`, das bereits innerhalb von `dist:win-*`\naufgerufen wird. Stellen Sie nach einem Cross-Build auf einer\nNicht-Windows-Maschine die native Binärdatei mit `npm run ff:restore` wieder\nher (bei `npm run dist:win` geschieht dies automatisch am Ende).\n`ffprobe-static` muss nicht angefasst werden — es enthält bereits\nBinärdateien für jede Plattform.\n\n**Wo gebaut werden sollte.** Das Cross-Building des Windows-Installers auf\nmacOS funktioniert (getestet: `npm run dist:win-x64` baut die `.exe` ohne\nWine). Das Bauen unter Windows selbst ist ebenfalls praktisch — dort zieht\nsich `npm install` direkt das richtige ffmpeg. Die einzige Feinheit beim\nCross-Building ist ein frisches ffmpeg für die Zielarchitektur (siehe oben zu\n`fetch-ffmpeg.js`).\n\n### ⚠️ Die electron-builder-Version ist festgelegt (24.13.1)\n\n**`electron-builder` nicht ohne Tests der Neuinstallationen auf 24.13.2+\naktualisieren.** 24.13.2 führte eine Regression ein (PR #8059): Bei der\nNeuinstallation über eine ältere Version bleibt der Installer bei\n„*… cannot be closed*“ (dt.: „… kann nicht geschlossen werden“) hängen, selbst\nwenn die App geschlossen ist und nichts von uns im Task-Manager zu finden ist\n([issue #8131](https://github.com/electron-userland/electron-builder/issues/8131)).\nDeshalb legt `package.json` die Version exakt als `24.13.1` fest (die letzte\nfunktionierende) und nicht über `^`. Der Hook `assets/nsis-hooks.nsh`\nerzwingt zusätzlich das Schließen der App und von ffmpeg vor der\nInstallation.\n\nIcons: electron-builder verwendet `assets/icon.icns` (macOS) und\n`assets/icon.ico` (Windows). Das Repository enthält die Quelldatei\n`assets/icon.svg` — daraus lassen sich die benötigten Formate erzeugen (zum\nBeispiel über `electron-icon-builder` oder einen Online-Konverter). Fehlen\ndie Icon-Dateien, wird das Standard-Electron-Icon verwendet.\n\n## Projektstruktur\n\n```\nvideo-converter/\n├── package.json                 # Abhängigkeiten, Skripte, electron-builder-Konfiguration\n├── src/\n│   ├── main/\n│   │   ├── main.js              # Hauptprozess: Fenster, Menü, IPC\n│   │   ├── preload.js           # sichere Bridge (contextBridge)\n│   │   └── converter.js         # Kern: FFmpeg, Formate, Voreinstellungen, Probe\n│   └── renderer/\n│       ├── index.html           # UI-Markup\n│       ├── styles.css           # Styling, helles und dunkles Design\n│       ├── i18n.js              # Übersetzungen \u0026 Sprachumschaltung (8 Sprachen)\n│       ├── theme.js             # Design-Verwaltung (System / Hell / Dunkel)\n│       └── renderer.js          # UI-Logik, Warteschlange, Fortschritt\n├── scripts/\n│   ├── fetch-ffmpeg.js          # tauscht die ffmpeg-Binärdatei je Zielarchitektur aus\n│   └── smoke-test.js            # Konvertierungsprüfung über die Kommandozeile\n└── assets/\n    ├── icon.svg                 # Quell-App-Icon\n    └── nsis-hooks.nsh           # NSIS-Installer-Hooks (erzwingt Schließen von App/ffmpeg)\n```\n\n## Funktionsweise\n\nDer Hauptprozess (`converter.js`) ruft FFmpeg über `fluent-ffmpeg` auf und\nübergibt ihm die Binärpfade aus den Paketen `ffmpeg-static` / `ffprobe-static`.\nDer Renderer kommuniziert mit ihm nur über `preload.js` (`contextIsolation:\ntrue`, `nodeIntegration: false`), sodass die Oberfläche keinen direkten\nZugriff auf das Dateisystem oder die Node-APIs hat.\n\nBeim Packen in `asar` werden die FFmpeg-Binärdateien in\n`app.asar.unpacked` entpackt (siehe `asarUnpack` in `package.json`), und ihre\nPfade werden in `converter.js` entsprechend angepasst.\n\n## Lizenz\n\nMIT (siehe das Feld `license` in `package.json`). FFmpeg wird unter seiner\neigenen Lizenz (LGPL/GPL) vertrieben — das sollten Sie bei der Verteilung\nberücksichtigen.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funiverse-coder%2Fvideo-converter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Funiverse-coder%2Fvideo-converter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Funiverse-coder%2Fvideo-converter/lists"}