HaaDeej commited on
Commit
d1680fa
·
verified ·
1 Parent(s): 464db64

Upload blend_5050.sh with huggingface_hub

Browse files
Files changed (1) hide show
  1. blend_5050.sh +45 -0
blend_5050.sh ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #!/bin/bash
2
+ # blend_5050.sh — 100% gesynchroniseerde 50/50 blend van LTX + Flux1 colorize.
3
+ # Lost de bekende desync op: (1) broken container (24fps-content-als-30fps -> 226s),
4
+ # (2) ongelijke frame-counts (LTX 67x81=5427 vs Flux1 ~5400). Aligned vanaf frame 0.
5
+ # Usage: blend_5050.sh <LTX.mp4> <FLUX.mp4> <AUDIO.m4a> <OUT.mp4> [WxH]
6
+ set -e
7
+ LTX="$1"; FLUX="$2"; AUDIO="$3"; OUT="$4"; RES="${5:-1920:1080}"
8
+ TMP=$(mktemp -d)
9
+ echo "[BLEND] LTX=$LTX FLUX=$FLUX res=$RES"
10
+
11
+ # Bron-specs (diagnose)
12
+ probe(){ ffprobe -v error -select_streams v:0 -count_packets -show_entries stream=nb_read_packets,r_frame_rate,avg_frame_rate -show_entries format=duration -of default=nw=1 "$1"; }
13
+ echo "[BRON LTX ]"; probe "$LTX"
14
+ echo "[BRON FLUX]"; probe "$FLUX"
15
+
16
+ # STAP 1: forceer beide naar SCHONE 30fps CFR (settb+setpts = retiming dat een broken
17
+ # 24fps-als-30fps container repareert; -vsync cfr borgt constante frametiming). Geen resample.
18
+ ffmpeg -y -loglevel error -i "$LTX" -vf "settb=AVTB,setpts=N/30/TB,scale=${RES},setsar=1" -r 30 -vsync cfr -an -c:v libx264 -crf 16 "$TMP/ltx30.mp4"
19
+ ffmpeg -y -loglevel error -i "$FLUX" -vf "settb=AVTB,setpts=N/30/TB,scale=${RES},setsar=1" -r 30 -vsync cfr -an -c:v libx264 -crf 16 "$TMP/flux30.mp4"
20
+
21
+ # STAP 2: exacte frame-counts -> gemeenschappelijke lengte = min (aligned vanaf frame 0)
22
+ NL=$(ffprobe -v error -select_streams v:0 -count_packets -show_entries stream=nb_read_packets -of csv=p=0 "$TMP/ltx30.mp4")
23
+ NF=$(ffprobe -v error -select_streams v:0 -count_packets -show_entries stream=nb_read_packets -of csv=p=0 "$TMP/flux30.mp4")
24
+ N=$(( NL < NF ? NL : NF ))
25
+ echo "[SYNC] LTX=$NL, FLUX=$NF frames -> trim beide EXACT naar $N"
26
+
27
+ # STAP 3: trim beide naar N frames
28
+ ffmpeg -y -loglevel error -i "$TMP/ltx30.mp4" -frames:v "$N" -c:v libx264 -crf 16 "$TMP/ltxN.mp4"
29
+ ffmpeg -y -loglevel error -i "$TMP/flux30.mp4" -frames:v "$N" -c:v libx264 -crf 16 "$TMP/fluxN.mp4"
30
+
31
+ # STAP 4: 50/50 blend + audio (beide nu IDENTIEK N frames @ 30fps CFR -> 100% synchroon)
32
+ ffmpeg -y -loglevel error -i "$TMP/ltxN.mp4" -i "$TMP/fluxN.mp4" -i "$AUDIO" \
33
+ -filter_complex "[0:v][1:v]blend=all_mode=average[v]" \
34
+ -map "[v]" -map "2:a" -shortest -r 30 -vsync cfr -c:v libx264 -crf 16 -c:a aac "$OUT"
35
+
36
+ # STAP 5: verifieer + extraheer alignment-frames (frame 0, midden, eind) van beide bronnen
37
+ echo "[VERIFY OUT] $(ffprobe -v error -select_streams v:0 -count_packets -show_entries stream=nb_read_packets,r_frame_rate -show_entries format=duration -of default=nw=1 "$OUT" | tr '\n' ' ')"
38
+ VDIR="$(dirname "$OUT")/align_check"; mkdir -p "$VDIR"
39
+ for fr in 0 $((N/2)) $((N-1)); do
40
+ ffmpeg -y -loglevel error -i "$TMP/ltxN.mp4" -vf "select=eq(n\,$fr)" -frames:v 1 "$VDIR/f${fr}_ltx.png"
41
+ ffmpeg -y -loglevel error -i "$TMP/fluxN.mp4" -vf "select=eq(n\,$fr)" -frames:v 1 "$VDIR/f${fr}_flux.png"
42
+ done
43
+ echo "[ALIGN] check-frames in $VDIR (f0/fmid/fend, ltx vs flux -- moeten dezelfde scene tonen)"
44
+ rm -rf "$TMP"
45
+ echo "[BLEND] klaar -> $OUT"