← back to Beverlyhillsvideos

filmgen/social_reframe.sh

18 lines

#!/bin/bash
# Generate all social aspect ratios (9:16 vertical, 4:5 portrait, 1:1 square)
# for every film in public/video/. Blurred-fill, whole frame preserved. Idempotent.
cd /Users/macstudio3/Projects/beverlyhillsvideos || exit 1
VD=public/video
mkdir -p "$VD/vertical" "$VD/portrait" "$VD/square"
reframe(){ ffmpeg -y -i "$1" -filter_complex "[0:v]scale=$2:$3:force_original_aspect_ratio=increase,crop=$2:$3,gblur=sigma=24,eq=brightness=-0.10[bg];[0:v]scale=$2:-1[fg];[bg][fg]overlay=(W-w)/2:(H-h)/2,format=yuv420p[v]" -map "[v]" -map 0:a -c:v libx264 -preset medium -crf 21 -c:a aac -b:a 128k "$4" 2>/dev/null; }
n=0
for f in "$VD"/*.mp4; do
  [ -f "$f" ] || continue
  b=$(basename "$f" .mp4)
  [ -f "$VD/vertical/$b.mp4" ] || reframe "$f" 1080 1920 "$VD/vertical/$b.mp4"
  [ -f "$VD/portrait/$b.mp4" ] || { reframe "$f" 1080 1350 "$VD/portrait/$b.mp4"; n=$((n+1)); }
  [ -f "$VD/square/$b.mp4" ]   || reframe "$f" 1080 1080 "$VD/square/$b.mp4"
done
echo "portrait/square generated for $n film(s)"
echo "counts: vertical=$(ls $VD/vertical/*.mp4 2>/dev/null|wc -l|tr -d ' ') portrait=$(ls $VD/portrait/*.mp4 2>/dev/null|wc -l|tr -d ' ') square=$(ls $VD/square/*.mp4 2>/dev/null|wc -l|tr -d ' ')"