#!/usr/bin/env bash
# Kompres video agar <= 20MB (batas Telegram bot) — pakai: bash kompres_telegram.sh video.mp4
# Output: video_compress.mp4 di folder yang sama
set -e
IN="$1"
if [ -z "$IN" ] || [ ! -f "$IN" ]; then
  echo "❌ Pakai: bash kompres_telegram.sh namafile.mp4"
  exit 1
fi
SIZE=$(stat -c%s "$IN")
LIMIT=$((20*1024*1024))  # 20MB
if [ "$SIZE" -le "$LIMIT" ]; then
  echo "✅ File udah $((SIZE/1024/1024))MB — di bawah 20MB, nggak perlu kompres."
  exit 0
fi
OUT="${IN%.*}_compress.mp4"
echo "📦 Ukuran awal: $((SIZE/1024/1024))MB → kompres ke: $OUT"
# Pass 1: coba crf 30 (kualitas cukup utk sosmed)
ffmpeg -y -i "$IN" -vf "scale='min(1280,iw)':-2" -c:v libx264 -preset medium -crf 30 -movflags +faststart -an "$OUT" >/dev/null 2>&1
S2=$(stat -c%s "$OUT" 2>/dev/null || echo 0)
if [ "$S2" -le "$LIMIT" ]; then
  echo "✅ Jadi $((S2/1024/1024))MB — siap kirim ke Telegram"
else
  # Pass 2: turunkan resolusi + crf lebih tinggi
  ffmpeg -y -i "$IN" -vf "scale='min(854,iw)':-2" -c:v libx264 -preset medium -crf 32 -movflags +faststart -an "$OUT" >/dev/null 2>&1
  S3=$(stat -c%s "$OUT" 2>/dev/null || echo 0)
  echo "✅ Jadi $((S3/1024/1024))MB (resolusi diturunkan) — siap kirim"
fi
echo "📁 File: $OUT"
