Salut à tous,
Ce script permet d'extraire le son des vidéos. Les formats supportés par défaut sont :
avi, divx, xvid, mpg, dat, ogm, flv, mov. Mais tous les formats supportés par [doc]ffmpeg[/doc] peuvent l'être pour cela éditer la listeFormats du script. Les formats de sortie sont
wav, ogg et mp3. Le son est encodé en Variable Bitrate, le choix de la qualité est proposé. Le script possède une interface graphique.
Ce script nécessite [doc]ffmpeg[/doc], lame et zenity. ([url=apt://ffmpeg,lame,zenity]Les installer en un clic[/url])
Il est à sauvegarder sous
~/.gnome2/nautilus-scripts/ avec les
droits d'exécution.
Par exemple si vous créez le fichier eXson sur le bureau :
mv ~/Desktop/eXson ~/.gnome2/nautilus-scripts/
chmod 755 ~/.gnome2/nautilus-scripts/eXson
#!/bin/sh
# Programmeur : WW
# 20/08/08
# Script permettant d'extraire le son d'une vidéo
#------- Déclaration des variables -------
listeFormats="*.avi *.divx *.xvid *.mpg *.dat *.ogm *.flv *.mov *.AVI *.DIVX *.XVID *.MPG *.DAT *.OGM *.FLV *.MOV" # Représente la liste des formats des vidéos à traiter dans le dossier
#------- Déclaration des fonctions -------
# Fonction qui traite les vidéos contenus dans un dossier
traitementDossier() {
nombre=0
for i in $listeFormats; do # On compte les vidéos
if [ "${i%.*}" != "*" ]; then
nombre=$(($nombre+1))
fi
done
n=1
(for i in $listeFormats; do
if [ "${i%.*}" != "*" ]; then # Permet d'éviter un traitement inutile quand aucun fichier n'est trouvé pour un format sans ce test *.ogm (ou autres) serai considéré comme un fichier lorsqu'il n'y a pas de fichier .ogm (ou autres) dans le dossier
echo "# "$i;
progression=$((100*n/nombre));
echo $progression;
n=$((n+1));
traitementFichier "$i"
fi
done;)|zenity --height="350" --width="400" --progress --percentage=0;
}
# Fonction qui traite une vidéo à passer en paramètre
traitementFichier() {
if [ -e "${1%.*}".$extension ]; then # Si le fichier existe déjà
creation="faux" # On n'écrase pas
zenity --question --title="~ Ecraser ~" --text="Le fichier ${1%.*}.$extension existe déjà. Voulez-vous l'écraser ?" # On pose la question
if [ $? = "0" ]; then # Si la réponse est oui
creation="vrai" # On écrase
fi
else
creation="vrai" # Le fichier n'existe pas on veux forcément le créer
fi
if [ "$extension" != "wav" -a -e "${1%.*}".wav ]; then
zenity --question --title="~ Ecraser ~" --text="Le fichier ${1%.*}.wav existe déjà. Voulez-vous l'écraser car la compression en $extension se fera à partir du fichier transitoire wav ?" # idem avec le wav
if [ $? = "0" ]; then
creation="vrai"
else
creation="faux" # Problème le wav existe déjà on ne l'écrase pas
fi
fi
if [ "$creation" = "vrai" ]; then
ffmpeg -y -i "$1" -vn -f wav "${1%.*}".wav 2>&1 | zenity --progress --pulsate --title="Extraction en cours" --text="Vidéo : $1" --auto-close --auto-kill;
if [ "$extension" != "wav" ]; then # On compresse
lame -V$qualitelame "${1%.*}".wav "${1%.*}".$extension 2>&1 | zenity --progress --pulsate --title="Compression en cours" --text="Vidéo : $1" --auto-close --auto-kill;
rm "${1%.*}".wav # Dans ce cas le wav n'est que transitoire
fi
fi
}
# Fonction d'annulation requière un paramètre
annuler() {
if [ "$1" = "" ]; then
exit 0;
fi
}
#------- Fin des définitions de fonctions -------
# Choix de l'extension
extension=$(zenity --list --column="Choix" --column=" " --height="250" --width="300" --radiolist --text="Quel format voulez-vous pour le(s) fichier(s) de sortie ?" --title="Extensions" false "mp3" true "ogg" false "wav")
annuler $extension
if [ "$extension" != "wav" ]; then
# Choix de la qualité (Variable BitRate)
qualite=$(zenity --scale --text="Choix de la qualité ?" --value=4 --max-value="9")
annuler $qualite
qualitelame=`expr 9 - $qualite`
fi
while [ $# -gt 0 ]; do
if [ -d "$1" ]; then
cd "$1" #On entre dans le dossier des vidéos à traiter
traitementDossier
else
traitementFichier "$1"
fi
shift
done
Cette version nécessite lame car le [doc]ffmpeg[/doc] des dépôts Ubuntu ne gère pas le mp3 pour des restrictions légales.
Je mettrerais une autre version utilisant le [doc]ffmpeg[/doc] des dépôts
Medibuntu qui se passera donc de lame.