update compression parameters and resolution choices

This commit is contained in:
2026-02-12 21:40:37 +01:00
parent 28eaf9feaa
commit e4baa929f2
2 changed files with 148 additions and 56 deletions

View File

@@ -1,63 +1,83 @@
#!/bin/bash
shopt -s nocaseglob
# --- 1. CONFIGURATION DU RÉPERTOIRE ---
# On récupère l'argument 1 s'il existe, sinon on reste sur le répertoire courant
# --- 1. CONFIGURATION ---
# Utilise l'argument 1 comme dossier racine, ou le dossier courant par défaut
BASE_DIR="${1:-.}"
# Définition des dossiers par rapport à la base
SOURCE_DIR="$BASE_DIR/rushs"
DEST_DIR="$BASE_DIR/videos"
# Vérification que le dossier source existe
# Vérification du dossier source
if [ ! -d "$SOURCE_DIR" ]; then
echo "❌ Erreur : Le dossier source $SOURCE_DIR n'existe pas."
echo "❌ Erreur : Dossier source $SOURCE_DIR introuvable."
exit 1
fi
# Création du dossier de destination s'il n'existe pas
# Création du dossier de destination
mkdir -p "$DEST_DIR"
echo "--- DÉBUT DE LA COMPRESSION ---"
echo "📂 Répertoire racine : $BASE_DIR"
echo "📥 Source : $SOURCE_DIR"
echo "--- COMPRESSION ROAD-TRIP (CPU OPTIMISÉ) ---"
echo "📂 Source : $SOURCE_DIR"
echo "📤 Destination : $DEST_DIR"
# 2. BOUCLE DE COMPRESSION
# 2. BOUCLE DE TRAITEMENT
for f in "$SOURCE_DIR"/*.{mp4,mov}; do
# Vérification si des fichiers existent
[ -e "$f" ] || continue
# Récupération du nom de fichier sans le chemin
# Extraction du nom de base (ex: GH011182.mp4 -> GH011182)
filename=$(basename "$f")
echo "🎬 Compression de : $filename ..."
base="${filename%.*}"
# Compression avec accélération matérielle Mac (videotoolbox)
ffmpeg -i "$f" \
-tag:v hvc1 \
-c:v hevc_videotoolbox \
-b:v 10000k \
-g 60 \
-bf 2 \
-profile:v main \
-pix_fmt yuv420p \
-r 60 \
-c:a aac \
-b:a 128k \
-movflags +faststart \
"$DEST_DIR/$filename" \
-y -loglevel error
# Conventions de nommage validées
desktop_out="$DEST_DIR/${base}.mp4"
mobile_out="$DEST_DIR/${base}_mobile.mp4"
# Comparaison de taille
if [ -f "$DEST_DIR/$filename" ]; then
orig_size=$(du -h "$f" | cut -f1)
new_size=$(du -h "$DEST_DIR/$filename" | cut -f1)
echo "✅ Terminé : $filename ($orig_size -> $new_size)"
else
echo "⚠️ Erreur lors de la compression de $filename"
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 "--- OPÉRATION TERMINÉE ---"
echo "✅ TOUTES LES VIDÉOS SONT PRÊTES."