#!/bin/bash # usage: edit_mv.sh [title_secs] [W] [H] # The performance video is lip-synced from t=0, so the SONG is delayed by title_secs # to line her lips back up after the title card. set -e TITLE="$1"; PERF="$2"; SONG="$3"; OUT="$4"; TS="${5:-3}"; W="${6:-1024}"; H="${7:-1536}" TMP=/marimo/ai_studio/outputs/_edit; mkdir -p "$TMP" MS=$(( TS * 1000 )) ffmpeg -y -loop 1 -i "$TITLE" -t "$TS" \ -vf "scale=${W}:${H},zoompan=z='min(zoom+0.0006,1.06)':d=${TS}*25:s=${W}x${H},fps=25,format=yuv420p" \ -r 25 -c:v libx264 -pix_fmt yuv420p "$TMP/title.mp4" 2>/dev/null ffmpeg -y -i "$PERF" -vf "scale=${W}:${H},fps=25,format=yuv420p" -c:v libx264 -pix_fmt yuv420p -an "$TMP/perf.mp4" 2>/dev/null ffmpeg -y -i "$TMP/title.mp4" -i "$TMP/perf.mp4" \ -filter_complex "[0:v][1:v]concat=n=2:v=1:a=0[v]" -map "[v]" -c:v libx264 -pix_fmt yuv420p "$TMP/video.mp4" 2>/dev/null ffmpeg -y -i "$TMP/video.mp4" -i "$SONG" \ -filter_complex "[1:a]adelay=${MS}|${MS},apad[a]" -map 0:v -map "[a]" \ -c:v copy -c:a aac -b:a 256k -shortest "$OUT" 2>/dev/null echo "WROTE $OUT"