#!/bin/bash shopt -s nocaseglob # --- 1. CONFIGURATION --- # Utilise l'argument 1 comme dossier racine, ou le dossier courant par défaut BASE_DIR="${1:-.}" SOURCE_DIR="$BASE_DIR/rushs" DEST_DIR="$BASE_DIR/videos" # Vérification du dossier source if [ ! -d "$SOURCE_DIR" ]; then echo "❌ Erreur : Dossier source $SOURCE_DIR introuvable." exit 1 fi # Création du dossier de destination mkdir -p "$DEST_DIR" echo "--- COMPRESSION ROAD-TRIP (CPU OPTIMISÉ) ---" echo "📂 Source : $SOURCE_DIR" echo "📤 Destination : $DEST_DIR" # 2. BOUCLE DE TRAITEMENT for f in "$SOURCE_DIR"/*.{mp4,mov}; do [ -e "$f" ] || continue # Extraction du nom de base (ex: GH011182.mp4 -> GH011182) filename=$(basename "$f") base="${filename%.*}" # Conventions de nommage validées desktop_out="$DEST_DIR/${base}.mp4" mobile_out="$DEST_DIR/${base}_mobile.mp4" echo "🎬 Traitement de : $filename ..." # --- A. VERSION DESKTOP (1080p60 - Validé 233 Mo) --- # Réglages : CRF 28, Maxrate 12M, GOP 120, FPS source exact ffmpeg -i "$f" \ -c:v libx264 -preset slow -profile:v high \ -crf 28 \ -tune film \ -g 120 -keyint_min 120 -sc_threshold 0 \ -maxrate 15M -bufsize 30M \ -pix_fmt yuv420p \ -r 60000/1001 \ -vf "scale=1920:-2:flags=lanczos" \ -c:a aac -b:a 96k -ac 1 \ -map_metadata -1 \ -movflags +faststart \ -y -loglevel error \ "$desktop_out" # --- B. VERSION MOBILE (720p60 - Optimisé 4G/Smartphone) --- # Réglages : On baisse le maxrate à 6M pour la fluidité mobile ffmpeg -i "$f" \ -c:v libx264 -preset slow -profile:v high \ -crf 28 \ -tune film \ -g 120 -keyint_min 120 -sc_threshold 0 \ -maxrate 6M -bufsize 12M \ -pix_fmt yuv420p \ -r 60000/1001 \ -vf "scale=1280:-2:flags=lanczos" \ -c:a aac -b:a 64k -ac 1 \ -map_metadata -1 \ -movflags +faststart \ -y -loglevel error \ "$mobile_out" # Petit bilan de taille pour confirmer l'économie if [ -f "$desktop_out" ]; then d_size=$(du -h "$desktop_out" | cut -f1) m_size=$(du -h "$mobile_out" | cut -f1) echo " ✅ Desktop : $d_size (${base}.mp4)" echo " ✅ Mobile : $m_size (${base}_mobile.mp4)" fi echo "---------------------------------------------------" done shopt -u nocaseglob echo "✅ TOUTES LES VIDÉOS SONT PRÊTES."