Chinesischer Erklärfilm (Remotion Komplett-Workflow)
Führe die zehn Schritte in der angegebenen Reihenfolge aus. Das Ergebnis jedes Schritts ist die Eingabe für den nächsten. Es ist verboten, Schritte zu überspringen und später nachzuholen.
Zehn eiserne Regeln
- Die Länge wird durch die Sprachausgabe bestimmt, nicht durch das Skript. Das Referenzskript dient nur als Absichtserklärung. Schätze zuerst die Gesamtlänge basierend auf einer gemessenen Sprechgeschwindigkeit (für chinesisches TTS etwa 3,3 Zeichen/Sekunde); wenn die Ziellänge überschritten wird, reduziere die Zeichen und mache die Sprache mündlicher. Synthetisiere dann Abschnitt für Abschnitt und messe die tatsächliche Länge jedes Abschnitts.
- BPM muss gemessen werden, nicht der Benutzer- oder Referenzangabe geglaubt werden. Librosa gibt 104 BPM oft fälschlich als 51,7 (halbiert) aus. Verwende Autokorrelation oder wechsle die Onset-Parameter zur unabhängigen Überprüfung. Wähle den Takt, der mit dem Hörgefühl übereinstimmt.
- Alle Schnittpunkte werden auf den Beat gesnapt. Die Grenze eines Absatzes = das Ende der Sprachausgabe dieses Absatzes, das auf den nächstgelegenen Beat gesnapt wird; die Framenummer =
round(beat * (60/BPM) * FPS). Dieser Wert wird fest in den Code geschrieben und nicht zur Laufzeit berechnet.
- Deterministisches Rendern.
Date.now() und Math.random() sind verboten. Verwende für alle Oszillationen Math.sin(frame). Jedes Rendern desselben Frames muss pixelgenau identisch sein.
- Single Source of Truth für die Zeitachse. Absätze, Framenummern, Sprachverschiebungen und SFX-Keyframes existieren nur in einer einzigen
timeline.ts. Änderungen an der Wortanzahl des Skripts → neues Ausführen des Generierungsskripts → Synchronisieren der TS-Datei. Niemals zwei Stellen manuell ändern.
- Untertitel werden an Satzzeichen ausgerichtet. Zerlege zuerst an
,;:。 in Klauseln und packe sie dann in Blöcke. Die Zeilenbreite wird mit einem festen Pixelcontainer definiert (z. B. width: 1460 + whiteSpace: "pre"). Verwende nicht maxWidth, da dies den Inhalt den Container bestimmen lässt.
- Audiospuren sind dreischichtig getrennt: Hintergrundmusik (BGM), Stimme und Soundeffekte haben jeweils eigene Lautstärkepegel. Starte mit Stimme 0,8, BGM 0,24. Miss nach dem Rendern die Spitzenpegel; Werte über 0,95 bedeuten ein Clipping-Risiko.
- Jede Einstellung wird als Einzelbild zur Qualitätskontrolle gerendert. Verwende
npx remotion still, um die Komposition jedes Frames zu prüfen. Ein Film, der ohne diese Prüfung gerendert wird, ist Nacharbeit.
- Drei harte Einschränkungen unter Windows:
--props muss eine Datei sein (z. B. --props=props-nobgm.json), da die Shell inline-JSON die Anführungszeichen entfernt. ffmpeg 9 verwendet -fps_mode passthrough anstelle von -vsync. Falls Stiländerungen nach einer TSX-Änderung nicht wirken, lösche zuerst node_modules\.cache.
- Zuerst ausliefern, dann bewerten. Gib die bereits gerenderten Filme und generierten Grafiken unverändert an den Benutzer weiter. Dokumentiere etwaige Probleme und erkläre sie, aber generiere sie nicht eigenmächtig neu.
Zehn-Schritte-Pipeline
| # | Schritt | Schlüsselaktion | Ergebnis |
|---|
| 1 | Themenaufbereitung | Wissenskette, Ziellänge, Seitenverhältnis, Zielpublikumston festlegen | Ein-Satz-Thema + Vereinbarung zu Länge/Seitenverhältnis |
| 2 | Erzähltext | Auf "Haken → Modell → Ableitung → Schlussfolgerung → Erkenntnis" komprimieren, auf mündliche Sprache umstellen | Segmentiertes Skript (ca. 6 Abschnitte, je 50–70 Zeichen) |
| 3 | Sprachausgabe | Jeden Abschnitt einzeln synthetisieren, gleiche Stimme, gleiche Parameter. Tatsächliche Länge und Grundfrequenz jedes Abschnitts messen | s1..sn.wav + Tabelle mit Abschnittslängen |
| 4 | Untertitel | Aus den Abschnittslängen eine SRT-Datei generieren, die mit den Szenenschnittpunkten übereinstimmt | subtitles.srt |
| 5 | Hintergrundmusik (BGM) | Auswählen oder selbst synthetisieren. BPM und Beattabelle messen. Bei Unpassendem wechseln | bgm.wav + bgm.json (beats_sec) |
| 6 | Zeitachse neu anordnen | Abschnittsgrenzen an Beats snappen, Gesamtframecount berechnen | timeline.json + timeline.ts |
| 7 | Soundeffekte | Schlüsselaktionen jeweils ein Sounddesign zuordnen, per Code synthetisieren, auf den Beat heften | sfx/*.wav + Keyframe-Tabelle |
| 8 | Bildkomposition | Theme / components / timeline + Szenenkomponenten für jeden Abschnitt | Remotion-Projekt |
| 9 | Qualitätssicherung & Rendering | Einzelbilder pro Abschnitt → Gesamtfilm → Spitzenpegel messen | out/*.mp4, QA-Einzelbilder |
| 10 | Veröffentlichungsmaterial | Cover (Code oder Design-Tool), Titel, Beschreibung, Themen | Coverbild + release-text.md |
Konfliktlösungsentscheidungen
| Konflikt | Behandlung |
|---|
| Skriptzeichenanzahl vs. Ziellänge | Skript kürzen, Länge nicht ändern. Bei Kompressionsverhältnis > 1,3 in mündliche Kurzsätze umwandeln, dabei das gesamte Wissen erhalten |
| Vom Benutzer angegebenes BPM / Länge vs. gemessene Werte | Nach den gemessenen Werten arbeiten und den Benutzer aktiv über die Abweichung informieren (z. B. "Spezifikation sagt 110 BPM / 58s, gemessen 104 BPM / 53,65s"). Zusätzlich eine Option "nach Spezifikation neu anordnen" anbieten |
| Vom Benutzer angegebener Musikstil passt nicht | Zuerst das BPM / Spektrum / Spitzenpegel des angegebenen Stücks messen und Daten liefern. Dann ein alternatives Stück selbst synthetisieren. Bei der Auslieferung den Grund für die Abweichung offenlegen. |
| Konflikt zwischen Referenz-Visuals und Cover- oder Plattformstil | Beide Angelegenheiten trennen: Hauptinhalt folgt den Benutzervorgaben, Cover folgt der Plattform-Logik zur Verbreitung. Entscheidung begründen |
Lieferliste
- Film in zwei Versionen: mit BGM / ohne BGM (für Plattformen mit eigener Musikbibliothek). Gleiche Framecounts, gleiche Länge.
- Untertiteldatei (SRT, extern und eingebettet identisch)
- Lieferdokumentation: Filmversionstabelle, BPM & Beat-Definition, Abschnittsgrenzen-Tabelle, Beat-Positionstabelle, Skript, Soundeffekte-Tabelle, Audiomischpegel, Projektstruktur, Ausführungsbefehle
- Cover (horizontal + vertikal für die Zielplattform), mehrere Titelvarianten, mehrere Beschreibungsversionen, Hashtags
Referenzdateien