Add face-based continuity planning, clip diagnostics and draft preview

This commit is contained in:
Mikei386
2026-09-13 09:58:21 +02:00
parent 0f64561062
commit 2efe6929d1
10 changed files with 900 additions and 35 deletions
+8 -4
View File
@@ -37,10 +37,13 @@ Das Skript baut im Release-Modus für die Architektur des ausführenden Macs und
2. Sortierung und gegebenenfalls Variantenwahl einstellen. Die Wochen-Sortierung erkennt beispielsweise `12 Wochen alt V1.mov`. Dateien ohne erkennbares Wochenalter stehen dahinter. Varianten werden anhand eines abschließenden Leerzeichens mit Zahl oder `V` und Zahl gruppiert, etwa `12 Wochen alt V1.mov` und `12 Wochen alt V2.mov`.
3. Ausschnittlänge, Ziellänge und Übergang festlegen. Standard: 8 Sekunden Quelle, 1,5 Sekunden pro Ergebnisclip, 0,6 Sekunden Überblendung und 30 FPS. Die Übergangslänge muss kleiner als die Ziellänge sein; 0 bedeutet einen harten Schnitt.
4. Ausgabeformat, Encoder und optionale Stabilisierung/Gesichtsausrichtung wählen. Unterstützt sind 1920×1080, 1080×1920 oder die Abmessungen des ersten Videos. Für H.264 stehen CPU (`libx264`) und VideoToolbox zur Auswahl. Audio wird standardmäßig entfernt.
5. „Render starten“ wählen. Fortschritt und Log erscheinen in der App; „STOP“ bricht die Verarbeitung ab.
6. Mit „Ergebnis ansehen“ das fertige Video direkt in der App prüfen. In der Clip-Nachbearbeitung Segmentstarts oder Varianten ändern und „Änderungen neu rendern“ wählen. Diese Aktion erhält gewählte Ausschnitte. „Segmente neu planen“ berechnet alle Ausschnitte mit aktueller Länge, Mitte/Offset und automatischer Segmentwahl neu; manuelle Ausschnitte werden erst nach erfolgreichem Rendern ersetzt. Die globale Variantenwahl gilt für einen neuen Import; vorhandene Varianten werden pro Clip gewechselt. „Projekt laden“ stellt die gespeicherten Render-Einstellungen wieder her.
5. Optional zuerst „Clips analysieren“ wählen. Die Clip-Liste zeigt Hinweise und gegebenenfalls alternative Segmentstarts. „Entwurf erstellen“ erzeugt einen separaten Vorschaufilm mit bis zu 640 Pixeln und höchstens 15 FPS. Über die Übergangs-Schaltflächen lassen sich Schnittstellen gezielt prüfen; „Clip prüfen“ öffnet den betreffenden Clip.
6. „Projekt rendern“ wählen, um die geprüften Ausschnitte in voller Ausgabequalität zu rendern. Ohne vorherige Analyse heißt die Schaltfläche „Render starten“ und importiert den Ordner direkt. Fortschritt und Log erscheinen in der App; „STOP“ bricht die Verarbeitung ab.
7. Mit „Ergebnis ansehen“ das fertige Video direkt in der App prüfen. In der Clip-Nachbearbeitung Segmentstarts oder Varianten ändern und „Änderungen neu rendern“ wählen. Diese Aktion erhält gewählte Ausschnitte. „Segmente neu planen“ berechnet alle Ausschnitte mit aktueller Länge, Mitte/Offset und automatischer Segmentwahl neu; manuelle Ausschnitte werden erst nach erfolgreichem Rendern ersetzt. Die globale Variantenwahl gilt für einen neuen Import; vorhandene Varianten werden pro Clip gewechselt. „Projekt laden“ stellt die gespeicherten Render-Einstellungen wieder her.
Die automatische Segmentwahl sucht nach geeigneten Gesicht-/Augenaufnahmen. Gesichtsausrichtung und Stabilisierung sind heuristisch und sollten anhand des Ergebnisses geprüft werden.
Apple Vision erkennt Gesicht, Augen und Kopfhaltung. Die gemeinsame Übergangsplanung sucht passende Ausschnitte über die gesamte Folge. Die Gesichtsausrichtung berücksichtigt unterschiedliche Aufnahmeabstände; der vorsichtige Farbabgleich misst nur innerhalb des Gesichts. Wechselnde Hintergründe dienen nicht als Farbreferenz. Gesichtsausrichtung und Stabilisierung sind heuristisch und sollten anhand des Ergebnisses geprüft werden. Details und Grenzen: [Visuelle Kontinuität in Version 0.4.0](docs/VISUELLE_KONTINUITAET.md).
Für einen neuen Import nach einem bestehenden Projekt im Menü „Projekt“ die Aktion „Neuen Import vorbereiten“ wählen oder einen anderen Input-Ordner auswählen. Gespeicherte Projekte bleiben dabei erhalten.
## Dateien und Einstellungen
@@ -74,7 +77,7 @@ Für Integrationstests genügt die Command-Line-Tools-Umgebung mit FFmpeg und FF
bash scripts/integration-tests.sh
```
Dieser Test baut einen eigenen Test-Einstieg mit den produktiven Render-Klassen, erzeugt synthetische Videos und prüft unter anderem Speichern/Laden, Cache, Tonspuren, Überblendungen, Endausgabe-Fehler, Wiederherstellung und Abbruch. Er verändert keine persönlichen Einstellungen. Testdateien werden automatisch entfernt; mit `GROWTHLAPSE_KEEP_TEST_OUTPUT=1` bleiben sie zur Kontrolle erhalten.
Dieser Test baut einen eigenen Test-Einstieg mit den produktiven Render-Klassen, erzeugt synthetische Videos und prüft unter anderem Speichern/Laden, Cache, Tonspuren, Überblendungen, Endausgabe-Fehler, Wiederherstellung und Abbruch. Zusätzlich prüft er gemeinsame Übergangsplanung, wechselnde Kameraabstände, hintergrundunabhängige Farbmessung sowie Entwurfsrendering ohne Veränderung der finalen Ausgabe. Er verändert keine persönlichen Einstellungen. Testdateien werden automatisch entfernt; mit `GROWTHLAPSE_KEEP_TEST_OUTPUT=1` bleiben sie zur Kontrolle erhalten.
Für einen manuellen Funktionstest zwei kurze Videos in einen separaten Testordner legen und ein neues Ausgabeziel wählen. Zunächst ohne Stabilisierung und ohne Übergang rendern, danach mit Überblendung und den gewünschten Filtern. Ergebnis abspielen, einen Segmentstart ändern, erneut rendern, Projekt laden und Abbruch während eines weiteren Renders prüfen.
@@ -85,6 +88,7 @@ Für einen manuellen Funktionstest zwei kurze Videos in einen separaten Testordn
| `RenderSettings.swift` | Datenmodelle und persistierte Einstellungen |
| `FFmpegService.swift` | Werkzeugsuche, Encoder-Prüfung und abbrechbare Prozessausführung |
| `RenderWorkspace.swift` | Isolierte Arbeitsverzeichnisse, sichere Cache-Löschung und Übernahme der Ausgabe |
| `VisualContinuity.swift` | Gesichtsmessung, gemeinsame Ausschnittplanung, Farbkorrektur und Prüfhinweise |
| `VideoProcessor.swift` | Videoanalyse, Render-Pipeline, Cache und Gesichtserkennung |
Alle genannten Swift-Dateien liegen unter `Sources/GrowthLapse/`.