diff --git a/CUTTER_REPORT.html b/CUTTER_REPORT.html index 26451d9..83be8d4 100644 --- a/CUTTER_REPORT.html +++ b/CUTTER_REPORT.html @@ -132,5 +132,5 @@ table.ov tr:hover { background: rgba(255, 255, 255, 0.05); }
-

Cutter & Match Report

Generiert: 2026-05-08 14:29:06Trailer: BehindTheRedDoor_Trailer_REFERENCE.mp4 @ 25.000 fpsSource: BehindTheRedDoor_FTR_1080P_2398_Fixed.mp4 @ 23.976 fps
25 Beats — 23 automatisch (4 bestätigt)2 manuell.
Recent Changes:
Mask timecode in phase refine and guard cutter scene starts

Legende

OKBestätigt — direkt in Schnitt-Timeline übernehmen
?Vorläufig — Phase und Aktion im NLE visuell prüfen
MAN.Kein Treffer — manuell suchen oder Schwarzbild einfügen

Übersicht

BeatTrailer TC In–OutDauerSource TC InSceneScoreStatus
0000:00:00:00–00:00:03:003.00s00:00:03:1910.597?
0100:00:03:00–00:00:08:105.40s00:00:04:0910.380?
0200:00:08:10–00:00:16:248.56s00:00:35:0530.761OK
0300:00:16:24–00:00:19:032.16s01:02:19:034360.572?
0400:00:19:03–00:00:20:161.52s01:02:21:094370.728OK
0500:00:20:16–00:00:26:095.72s00:01:33:03100.499?
0600:00:26:09–00:00:29:062.88s00:01:03:0750.396?
0700:00:29:06–00:00:31:172.44s01:20:10:105530.497?
0800:00:31:17–00:00:33:161.96s00:00:51:0750.620?
0900:00:33:16–00:00:36:193.12s01:20:29:035570.674OK
1000:00:36:19–00:00:40:023.32s01:20:35:16558+559+5560.660?
1100:00:40:02–00:00:42:032.04s01:20:40:185590.636?
1200:00:42:03–00:00:50:068.12s01:14:26:06519+130.701OK
1300:00:50:06–00:00:53:213.60s00:43:19:133080.636?
1400:00:53:21–00:00:57:023.24s00:43:24:173090.444?
1500:00:57:02–00:01:01:124.40s00:02:10:0817+3090.650?
1600:01:01:12–00:01:04:123.00s01:05:12:124510.626?
1700:01:04:12–00:01:09:034.64s01:31:18:04623+720.399?
1800:01:09:03–00:01:10:191.64sMAN.
1900:01:10:19–00:01:12:131.76s00:16:48:131260.403?
2000:01:12:13–00:01:15:143.04s01:27:05:036130.417?
2100:01:15:14–00:01:17:131.96s00:23:55:001750.526?
2200:01:17:13–00:01:19:232.40s01:03:05:114420.544?
2300:01:19:23–00:01:25:145.64s01:04:35:214460.534?
2400:01:25:14–00:01:32:076.72sMAN.

Beat-Details

Beat 00

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:00:00–00:00:03:00  (3.00s)
Phase logo animation assembling from distorted shapes with motion blur
Bild centered, symmetrical, abstract black void
Source
00:00:03:19–00:00:05:09
Scene 1 · Score 0.597
⚠ Score 0.597 unter 0.65 — visuell prüfen
python cli.py rematch --beat 0

Beat 01

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:03:00–00:00:08:10  (5.40s)
Phase Dynamic motion blur and shifting optical distortions across the text
Bild Centered, symmetrical layout with overlapping circular glass-like distortions, Abstract black void
Source
00:00:04:09–00:00:06:03
Scene 1 · Score 0.380
⚠ Score 0.380 unter 0.65 — visuell prüfen
python cli.py rematch --beat 1

Beat 02

OKBestätigt
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:08:10–00:00:16:24  (8.56s)
Phase drawing a heart shape on a foggy surface
Bild extreme close-up, shifting from profile of a face to a hand interacting with a surface, indoor, obscured glass or foggy surface
Source
00:00:35:05–00:00:43:06
Scene 3 · Score 0.761
python cli.py rematch --beat 2

Beat 03

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:16:24–00:00:19:03  (2.16s)
Phase speaking and smiling slightly
Bild close-up shot, centered face, outdoor rocky environment
Source
01:02:19:03–01:02:20:20
Scene 436 · Score 0.572
⚠ Score 0.572 unter 0.65 — visuell prüfen
python cli.py rematch --beat 3

Beat 04

OKBestätigt
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:19:03–00:00:20:16  (1.52s)
Phase lifting a camera to eye level to take a photo
Bild medium shot, subject centered, shallow depth of field with blurred treeline background, outdoor forest landscape, overcast sky
Source
01:02:21:09–01:02:22:08
Scene 437 · Score 0.728
python cli.py rematch --beat 4

Beat 05

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:20:16–00:00:26:09  (5.72s)
Phase a metallic cylindrical object is brought toward and touches the skin of the forearm
Bild extreme close-up, shallow depth of field, indistinct dark interior
Source
00:01:33:03–00:01:37:09
Scene 10 · Score 0.499
⚠ Score 0.499 unter 0.65 — visuell prüfen
python cli.py rematch --beat 5

Beat 06

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:26:09–00:00:29:06  (2.88s)
Phase hand reaching toward and touching an ornate decorative box
Bild close-up, shallow depth of field, hand entering from left frame, dark interior
Source
00:01:03:07–00:01:05:03
Scene 5 · Score 0.396
⚠ Score 0.396 unter 0.65 — visuell prüfen
python cli.py rematch --beat 6

Beat 07

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:29:06–00:00:31:17  (2.44s)
Phase man appears to be engaged in conversation
Bild man in a light gray sweater and scarf, seated on a white couch, with a window in the background, indoor with a view of the ocean
Source
01:20:10:10–01:20:12:14
Scene 553 · Score 0.497
⚠ Score 0.497 unter 0.65 — visuell prüfen
python cli.py rematch --beat 7

Beat 08

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:31:17–00:00:33:16  (1.96s)
Phase static or slow drifting
Bild close-up, diagonal curve from top-left to bottom-center, dark, indistinct void
Source
00:00:51:07–00:00:53:01
Scene 5 · Score 0.620
⚠ Score 0.620 unter 0.65 — visuell prüfen
python cli.py rematch --beat 8

Beat 09

OKBestätigt
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:33:16–00:00:36:19  (3.12s)
Phase speaking, transitioning from closed eyes to open mouth and focused gaze
Bild medium close-up, subject positioned right of center, profile/three-quarter view, indoor room next to a large window overlooking a blue horizon/sea
Source
01:20:29:03–01:20:32:06
Scene 557 · Score 0.674
python cli.py rematch --beat 9

Beat 10

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:36:19–00:00:40:02  (3.32s)
Phase conversation
Bild alternating close-ups and a medium two-shot, indoor living room with large windows showing a blue exterior landscape
Source
01:20:35:16  (multi-shot)
Scene Scenes 558, 559, 556 · 3 Segmente
  • Seg 1: 01:20:35:16  dur 0.88s  @ off 0.00s  sc 558  score 0.674
  • Seg 2: 01:20:36:13  dur 1.76s  @ off 0.88s  sc 559  score 0.649
  • Seg 3: 01:20:22:14  dur 0.68s  @ off 2.64s  sc 556  score 0.672
python cli.py rematch --beat 10

Beat 11

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:40:02–00:00:42:03  (2.04s)
Phase static talking head with slight facial expression changes
Bild medium close-up, subject positioned right of center, profile/three-quarter view facing left, indoor room with a large window showing a blue sea/horizon background
Source
01:20:40:18–01:20:42:18
Scene 559 · Score 0.636
⚠ Score 0.636 unter 0.65 — visuell prüfen
python cli.py rematch --beat 11

Beat 12

OKBestätigt
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:42:03–00:00:50:06  (8.12s)
Phase static profile shot transitioning to black/darkness
Bild medium close-up, profile view, subject positioned on the right side of the frame, dark outdoor environment, blurred trees in background
Source
01:14:26:06  (multi-shot)
Scene Scenes 519, 13 · 2 Segmente
  • Seg 1: 01:14:26:06  dur 3.52s  @ off 0.16s  sc 519  score 0.721
  • Seg 2: 00:01:47:14  dur 2.88s  @ off 4.88s  sc 13  score 0.676
python cli.py rematch --beat 12

Beat 13

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:50:06–00:00:53:21  (3.60s)
Phase static conversation; woman on right is standing and holding a cup
Bild wide shot, two figures positioned on opposite sides of a round dining table, modern glass-walled sunroom or conservatory overlooking a snowy landscape
Source
00:43:19:13–00:43:23:04
Scene 308 · Score 0.636
⚠ Score 0.636 unter 0.65 — visuell prüfen
python cli.py rematch --beat 13

Beat 14

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:53:21–00:00:57:02  (3.24s)
Phase static conversation, subject holding a white cup
Bild medium shot, subject positioned on the left, vertical window frame dividing the right third of the frame, interior room with a large window overlooking a snowy pine forest
Source
00:43:24:17–00:43:34:02
Scene 309 · Score 0.626
⚠ Score 0.444 unter 0.65 — visuell prüfen
python cli.py rematch --beat 14

Beat 15

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:57:02–00:01:01:12  (4.40s)
Phase static conversation
Bild medium shot, profile view of two characters facing each other, indoor room with a large window overlooking a snowy forest
Source
00:02:10:08  (multi-shot)
Scene Scenes 17, 309 · 2 Segmente
  • Seg 1: 00:02:10:08  dur 2.80s  @ off 0.24s  sc 17  score 0.720
  • Seg 2: 00:43:38:19  dur 1.28s  @ off 3.04s  sc 309  score 0.380
python cli.py rematch --beat 15

Beat 16

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:01:12–00:01:04:12  (3.00s)
Phase man reaches out and touches the red door with a small object
Bild medium side profile shot, subject on left, door on right, indoor dim environment, adjacent to a red wooden door
Source
01:05:12:12–01:05:15:07
Scene 451 · Score 0.626
⚠ Score 0.626 unter 0.65 — visuell prüfen
python cli.py rematch --beat 16

Beat 17

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:04:12–00:01:09:03  (4.64s)
Phase Static intimacy transitioning to a spatial arrangement of figures
Bild Medium shot, eye-level. First two frames: static shot of couple in bed. Third frame: wide shot of women among white blocks, Bedroom with bedside table and lamp; transition to a white minimalist interior with pedestals
Source
01:31:18:04  (multi-shot)
Scene Scenes 623, 72 · 3 Segmente
  • Seg 1: 01:31:18:04  dur 1.92s  @ off 0.24s  sc 623  score 0.384
  • Seg 2: 00:09:06:13  dur 1.04s  @ off 2.80s  sc 72  score 0.434
  • Seg 3: 00:09:07:18  dur 0.50s  @ off 4.00s  sc 72  score 0.384
⚠ Score 0.399 unter 0.65 — visuell prüfen
python cli.py rematch --beat 17

Beat 18

MAN.Kein Treffer
Trailer 18
— manuell setzen —
Trailer
00:01:09:03–00:01:10:19  (1.64s)
Phase Woman in foreground turns her head from profile to face the camera while speaking
Bild Medium shot, three-quarter profile of woman in foreground left, two women positioned behind her to the right, Indoors, minimalist dark background
— kein automatischer Treffer —
python cli.py rematch --beat 18

Beat 19

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:10:19–00:01:12:13  (1.76s)
Phase static conversation, subtle facial expression change
Bild medium close-up, over-the-shoulder shot with a blurred figure in the foreground right, outdoor dark forest or wooded area
Source
00:16:48:13–00:16:49:10
Scene 126 · Score 0.403
⚠ Score 0.403 unter 0.65 — visuell prüfen
python cli.py rematch --beat 19

Beat 20

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:12:13–00:01:15:14  (3.04s)
Phase man kisses woman's forehead, then they pull back slightly to face each other
Bild extreme close-up, profile view, faces facing each other, indoor, blurred background
Source
01:27:05:03–01:27:06:00
Scene 613 · Score 0.417
⚠ Score 0.417 unter 0.65 — visuell prüfen
python cli.py rematch --beat 20

Beat 21

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:15:14–00:01:17:13  (1.96s)
Phase hand raised to mouth, slight facial movement
Bild extreme close-up, face partially obscured by shadow, dark interior
Source
00:23:55:00–00:23:56:23
Scene 175 · Score 0.526
⚠ Score 0.526 unter 0.65 — visuell prüfen
python cli.py rematch --beat 21

Beat 22

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:17:13–00:01:19:23  (2.40s)
Phase man looks up and speaks, transitioning from downward gaze to forward gaze
Bild close-up, profile to three-quarter view, outdoor rocky environment, blurred background
Source
01:03:05:11–01:03:07:07
Scene 442 · Score 0.544
⚠ Score 0.544 unter 0.65 — visuell prüfen
python cli.py rematch --beat 22

Beat 23

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:19:23–00:01:25:14  (5.64s)
Phase static posture, head tilted upwards looking at the sky
Bild medium shot, subject positioned on the left third, facing away from camera towards the water, rocky shoreline next to a body of water under an overcast sky
Source
01:04:35:21–01:04:41:02
Scene 446 · Score 0.534
⚠ Score 0.534 unter 0.65 — visuell prüfen
python cli.py rematch --beat 23

Beat 24

MAN.Kein Treffer
Trailer 24
— manuell setzen —
Trailer
00:01:25:14–00:01:32:07  (6.72s)
— kein automatischer Treffer —
python cli.py rematch --beat 24
+

Cutter & Match Report

Generiert: 2026-05-08 14:51:28Trailer: BehindTheRedDoor_Trailer_REFERENCE.mp4 @ 25.000 fpsSource: BehindTheRedDoor_FTR_1080P_2398_Fixed.mp4 @ 23.976 fps
25 Beats — 23 automatisch (4 bestätigt)2 manuell.
Recent Changes:
Tighten phase-span validation; leave drifting Beat 14 tail unmatched

Legende

OKBestätigt — direkt in Schnitt-Timeline übernehmen
?Vorläufig — Phase und Aktion im NLE visuell prüfen
MAN.Kein Treffer — manuell suchen oder Schwarzbild einfügen

Übersicht

BeatTrailer TC In–OutDauerSource TC InSceneScoreStatus
0000:00:00:00–00:00:03:003.00s00:00:03:1910.597?
0100:00:03:00–00:00:08:105.40s00:00:04:0910.380?
0200:00:08:10–00:00:16:248.56s00:00:35:0530.761OK
0300:00:16:24–00:00:19:032.16s01:02:19:034360.572?
0400:00:19:03–00:00:20:161.52s01:02:21:094370.728OK
0500:00:20:16–00:00:26:095.72s00:01:33:03100.499?
0600:00:26:09–00:00:29:062.88s00:01:03:0750.396?
0700:00:29:06–00:00:31:172.44s01:20:10:105530.497?
0800:00:31:17–00:00:33:161.96s00:00:51:0750.620?
0900:00:33:16–00:00:36:193.12s01:20:29:035570.674OK
1000:00:36:19–00:00:40:023.32s01:20:35:16558+559+5560.660?
1100:00:40:02–00:00:42:032.04s01:20:40:185590.636?
1200:00:42:03–00:00:50:068.12s01:14:26:06519+130.701OK
1300:00:50:06–00:00:53:213.60s00:43:19:133080.636?
1400:00:53:21–00:00:57:023.24s00:43:24:103090.626?
1500:00:57:02–00:01:01:124.40s00:02:10:0817+3090.650?
1600:01:01:12–00:01:04:123.00s01:05:12:124510.626?
1700:01:04:12–00:01:09:034.64s01:31:18:04623+720.399?
1800:01:09:03–00:01:10:191.64sMAN.
1900:01:10:19–00:01:12:131.76s00:16:48:131260.403?
2000:01:12:13–00:01:15:143.04s01:27:05:036130.417?
2100:01:15:14–00:01:17:131.96s00:23:55:001750.526?
2200:01:17:13–00:01:19:232.40s01:03:05:114420.544?
2300:01:19:23–00:01:25:145.64s01:04:35:214460.534?
2400:01:25:14–00:01:32:076.72sMAN.

Beat-Details

Beat 00

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:00:00–00:00:03:00  (3.00s)
Phase logo animation assembling from distorted shapes with motion blur
Bild centered, symmetrical, abstract black void
Source
00:00:03:19–00:00:05:09
Scene 1 · Score 0.597
⚠ Score 0.597 unter 0.65 — visuell prüfen
python cli.py rematch --beat 0

Beat 01

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:03:00–00:00:08:10  (5.40s)
Phase Dynamic motion blur and shifting optical distortions across the text
Bild Centered, symmetrical layout with overlapping circular glass-like distortions, Abstract black void
Source
00:00:04:09–00:00:06:03
Scene 1 · Score 0.380
⚠ Score 0.380 unter 0.65 — visuell prüfen
python cli.py rematch --beat 1

Beat 02

OKBestätigt
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:08:10–00:00:16:24  (8.56s)
Phase drawing a heart shape on a foggy surface
Bild extreme close-up, shifting from profile of a face to a hand interacting with a surface, indoor, obscured glass or foggy surface
Source
00:00:35:05–00:00:43:06
Scene 3 · Score 0.761
python cli.py rematch --beat 2

Beat 03

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:16:24–00:00:19:03  (2.16s)
Phase speaking and smiling slightly
Bild close-up shot, centered face, outdoor rocky environment
Source
01:02:19:03–01:02:20:20
Scene 436 · Score 0.572
⚠ Score 0.572 unter 0.65 — visuell prüfen
python cli.py rematch --beat 3

Beat 04

OKBestätigt
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:19:03–00:00:20:16  (1.52s)
Phase lifting a camera to eye level to take a photo
Bild medium shot, subject centered, shallow depth of field with blurred treeline background, outdoor forest landscape, overcast sky
Source
01:02:21:09–01:02:22:08
Scene 437 · Score 0.728
python cli.py rematch --beat 4

Beat 05

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:20:16–00:00:26:09  (5.72s)
Phase a metallic cylindrical object is brought toward and touches the skin of the forearm
Bild extreme close-up, shallow depth of field, indistinct dark interior
Source
00:01:33:03–00:01:37:09
Scene 10 · Score 0.499
⚠ Score 0.499 unter 0.65 — visuell prüfen
python cli.py rematch --beat 5

Beat 06

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:26:09–00:00:29:06  (2.88s)
Phase hand reaching toward and touching an ornate decorative box
Bild close-up, shallow depth of field, hand entering from left frame, dark interior
Source
00:01:03:07–00:01:05:03
Scene 5 · Score 0.396
⚠ Score 0.396 unter 0.65 — visuell prüfen
python cli.py rematch --beat 6

Beat 07

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:29:06–00:00:31:17  (2.44s)
Phase man appears to be engaged in conversation
Bild man in a light gray sweater and scarf, seated on a white couch, with a window in the background, indoor with a view of the ocean
Source
01:20:10:10–01:20:12:14
Scene 553 · Score 0.497
⚠ Score 0.497 unter 0.65 — visuell prüfen
python cli.py rematch --beat 7

Beat 08

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:31:17–00:00:33:16  (1.96s)
Phase static or slow drifting
Bild close-up, diagonal curve from top-left to bottom-center, dark, indistinct void
Source
00:00:51:07–00:00:53:01
Scene 5 · Score 0.620
⚠ Score 0.620 unter 0.65 — visuell prüfen
python cli.py rematch --beat 8

Beat 09

OKBestätigt
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:33:16–00:00:36:19  (3.12s)
Phase speaking, transitioning from closed eyes to open mouth and focused gaze
Bild medium close-up, subject positioned right of center, profile/three-quarter view, indoor room next to a large window overlooking a blue horizon/sea
Source
01:20:29:03–01:20:32:06
Scene 557 · Score 0.674
python cli.py rematch --beat 9

Beat 10

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:36:19–00:00:40:02  (3.32s)
Phase conversation
Bild alternating close-ups and a medium two-shot, indoor living room with large windows showing a blue exterior landscape
Source
01:20:35:16  (multi-shot)
Scene Scenes 558, 559, 556 · 3 Segmente
  • Seg 1: 01:20:35:16  dur 0.88s  @ off 0.00s  sc 558  score 0.674
  • Seg 2: 01:20:36:14  dur 1.76s  @ off 0.88s  sc 559  score 0.649
  • Seg 3: 01:20:22:14  dur 0.68s  @ off 2.64s  sc 556  score 0.672
python cli.py rematch --beat 10

Beat 11

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:40:02–00:00:42:03  (2.04s)
Phase static talking head with slight facial expression changes
Bild medium close-up, subject positioned right of center, profile/three-quarter view facing left, indoor room with a large window showing a blue sea/horizon background
Source
01:20:40:18–01:20:42:18
Scene 559 · Score 0.636
⚠ Score 0.636 unter 0.65 — visuell prüfen
python cli.py rematch --beat 11

Beat 12

OKBestätigt
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:42:03–00:00:50:06  (8.12s)
Phase static profile shot transitioning to black/darkness
Bild medium close-up, profile view, subject positioned on the right side of the frame, dark outdoor environment, blurred trees in background
Source
01:14:26:06  (multi-shot)
Scene Scenes 519, 13 · 2 Segmente
  • Seg 1: 01:14:26:06  dur 3.52s  @ off 0.16s  sc 519  score 0.721
  • Seg 2: 00:01:47:14  dur 2.88s  @ off 4.88s  sc 13  score 0.676
python cli.py rematch --beat 12

Beat 13

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:50:06–00:00:53:21  (3.60s)
Phase static conversation; woman on right is standing and holding a cup
Bild wide shot, two figures positioned on opposite sides of a round dining table, modern glass-walled sunroom or conservatory overlooking a snowy landscape
Source
00:43:19:13–00:43:23:04
Scene 308 · Score 0.636
⚠ Score 0.636 unter 0.65 — visuell prüfen
python cli.py rematch --beat 13

Beat 14

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:53:21–00:00:57:02  (3.24s)
Phase static conversation, subject holding a white cup
Bild medium shot, subject positioned on the left, vertical window frame dividing the right third of the frame, interior room with a large window overlooking a snowy pine forest
Source
00:43:24:10–00:43:25:12 (1.08s sicher; Rest schwarz/offen)
Scene 309 · Score 0.626
⚠ Score 0.626 unter 0.65 — visuell prüfen
python cli.py rematch --beat 14

Beat 15

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:00:57:02–00:01:01:12  (4.40s)
Phase static conversation
Bild medium shot, profile view of two characters facing each other, indoor room with a large window overlooking a snowy forest
Source
00:02:10:08  (multi-shot)
Scene Scenes 17, 309 · 2 Segmente
  • Seg 1: 00:02:10:08  dur 2.80s  @ off 0.24s  sc 17  score 0.720
  • Seg 2: 00:43:38:19  dur 1.28s  @ off 3.04s  sc 309  score 0.380
python cli.py rematch --beat 15

Beat 16

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:01:12–00:01:04:12  (3.00s)
Phase man reaches out and touches the red door with a small object
Bild medium side profile shot, subject on left, door on right, indoor dim environment, adjacent to a red wooden door
Source
01:05:12:12–01:05:15:07
Scene 451 · Score 0.626
⚠ Score 0.626 unter 0.65 — visuell prüfen
python cli.py rematch --beat 16

Beat 17

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:04:12–00:01:09:03  (4.64s)
Phase Static intimacy transitioning to a spatial arrangement of figures
Bild Medium shot, eye-level. First two frames: static shot of couple in bed. Third frame: wide shot of women among white blocks, Bedroom with bedside table and lamp; transition to a white minimalist interior with pedestals
Source
01:31:18:04  (multi-shot)
Scene Scenes 623, 72 · 3 Segmente
  • Seg 1: 01:31:18:04  dur 1.92s  @ off 0.24s  sc 623  score 0.384
  • Seg 2: 00:09:06:13  dur 1.04s  @ off 2.80s  sc 72  score 0.434
  • Seg 3: 00:09:07:18  dur 0.50s  @ off 4.00s  sc 72  score 0.384
⚠ Score 0.399 unter 0.65 — visuell prüfen
python cli.py rematch --beat 17

Beat 18

MAN.Kein Treffer
Trailer 18
— manuell setzen —
Trailer
00:01:09:03–00:01:10:19  (1.64s)
Phase Woman in foreground turns her head from profile to face the camera while speaking
Bild Medium shot, three-quarter profile of woman in foreground left, two women positioned behind her to the right, Indoors, minimalist dark background
— kein automatischer Treffer —
python cli.py rematch --beat 18

Beat 19

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:10:19–00:01:12:13  (1.76s)
Phase static conversation, subtle facial expression change
Bild medium close-up, over-the-shoulder shot with a blurred figure in the foreground right, outdoor dark forest or wooded area
Source
00:16:48:13–00:16:49:10
Scene 126 · Score 0.403
⚠ Score 0.403 unter 0.65 — visuell prüfen
python cli.py rematch --beat 19

Beat 20

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:12:13–00:01:15:14  (3.04s)
Phase man kisses woman's forehead, then they pull back slightly to face each other
Bild extreme close-up, profile view, faces facing each other, indoor, blurred background
Source
01:27:05:03–01:27:06:00
Scene 613 · Score 0.417
⚠ Score 0.417 unter 0.65 — visuell prüfen
python cli.py rematch --beat 20

Beat 21

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:15:14–00:01:17:13  (1.96s)
Phase hand raised to mouth, slight facial movement
Bild extreme close-up, face partially obscured by shadow, dark interior
Source
00:23:55:00–00:23:56:23
Scene 175 · Score 0.526
⚠ Score 0.526 unter 0.65 — visuell prüfen
python cli.py rematch --beat 21

Beat 22

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:17:13–00:01:19:23  (2.40s)
Phase man looks up and speaks, transitioning from downward gaze to forward gaze
Bild close-up, profile to three-quarter view, outdoor rocky environment, blurred background
Source
01:03:05:11–01:03:07:07
Scene 442 · Score 0.544
⚠ Score 0.544 unter 0.65 — visuell prüfen
python cli.py rematch --beat 22

Beat 23

?Vorläufig
▶ Trailer  /  ▶ Source (Frame-Locked Compare)
Trailer
00:01:19:23–00:01:25:14  (5.64s)
Phase static posture, head tilted upwards looking at the sky
Bild medium shot, subject positioned on the left third, facing away from camera towards the water, rocky shoreline next to a body of water under an overcast sky
Source
01:04:35:21–01:04:41:02
Scene 446 · Score 0.534
⚠ Score 0.534 unter 0.65 — visuell prüfen
python cli.py rematch --beat 23

Beat 24

MAN.Kein Treffer
Trailer 24
— manuell setzen —
Trailer
00:01:25:14–00:01:32:07  (6.72s)
— kein automatischer Treffer —
python cli.py rematch --beat 24
diff --git a/docs/ALGORITHM.md b/docs/ALGORITHM.md index c18dea1..c1498ce 100644 --- a/docs/ALGORITHM.md +++ b/docs/ALGORITHM.md @@ -135,6 +135,13 @@ Dauer erneut geschätzt; läuft die Source am Ende in eine sichtbar andere Aktionsphase, wird der Clip gekürzt und der Rest bleibt Placeholder/Fade statt einen falschen Bewegungsmoment zu zeigen. +Diese Span-Schätzung ist strenger als der grobe Suchscore: Ein fast stehender +Anfang darf einen Match nicht retten, wenn spätere Frames sichtbar in eine +andere Gestik, Körperposition oder eintretende Figur driften. Stabile +Score-Plateaus dürfen nur verlängern, wenn sie noch nah genug am Anfangsniveau +liegen; sonst bleibt der Rest bewusst offen, statt eine falsche Phase als +Source-Material auszugeben. + ## Vision-Seeds vs. Vollscan Der gewichtete Vision-Seed-Pfad ersetzt standardmäßig keinen normalen @@ -171,9 +178,10 @@ Inpoint und übernimmt nur klare Verbesserungen. Er darf keine ganze lange Dialogszene nach ähnlichen Layouts durchsuchen, weil sonst dieselbe Location mit anderer Gestik als falsche Phase gewinnen kann und die Laufzeit explodiert. Report-Clips werden zusätzlich an den bekannten Source-Szenenstart plus eine -kurze Guard-Zone geklemmt, damit ein knapp vor oder direkt auf der Schnittkante -liegender Inpoint nicht mit Frames der vorherigen Einstellung oder einer zu -frühen Übergangsphase beginnt. +sehr kurze Ein-Frame-Guard-Zone geklemmt, damit ein knapp vor oder direkt auf +der Schnittkante liegender Inpoint nicht mit Frames der vorherigen Einstellung +beginnt. Die Guard-Zone bleibt bewusst klein, weil eine längere Korrektur die +sichtbare Bewegungsphase innerhalb derselben Einstellung verschieben würde. ## Multi-Shot-Beats diff --git a/output/cutter_clips/beat_14_compare.mp4 b/output/cutter_clips/beat_14_compare.mp4 index f1a4b04..22e8431 100644 Binary files a/output/cutter_clips/beat_14_compare.mp4 and b/output/cutter_clips/beat_14_compare.mp4 differ diff --git a/output/cutter_clips/beat_14_source.mp4 b/output/cutter_clips/beat_14_source.mp4 index 1db63ac..de36dfa 100644 Binary files a/output/cutter_clips/beat_14_source.mp4 and b/output/cutter_clips/beat_14_source.mp4 differ diff --git a/output/cutter_stills/beat_14_source.jpg b/output/cutter_stills/beat_14_source.jpg index 3a4e75d..581ba60 100644 Binary files a/output/cutter_stills/beat_14_source.jpg and b/output/cutter_stills/beat_14_source.jpg differ diff --git a/scripts/generate_cutter_report.py b/scripts/generate_cutter_report.py index d56e507..2f700ad 100644 --- a/scripts/generate_cutter_report.py +++ b/scripts/generate_cutter_report.py @@ -120,7 +120,7 @@ STILL_WIDTH = 480 STILL_QUALITY = 4 CLIP_WIDTH = 480 CLIP_MAX_DURATION_S = 30.0 -SCENE_START_GUARD_S = 0.32 +SCENE_START_GUARD_S = 0.04 # Each half of the side-by-side compare strip COMPARE_HALF_W = 480 COMPARE_H = 270 # 16:9 diff --git a/setup_venv.ps1 b/setup_venv.ps1 index 4134791..020fd5c 100644 --- a/setup_venv.ps1 +++ b/setup_venv.ps1 @@ -7,6 +7,34 @@ $ErrorActionPreference = "Stop" $VENV_DIR = ".venv" +function Invoke-CapturedProcess { + param( + [Parameter(Mandatory = $true)][string]$FilePath, + [Parameter(Mandatory = $false)][string[]]$Arguments = @() + ) + + $psi = [System.Diagnostics.ProcessStartInfo]::new() + $psi.FileName = $FilePath + foreach ($arg in $Arguments) { + [void]$psi.ArgumentList.Add($arg) + } + $psi.UseShellExecute = $false + $psi.RedirectStandardOutput = $true + $psi.RedirectStandardError = $true + $psi.CreateNoWindow = $true + + $process = [System.Diagnostics.Process]::Start($psi) + $stdout = $process.StandardOutput.ReadToEnd() + $stderr = $process.StandardError.ReadToEnd() + $process.WaitForExit() + + $combined = (($stdout + "`n" + $stderr).Trim()) + if ($process.ExitCode -ne 0) { + throw "Command failed ($($process.ExitCode)): $FilePath $($Arguments -join ' ')`n$combined" + } + return $combined +} + function Resolve-ProjectPython { $cmd = Get-Command python -ErrorAction SilentlyContinue if ($cmd) { @@ -35,7 +63,7 @@ Write-Host "" # ---- 1. Check Python version ------------------------------------------------ $PROJECT_PYTHON = Resolve-ProjectPython -$pythonVersion = & $PROJECT_PYTHON --version 2>&1 +$pythonVersion = Invoke-CapturedProcess $PROJECT_PYTHON @("--version") Write-Host "Python: $pythonVersion" if ($pythonVersion -notmatch "3\.(1[1-9]|[2-9]\d)") { Write-Error "Python 3.11+ required. Found: $pythonVersion" @@ -48,8 +76,8 @@ if (Test-Path $VENV_DIR) { $venvOk = $false if (Test-Path $existingVenvPython) { try { - $existingVersion = & $existingVenvPython --version 2>&1 - $venvOk = $LASTEXITCODE -eq 0 -and $existingVersion -match "3\.(1[1-9]|[2-9]\d)" + $existingVersion = Invoke-CapturedProcess $existingVenvPython @("--version") + $venvOk = $existingVersion -match "3\.(1[1-9]|[2-9]\d)" } catch { $venvOk = $false } @@ -60,12 +88,12 @@ if (Test-Path $VENV_DIR) { } else { Write-Host "Existing virtual environment is not usable. Recreating '$VENV_DIR' ..." -ForegroundColor Yellow Remove-Item -LiteralPath $VENV_DIR -Recurse -Force - & $PROJECT_PYTHON -m venv $VENV_DIR + Invoke-CapturedProcess $PROJECT_PYTHON @("-m", "venv", $VENV_DIR) | Out-Null Write-Host "Done." -ForegroundColor Green } } else { Write-Host "Creating virtual environment in '$VENV_DIR' ..." -ForegroundColor Green - & $PROJECT_PYTHON -m venv $VENV_DIR + Invoke-CapturedProcess $PROJECT_PYTHON @("-m", "venv", $VENV_DIR) | Out-Null Write-Host "Done." -ForegroundColor Green } diff --git a/src/cv/global_scan.py b/src/cv/global_scan.py index d9596b9..e1b35e1 100644 --- a/src/cv/global_scan.py +++ b/src/cv/global_scan.py @@ -1330,7 +1330,10 @@ def estimate_usable_source_duration( warmup_scores = [score for offset, score in scores if offset <= min(1.0, beat.duration_s * 0.35)] baseline = max(warmup_scores) if warmup_scores else max(score for _, score in scores) - min_score = max(0.34, baseline * 0.48) + # Keep the usable span tied to the same action phase, not just the same room + # or actors. A loose cutoff hides "same scene, wrong moment" drift in long + # dialogue shots where the background remains highly correlated. + min_score = max(0.42, baseline * 0.62) last_good = 0.0 bad_run = 0 @@ -1363,8 +1366,8 @@ def estimate_usable_source_duration( if ( len(tail_scores) >= 3 and float(np.std(tail_scores)) < 0.025 - and float(np.mean(tail_scores)) > 0.20 - and baseline >= 0.30 + and float(np.mean(tail_scores)) > max(0.30, baseline * 0.58) + and baseline >= 0.42 ): logger.debug( 'Beat %d: stable plateau detected at offset %.3fs '