Files
FuerDieCuts/README.md
T
ferdi2goandClaude Opus 5.5 ccd70bd585 Schnitt-Oberfläche mit Optionen, Mixer, Voice-over und Export bauen
Im Projekt lassen sich Intro, Outro, Beschleunigen, Stummschalten und
Backing Track anhaken, Dateien hochladen und alle Tonspuren von 0 bis
100 regeln. Pro Clip nimmt der Browser ein Voice-over auf, während der
Clip im späteren Tempo läuft. Einstellungen werden verzögert gespeichert;
der Export zeigt Fortschritt, Vorschau und Download.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-29 11:00:59 +00:00

3.7 KiB
Raw Blame History

FuerDieCuts

Schneidet aus einem WhatsApp-Chatexport automatisch ein YouTube-Video.

Der Export (ZIP mit Medien) wird hochgeladen, die Videos werden anhand der Zeitstempel im Chat chronologisch sortiert. Über eine Maske wählt man, was automatisch passieren soll:

  • Intro und Outro einfügen (eigene Dateien)
  • Clips chronologisch aneinanderreihen
  • Clips über 10 Sekunden auf genau 10 Sekunden beschleunigen
  • Ton der Clips stummschalten (Intro und Outro ausgenommen)
  • Backing Track unter den Clip-Teil legen (wird wiederholt und passend gekürzt)
  • Voice-over pro Clip aufnehmen oder hochladen
  • Lautstärke jeder Tonspur von 0 bis 100

Ausgabe ist ein MP4 in 1920×1080 mit 30 fps. Hochkant-Clips werden mittig mit unscharfem Hintergrund eingesetzt. Zugang ist über eine PIN geschützt.

Voraussetzungen

  • Node.js 20
  • ffmpeg und ffprobe im PATH (sudo apt install ffmpeg)

Installation und Start

npm install
cp .env.example .env   # APP_PIN eintragen
npm run dev

npm run dev startet den Express-Server samt Vite im Entwicklungsmodus auf einem Port (PORT, Vorgabe 3000) und liest dabei die lokale .env. In Produktion:

npm run build
NODE_ENV=production APP_PIN=… npm start

Umgebungsvariablen

Name Bedeutung
APP_PIN PIN für die Anmeldung, Pflicht
SESSION_SECRET optional; signiert die Sitzungs-Cookies, sonst wird eines erzeugt
PORT Port des Servers, Vorgabe 3000
VCH_DATA_DIR Ablage für Projekte und Uploads, Vorgabe ./data

Ablauf

  1. WhatsApp-Chat mit „Medien anhängen“ exportieren und entpacken.
  2. In der App „Neues Video“, den Exportordner wählen. Der Browser liest den Chat selbst; vorgewählt ist Montag bis Freitag der Vorwoche.
  3. Videos prüfen (Duplikate sind abgewählt) und hochladen. Nur die gewählten Videos werden übertragen, in Stücken von 8 MB; ein Abbruch lässt sich durch erneutes Wählen des Ordners fortsetzen.
  4. Im Projekt anhaken, was passieren soll, Intro, Outro und Backing Track hochladen, Lautstärken einstellen und pro Clip ein Voice-over aufnehmen (der Clip läuft dabei im späteren Tempo) oder als Datei hochladen.
  5. „Video erstellen“ rendert im Hintergrund; danach herunterladen.

Wie geschnitten wird

  • Jeder Clip wird einzeln auf 1920×1080 bei 30 fps gebracht. Hochkant-Clips stehen mittig vor einer unscharfen, vergrößerten Kopie ihrer selbst.
  • Clips über 10 Sekunden werden per setpts auf genau 10 Sekunden beschleunigt; ihr Ton (falls nicht stumm) per verketteter atempo-Stufen.
  • Voice-over und Clip-Ton werden pro Clip gemischt und auf Clip-Länge gekürzt.
  • Die Clip-Segmente werden aneinandergehängt, der Backing Track darunter wiederholt, gekürzt und über 2 Sekunden ausgeblendet; danach kommen Intro und Outro dazu.
  • Segmente liegen zwischengespeichert unter render/cache; wer nur die Musik ändert, wartet nicht auf alle Clips. Zwischenstände tragen unkomprimierten Ton, erst das Endergebnis wird AAC, damit sich über viele Übergänge keine Verschiebung aufsummiert.
  • Exporte laufen nacheinander, weil ffmpeg alle Kerne nutzt.

Befehle

  • npm test – Tests (Node-Testrunner)
  • npm run lint – ESLint
  • npm run build – Frontend bauen

Aufbau

  • server/ – Express-Server: Anmeldung, Projekte, Upload in Stücken, ffprobe
  • server/render.js – Schnittplan und ffmpeg-Kette
  • server/renderQueue.js – Exporte im Hintergrund
  • src/ – React-Oberfläche (Vite)
  • src/lib/whatsapp.js – liest den Chatexport und ordnet die Videos
  • src/lib/upload.js – Upload in Stücken mit Wiederaufnahme
  • test/ – Tests
  • Dockerfile – Produktionsimage mit ffmpeg; Deploy über VCH (.vch/deploy.yaml)

Aufgebaut auf Node.js, Express, React, Vite und ffmpeg.