S4: Untertitel aus der Mikrofonspur, plus vorgegebenes OBS-Layout

whisper.cpp laeuft ueber die Tonspur und liefert Tokens; daraus werden
Woerter mit Zeitstempeln (Wortstuecke wie "Sav"+"ina" wieder zusammengesetzt)
und daraus kurze Zeilen im ASS-Format mit wortweiser Hervorhebung. SRT und
Transkript fallen nebenbei ab.

An einem echten deutschen Clip geprueft. Drei Fehler kamen erst dabei heraus:
Zeilen mit einem einzigen Wort bei zoegerndem Sprechen, ein Nachlauf, der in
die naechste Zeile ragte (ASS stapelt gleichzeitige Zeilen uebereinander),
und ein Uebertragsfehler im Zeitformat bei 59,999 s.

Layout wird jetzt VORGEGEBEN statt nachgemessen: ein Vergleich zweier
Aufnahmen zeigte, dass die Facecam von Stream zu Stream anders liegt. Das
Profil "default" beschreibt die Vorgabe (Facecam 480x270 oben links, Chat ab
x=1405, Gameplay-Band 890 breit mittig auf x=960), "bestand-2026-09" haelt
den alten Zustand fuer altes Material fest. Dazu eine Ausrichtungsvorlage als
Bild, die in OBS ueber die Szene gelegt wird, und docs/obs-layout.md.

Befund am echten Clip: im Streambild sind bereits zwei Textebenen eingebrannt
(Spieluntertitel und ein Live-Caption-Overlay). Beides ist im Layout-Dokument
behandelt.

53 Tests gruen.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013VTGjd92LsDDWF3frd9FTB
This commit is contained in:
ZeasyAlexandClaude Opus 5 committed 2026-09-09 10:55:54 +02:00
1 parent 0e020f3073
commit 974dfd075b
11 files changed
+824 -33

No files matched your search

+38 -21
View File
@@ -1,44 +1,61 @@
# Eingemessen am 2026-09-09 aus einem VOD-Screenshot (GTA 5, Szene "Gameplay").
# Bildaufteilung fuer den 9:16-Zuschnitt.
# Alle Werte in Koordinaten des fertigen Streambildes 1920x1080.
#
# Nachmessen: docker compose run --rm toolkit calibrate
# Hintergrund: docs/projects/clip-shorts.md
# Anleitung fuer OBS: docs/obs-layout.md
source:
width: 1920
height: 1080
# Ziel: 9:16 fuer Shorts/Reels/TikTok
target:
width: 1080
height: 1920
profiles:
# Standardprofil: Facecam oben links, Chat-Overlay rechts eingebrannt
# ------------------------------------------------------------------
# Das VORGEGEBENE Layout. Abdu richtet OBS danach aus, nicht umgekehrt.
# Vorlage zum Ausrichten: docs/assets/obs-layout-vorlage.png
#
# Die Zahlen sind so gewaehlt, dass sie fuer beide Formate gleichzeitig
# aufgehen: die Facecam ist 16:9 (kein Streifenschnitt noetig), das
# Gameplay-Band liegt mittig auf x=960 (dort passiert die Handlung), und
# zwischen Kamera und Band bleiben 35 px Luft.
# ------------------------------------------------------------------
default:
description: >
Facecam bündig oben links (440x330, 4:3). Chat-Overlay ist ins Streambild
eingebrannt und beginnt bei x=1270 - der Gameplay-Ausschnitt endet
deshalb bei x=1268. Minimap (x<360) und Handy-Overlay (x>1540) liegen
ausserhalb und fallen automatisch weg.
Vorgegebenes Layout. Facecam 480x270 buendig oben links, Chat und
Alerts erst ab x=1405, dazwischen das Gameplay-Band.
cam:
# Ganze Kamera, unveraendert - sie ist bereits 16:9
crop: { x: 0, y: 0, w: 480, h: 270 }
band: { w: 1080, h: 608 }
game:
# 890 breit, mittig auf x=960. Beginnt bei 515, also 35 px rechts
# neben der Kamera; endet bei 1405, wo die Chatspalte anfaengt.
crop: { x: 515, y: 0, w: 890, h: 1080 }
band: { w: 1080, h: 1312 }
# 608 + 1312 = 1920
# Vergroesserung: Kamera 2,25x, Gameplay 1,21x
# ------------------------------------------------------------------
# Was am 2026-09-05 tatsaechlich im Bild war. Nur als Rueckfalloption,
# solange OBS noch nicht umgestellt ist - zum Nachrendern alter Clips:
# docker compose run --rm toolkit render <datei> bestand-2026-09
# ------------------------------------------------------------------
bestand-2026-09:
description: >
Aus einem VOD-Screenshot eingemessen, bevor das Layout vorgegeben
wurde. Facecam 4:3 und deshalb nur als Streifen nutzbar; Chat-Overlay
begann bereits bei x=1270.
cam:
# Facecam im Streambild: x 0..440, y 0..330
# Davon wird ein Streifen genommen, der zum Zielband passt - NICHT
# verzerrt. 4:3 auf 16:9 zu strecken wuerde das Gesicht breit ziehen.
crop: { x: 0, y: 100, w: 440, h: 208 }
band: { w: 1080, h: 512 }
game:
# Sauberes Band zwischen Facecam (endet 440) und Chat (beginnt 1270)
crop: { x: 440, y: 0, w: 828, h: 1080 }
band: { w: 1080, h: 1408 }
# 512 + 1408 = 1920
# Messwerte aus dem Referenzbild, zur Nachvollziehbarkeit:
# Videobereich im Screenshot : x 0..1916, y 60..1137 (1917x1078)
# Facecam rechte Kante : x 439 (konstant bei y=120/200/280/360)
# Facecam untere Kante : y 391 (konstant bei x=40/140/240/340/420)
# Chat-Overlay beginnt : x 1268
# Gesicht (Cam-lokal) : y 126..300, Mitte ~213