Programmation : FFMPEG
Codes personnels pour le son et l'image
Scripts basés sur FFMPEG. Créés pour tourner soit sur Windows soit sous Linux (précisé).
Paramètres communs à tous les scripts :
[ffmpeg] -y -hide_banner -loglevel error -stats -err_detect ignore_err [-i ...]
Audio
AAC stéréo
Force l'audio en AAC stéréo.
#Windows batch, appel : script.bat input.mp4
ffmpeg.exe -i %1 -c:v copy -c:a aac -ac 2 %1.mp4
Trim musique
Supprime les blancs en début et fin de musique.
#Windows batch, appel : script.bat input.mp3
ffmpeg.exe-i %1 -af silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-40dB %1_temp.mp3
Vidéo
Pixels carrés
Force la vidéo avec les pixels carrés.
#Windows batch, appel : script.bat input.mp4
ffmpeg.exe -i %1 -vf scale=iw:ceil((ih/sar)/2)*2,setsar=1 -crf 20 -c:v libx264 -c:a copy %1.mp4
Rescale custom
Script pour remettre une vidéo dans les bonnes proportions
#Windows batch, appel : script.bat input.mp4 4/3
ffmpeg.exe -i %1 -crf 20 -vf scale=iw:ceil(iw*(1/(%2))/2)*2,setdar=%2 -c:v libx264 -c:a copy %1.mp4
Crop letterbox
Script pour supprimer les bandes noires d'une vidéo. Je n'ai pas trouvé d'équivalent pour Windows (commande awk)
#Linux batch, appel : script.sh input.mp4 [ -e "$1" ] && ffmpeg -i "$1" -vf $(ffmpeg -ss 0 -i "$1" -t 1:00 -vsync vfr -vf fps=1/2,cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | tr ' ' '\n' | sort | uniq -c | sort -n | tail -1 | awk '{ print $NF }') -ss 0 -t 0:01 -threads 5 -preset ultrafast -strict -2 "$1_temp.mp4" echo ------------------------------- echo Comparaison des hauteurs sur 0:01 [ "$1" ] echo ------------------------------- [ -e "$1" ] && ffmpeg -ss 0 -t 0:01 -i "$1" -i "$1_temp.mp4" -filter_complex "[0:v][1:v]hstack=inputs=2[v];[0:a][1:a]amerge=inputs=2[a]" -map "[v]" -map "[a]" -ac 2 "$1_comp.mp4" if [ ! -s "$1_comp.mp4" ] then echo ------------------------------- echo Crop [ "$1" ] echo ------------------------------- rm "$1_temp.mp4" && \ ffmpeg -i "$1" -vf $(ffmpeg -ss 0 -i "$1" -t 1:00 -vsync vfr -vf fps=1/2,cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | tr ' ' '\n' | sort | uniq -c | sort -n | tail -1 | awk '{ print $NF }') -pix_fmt yuv420p -movflags +faststart -threads 5 -preset ultrafast -strict -2 "$1_temp.mp4" && \ ffmpeg -i "$1_temp.mp4" -threads 5 "$1" else echo ------------------------------- echo Pas crop : on garde [ "$1" ] echo ------------------------------- touch "$1" fi