J’utilise pas mal FFmpeg pour améliorer mes fichiers multimédia, dans ce message je partage les trois scripts que j’utilise le plus (ça finira peut-être sur le wiki à un moment).
Celui-ci sert à ré-encoder une série de vidéos de manière à limiter leur largeur à 1280 pixels tout en réduisant drastiquement leur poids, sans trop dégrader le rendu visuel :
#!/bin/sh
set -o errexit
for media_source in "$@"; do
media_destination="1280/${media_source%.*}.mkv"
mkdir --parents "$(dirname "$media_destination")"
ffmpeg -i "$media_source" \
-map 0:v -map 0:a? -map 0:s? \
-c:a copy -c:s copy \
-c:v libx264 -vf scale=1280:-2 -preset slower -tune film \
"$media_destination"
done
exit 0
Vient ensuite celui-ci, qui normalise le volume audio d’un fichier incluant une (ou des) piste audio et réduit au besoin de nombre de canaux audio à 2 :
#!/bin/sh
set -o errexit
mkdir --parents 'normalized'
for input_file in "$@"; do
ffmpeg-normalize \
--verbose --progress \
--audio-codec libopus --extra-output-options='-ac 2' \
--keep-loudness-range-target \
"$input_file"
done
exit 0
Et pour finir celui-ci est assez similaire au précédent, mais avec cette fois-ci une limitation à un seul canal (j’utilise ça surtout pour les podcasts et émissions de radio) :
#!/bin/sh
set -o errexit
mkdir --parents 'normalized'
for input_file in "$@"; do
ffmpeg-normalize \
--verbose --progress \
--audio-codec libopus --extra-output-options='-ac 1' --sample-rate 48000 --dual-mono \
"$input_file"
done
exit 0
---
Ce script n’est pas basé sur ffmpeg mais sur ffprobe. Il permet de récupérer le bitrate d’un fichier multimédia donné :
#!/bin/sh
FILE="$1"
BITRATE=$(ffprobe -hide_banner "$FILE" 2>&1 | sed --silent 's;.*bitrate: \([0-9]\+ kb/s\);\1;p')
printf '%s - %s\n' "$BITRATE" "$FILE"
exit 0
Jouer sous Debian ? Facile !
Ceterum censeo Barum esse delendam