#!/bin/bash
# Monta reel 9:16 a partir de 4 frames PNG
# Uso: ./montar_video.sh <pasta_frames> <output.mp4>
# Cada cena: 5s com Ken Burns (zoom sutil), crossfade 0.6s entre cenas
set -e

FRAMES_DIR="$1"
OUTPUT="$2"

if [ -z "$FRAMES_DIR" ] || [ -z "$OUTPUT" ]; then
  echo "Uso: $0 <pasta_frames> <output.mp4>"
  exit 1
fi

W=1080
H=1920
DUR=5   # duracao por cena em segundos
FPS=30
FADE=0.6  # crossfade em segundos

# Gera 4 clips com Ken Burns diferentes por cena
# scene_01: zoom-in central (parada scroll)
# scene_02: zoom-out (revela)
# scene_03: zoom-in slow
# scene_04: pan up (CTA fixa)

TMP=$(mktemp -d)
trap "rm -rf $TMP" EXIT

# Ken Burns via zoompan: zoom sutil de 1.0 -> 1.08 em 5s (150 frames)
KB_IN='zoompan=z=min(zoom+0.0006\,1.1):d=150:s=1080x1920:x=iw/2-(iw/zoom/2):y=ih/2-(ih/zoom/2):fps=30'
KB_OUT='zoompan=z=max(1.10-0.0006*on\,1.0):d=150:s=1080x1920:x=iw/2-(iw/zoom/2):y=ih/2-(ih/zoom/2):fps=30'
KB_UP='zoompan=z=min(zoom+0.0004\,1.06):d=150:s=1080x1920:x=iw/2-(iw/zoom/2):y=ih*0.6-(ih/zoom/2):fps=30'
KB_STATIC='zoompan=z=1.0:d=150:s=1080x1920:x=iw/2-(iw/zoom/2):y=ih/2-(ih/zoom/2):fps=30'

# renderiza cada cena
for i in 1 2 3 4; do
  case $i in
    1) KB="$KB_IN" ;;
    2) KB="$KB_IN" ;;
    3) KB="$KB_OUT" ;;
    4) KB="$KB_STATIC" ;;
  esac
  ffmpeg -y -loop 1 -i "$FRAMES_DIR/scene_0$i.png" \
    -vf "$KB,format=yuv420p" \
    -t $DUR -r $FPS -c:v libx264 -preset medium -crf 18 -pix_fmt yuv420p \
    "$TMP/clip_$i.mp4" 2>/dev/null
  echo "Clip $i renderizado"
done

# Concatena com crossfade
# xfade em cascata: 4 clips -> 3 fades
ffmpeg -y \
  -i "$TMP/clip_1.mp4" -i "$TMP/clip_2.mp4" -i "$TMP/clip_3.mp4" -i "$TMP/clip_4.mp4" \
  -filter_complex "
    [0:v][1:v]xfade=transition=fade:duration=$FADE:offset=$(echo "$DUR - $FADE" | bc -l)[v01];
    [v01][2:v]xfade=transition=fade:duration=$FADE:offset=$(echo "$DUR*2 - $FADE*2" | bc -l)[v012];
    [v012][3:v]xfade=transition=fade:duration=$FADE:offset=$(echo "$DUR*3 - $FADE*3" | bc -l)[vout]
  " \
  -map "[vout]" -c:v libx264 -preset medium -crf 18 -pix_fmt yuv420p -r $FPS \
  "$OUTPUT" 2>&1 | tail -5

echo ""
echo "OK -> $OUTPUT"
ls -lh "$OUTPUT"
