Video Overlay nach Sprache
Verwenden, wenn die Stimme und Präsenz des Sprechers erhalten bleiben sollen, aber der Fokus auf einer kleinen Box, Text und Grafiken liegt. Lies CLAUDE.md, überprüfe Inhalt und Quellen, schlage Formate vor und warte auf Auswahl, falls noch keine getroffen wurde. Verarbeite keine Medien mit Gesichtserkennungsdaten; stoppe diesen Teil und lasse die verantwortliche Person diese vorher entfernen. Keine automatischen Posts, Commits oder Pushes.
- Führe
python3 scripts/bereite_stimme_vor.py <video> Output/video/<slug>aus. Lies den Bericht und höre die Originalstimme an; stolperstellen müssen mitscripts/finde_sprechfehler.pyvor dem Schnitt erkannt werden (das Vorbereitungsskript hat sie bereits aufgerufen, kann bei Korrekturen separat ausgeführt werden). Leite nicht alle Stolperstellen aus bereits bereinigten Untertiteln ab. - Normalisiere das Quellvideo auf eine vertikale 9:16-Leinwand mittels Letterbox, ohne das Gesicht zu nah heranzuzoomen. Führe die Gesichtserkennung auf dieser Leinwand durch:
{x,y,radius}normalisiert auf 0–1, radius basierend auf der Breite, Standard 0,14. Quellen mit anderen Seitenverhältnissen müssen vorher konvertiert werden; überprüfe erneut, wenn sich die Gesichtsposition ändert. Keine automatische Gesichtsverfolgung; verwende einen Bereich, der alle Gesichtspositionen abdeckt, oder teile die Composition bei Layoutänderungen. Verwende nur Videos, die gemäß den Projektregeln von Gesichtserkennung befreit wurden. - Konvertiere Wörter
{w,s,e}in{text,startMs,endMs}mit ms = Sekunden × 1000. Behalte die ursprünglichen Wörter zusammen mit den ursprünglichen Segmenten bei; Audio aus dem Video wird mit denselben Segmenten geschnitten. Verwende nicht gleichzeitig vorbereitete Stimme und Originalwörter. Medien werden inpublicmit relativen Pfaden abgelegt.audiokann leer sein, daPhuHinhdie Stimme im Video verwendet;musicundmusicVolumesind optional, Musik liegt nicht in der skalierbaren Videoebene. - Erstelle Beats
{atPhrase,nth?,untilPhrase,untilNth?,mode,content,source?,box?}. Die letzte Phrase endet bei der endMs des letzten Wortes; nth zählt ab 0. Keine überlappenden Beats, die Marker steigen an. Lücken werden automatisch zu Cards; es ist empfehlenswert, alle Sprache mit Beats abzudecken, um den Rhythmus klar zu prüfen.full: Sprecher passt in den Rahmen, contain, kein zu nahes Heranzoomen, maximal 8 Sekunden, auch bei mehreren aufeinanderfolgenden full-Beats;card: Sprecher klein in der oberen Ecke, Grafik darunter;over: transparente Grafik, Box vermeidet Gesicht auch während Rahmenwechsel;cover: Vollbild mit Hintergrund und Grafik, aber Audiospur des Videos läuft weiter. Rahmenwechsel erfolgen kontinuierlich über 650 ms. - Content hat als
kind:word,number,list,compare,steps,barsundtext.numberfügtvalueundspokenhinzu, z. B. value 12, spoken “zwölf”.spokenNthoptional, zählt das Auftreten einer Zahl im selben Beat ab 0; dernth-Marker des Items bezieht sich weiterhin auf die gesamte geschnittene Sprache. Der Wert zählt hoch und erreicht erst den Endwert, wenn der gesamte Zahlenausdruck gesprochen ist. Arten mit mehreren Elementen verwendenitems:[{text,atPhrase,nth?,value?,spoken?}], jedes Element wird nur angezeigt, wenn es gesprochen wird; bars verwenden value, compare teilt in Spalten, steps hat Pfeile.spokenist eine manuelle Zuordnung, bei der der Benutzer die Bedeutung mit dem value abstimmen muss; das Skript versteht keine linguistische Bedeutung von Zahlen in Worten. Setze keine Zahlen zu früh in Titel oder Elementbezeichnungen; überlasse value die Anzeige der Zahl. Behalte maximal ein paar kurze Elemente, um Überlauf zu vermeiden. Haupttext ab 72 px. - Box
{x,y,width,height}in px bei 1080×1920, Grenzen x 64–1016, y 100–1260; Standard card bei y620, over bei y900. Untertitel bei y1330 im Bereich 1300–1520. Quellen unter Untertiteln müssen Autor/Organisation, Jahr, Link und Zugriffsdatum für medizinische Informationen enthalten; ungeprüfte Fakten müssen als “wartet auf Prüfung” gekennzeichnet werden. AI-Stimmenlabel verwendenaiVoice:truefalls erforderlich. - Schreibe JSON mit Props, führe
python3 scripts/pruefe_overlay.py <daten.json>aus; korrigiere nicht gefundene Marker, zu lange full-Bilder, Overlays über Gesichtern und Zahlen, die nicht im Sprachtext vorkommen. Exit-Code 0 = Datenprüfung bestanden, 1 = Prüfungsfehler, 2 = Lesefehler. Das Gesichtserkennungswerkzeug prüft auf stabilem Frame und tastet 30 fps über 650 ms nach jedem Rahmenwechsel ab; das Komponent prüft zusätzlich jeden gerenderten Frame. Öffne den tatsächlichen Frame, um Gesichtsbewegungen und Textüberlauf zu prüfen. Erstelle dann eine TS-Datei in studio/data mitexport default {id:'VideoPhu', format:'PhuHinh', props:...}. Siehemuster-neu.ts;MauPhuHinhist ein stummes Muster mit Platzhaltervideo, nicht das endgültig freigegebene Video. - Führe
cd remotion && npx --no-install tsc --noEmitaus; erstelle einen Entwurf mitnpx --no-install remotion render src/index.ts VideoPhu out/entwurf.mp4 --codec h264. Überprüfe alle Grafiktypen, Moduswechselrahmen, Anfang/Ende jedes Segments, höre die Stimme durch Cover hindurch, überprüfe, ob Zahlen rechtzeitig vollständig sind, und ob Listen nicht vor dem Wort erscheinen. Führe bei Bedarf eine Spracherkennung auf der endgültigen Version durch und höre die Übergänge noch einmal ab. - Normalisiere den Ton auf −14 LUFS mit dem zweistufigen loudnorm-Verfahren, messe den True Peak bei −1,5 dBTP, wie im Abschnitt zur Tonnormalisierung von
video-thuy-mac/SKILL.mdbeschrieben; schreibe immer in eine separate Datei und messe die endgültige Version erneut. Übergib die Vorschau, Quellen, Daten und noch nicht verifizierte Teile. Überprüfe, dass Skripte und Grafiken keine medizinische oder werbliche Freigabe durch die verantwortliche Person vor der Veröffentlichung ersetzen.