#1 Le 26/12/2007, à 21:25
- The_Doctor
Besoin de programmeurs Bash et zenity
Bonjour à tous , ne connaisant rien en programmation. J'aurais voulu savoir si une à¢me ou des à¢mes charitable aurait pu m'aider pour faire un scrip en bash avec une interface zenity.
Voila la ligne de code que le scrip doit exécuter :
ffmpeg -i input_file.avi -f mp4 -vcodec mpeg4 -maxrate 1000 -b 700 -qmin 3 -qmax 5 -bufsize 4096 -g 300 -acodec aac -ab 192 -s 320x240 -aspect 4:3 output_file.mov
l
Le input_file.avi correspond au fichier à encoder , et le output_file.mov au fichier qui doit être créé.
Il sert à encoder des vidéos pour les iPod.
Il faudrait que à l'exécution du script une feunêtre souvre et propose de sélectionnez le ou les fichiers à encodé, puis le script demande le répertoire de sauvegarde.
Si vous avez des idées ??
Merci
#2 Le 26/12/2007, à 23:47
- WW
Re : Besoin de programmeurs Bash et zenity
Salut,
Développeur débutant, je te propose un script sans interface :
#!/bin/sh
# Script permettant de convertir les vidéos pour le format iPod
if [ $# != 1 ]; then
echo "Usage : iPod <vidéo à modifier>"
echo " iPod <dossier contenant les vidéos à traiter>"
exit 0;
fi
chemin=$PWD/$1 # On sauvegarde le chemin absolu de la vidéo ou du dossier passé en 1er paramètre
# On vérifie que le dossier Vidéos existe
cd /$HOME
Videos="false"
if [ -e Vidéos ]; then
Videos="true"
fi
if [ $splashimages = "false" ]; then
sudo mkdir /$HOME/Vidéos # Sinon on le créé
fi
# ~~~~~~~~~~~~~~~ Traitement ~~~~~~~~~~~~~~~
if [ -d $chemin ]; then # Si le 1er paramètre est un dossier
cd $chemin #On entre dans le dossier des vidéos à traiter
for i in *.avi; do # Pour les vidéos aux différents formats
nom=${1%.avi}
ffmpeg -i "$i" -f mp4 -vcodec mpeg4 -maxrate 1000 -b 700 -qmin 3 -qmax 5 -bufsize 4096 -g 300 -acodec aac -ab 192 -s 320x240 -aspect 4:3 $HOME/Vidéos/"$nom".mov
done
elif [ -f $chemin ]; then # Si le 1er paramètre est une image
ffmpeg -i $chemin -f mp4 -vcodec mpeg4 -maxrate 1000 -b 700 -qmin 3 -qmax 5 -bufsize 4096 -g 300 -acodec aac -ab 192 -s 320x240 -aspect 4:3 $HOME/Vidéos/${1%.avi}.mov
Dis moi si ça te convient et si ça marche (déjà ça serais bien ).
Quand on sait c'est facile, mais qui n'a jamais été débutant.
Hors ligne
#3 Le 27/12/2007, à 00:42
- The_Doctor
Re : Besoin de programmeurs Bash et zenity
Merci pour ce petit script mais il ne marche pas :
alex@alex-desktop:~/Bureau$ ./ipod.sh "/home/alex/System_of_a_down_Chop_Suey.avi"./ipod.sh: line 20: [: = : opérateur unaire attendu
./ipod.sh: line 38: erreur de syntaxe : fin de fichier inattendue
#4 Le 27/12/2007, à 14:11
- UgM
Re : Besoin de programmeurs Bash et zenity
Bonjour,
Voilà un truc super simple :
#! /bin/sh
# Version 0.1
# selection des fichiers à convertir
fichiers=$(zenity --file-selection --title="Selectionner les fichiers à convertir" )
echo $fichiers
ffmpeg -i $fichiers -f mp4 -vcodec mpeg4 -maxrate 1000 -b 700 -qmin 3 -qmax 5 -bufsize 4096 -g 300 -acodec aac -ab 192 -s 320x240 -aspect 4:3 ${fichiers}.mov
Pour le moment, ca marche qu'avec un seul fichier
Il ne faut pas que le nom du fichier contient des espaces aussi
Dernière modification par UgM (Le 27/12/2007, à 14:14)
Hors ligne
#5 Le 27/12/2007, à 14:35
- Aurel34
Re : Besoin de programmeurs Bash et zenity
dans le même esprit ya xdialg:
#!/bin/sh
INPUTFILE=`xdialog --stdout --title "fichier d'origine" --fselect $HOME/ 0 0`
OUTPUTFILE=`xdialog --stdout --title "répertoire final" --dselect $HOME/ 0 0`
ffmpeg -i $INPUTFILE -f mp4 -vcodec mpeg4 -maxrate 1000 -b 700 -qmin 3 -qmax 5 -bufsize 4096 -g 300 -acodec aac -ab 192 -s 320x240 -aspect 4:3 $OUTPUTFILE/out_$INPUTFILE
#6 Le 27/12/2007, à 16:12
- The_Doctor
Re : Besoin de programmeurs Bash et zenity
Le script de Aurel 34 ne marche pas cher moi.
Par contre celui de UgM marche, est il possible de rajouter un fenêtre pendant la conversion qui indique que la conversion à lieux comme dans le Live CD de Ubuntu? (o๠l'on voit un bloc orange se déplacer dans la barre de droite à gauche puis de gauche à droite .) Pour finir y aurait il la possibilité que après avoir sélectionné la vidéo , le script demande si il faut encore en convertir comme dans celui ci qui permet d'intégré des sous titres dans un fichier avi (trouvé sur le forum) :
#!/bin/bash
cd "$HOME" # indiquer ici l'emplacement o๠se trouvent habituellement les vidéos
l=0
while [ $? = 0 ]; do
if vid[$l]=$(zenity \
--file-selection \
--title="Sélectionnez la vidéo "\
)
then
st[$l]=$(zenity \
--file-selection \
--title="Sélectionnez le fichier de sous-titres"\
); [ $? = 1 ] && exit 1
vidout[$l]=$(zenity \
--entry \
--entry-text="`basename "${vid[$l]%.*}.VOSTFR.avi"`" \
--text="Indiquer le nom de la vidéo de sortie" \
--title="Nom de la vidéo à créer" \
--width="500"\
); [ $? = 1 ] && exit 1
else exit 1;
fi
let l++
zenity --question --text="Voulez-vous sélectionner une autre vidéo ?" title="Continuer ?"
done
IFS='
'
m=0
zenity \
--question \
--title="Récapitulatif" \
--text="Vérifiez s'il n'y a pas d'erreur puis validez :\n\n$(for v in ${vid[*]}; do [ $l -gt 1 ] && echo -n "$((m+1))/$l\) "; echo -e "Vidéo source :\t$v\nSous-titres:\t${st[$m]}\nVidéo à créer:\t${v%/*}/${vidout[$m]}\n"; let m++; done)"
[ $? = 1 ] && exit 1
debut="`date +%H:%M:%S`"
m=0
for v in ${vid[*]}; do
mencoder "$v" -sub "${st[$m]}" -o "${v%/*}/${vidout[$m]}" \
-fontconfig \
-font Arial \
-subfont-text-scale 4 \
-subfont-encoding unicode \
-oac copy \
-ovc xvid \
-xvidencopts bitrate=1500 \
2>&1 | awk -vRS="\r" '$1 ~ /Pos/ {gsub(/Pos:/," ");gsub(/%\)/," ");gsub(/ \(/," ");print $3"\n#Position :\\t"$1"\\nTrame :\\t"$2"\\nEffectué :\\t"$3"%\\nVitesse :\\t"$4"\\nReste :\\t"$6"\\nTaille :\\t"$7; fflush();}'|\
zenity --progress --auto-close --title="`[ $l -gt 1 ] && echo $((m+1))/$l` ${vidout[$m]}" --width="250"
let m++
done
fin="`date +%H:%M:%S`"
zenity --info --text="L'opération est terminée!\n\nCommencée à \t$debut\nFinie à \t\t$fin"
exit 0
#7 Le 27/12/2007, à 16:23
- The_Doctor
Re : Besoin de programmeurs Bash et zenity
Ou bien modifier ce script disponible ici :
http://forum.ubuntu-fr.org/viewtopic.php?id=154456
#8 Le 27/12/2007, à 18:27
- UgM
Hors ligne
#9 Le 28/12/2007, à 15:33
- The_Doctor
Re : Besoin de programmeurs Bash et zenity
Voila ce que j'ai pu modifier :
#! /bin/bash
#Script créer par yakusa77 modifier par The_Doctor
#il permet d'encoder tout type de videos (mpg,avi,ogg)
#directement en mov pour votre iPod
#depend de ffmpeg, zenity
#licence GNU/GPL
#############################################################################
########################## fonctions annuler ################################
#############################################################################
function annuler {
if [ "${PIPESTATUS[0]}" != "0" ];
then
exit
fi
}
#############################################################################
##################### Message de Bienvenue ##################################
#############################################################################
zenity --info --text "Bienvenu dans L'encodeur de vidéo pour iPod."
#############################################################################
############################ VARIABLES ######################################
#############################################################################
#Selection du Fichier d'entré
FILE=$(zenity --file-selection --title "choisissez la video à encodé")
annuler
#OPT_ASPECT=$"16:9"(fonction a approfondir)
#confirmation chemin de sortie
sortie=$(zenity --entry --width=650 --title="Encodeur iPod" --text="confirmez ou modifiez le chemin de sortie" --entry-text=""$FILE".mov")
annuler
commande=$"ffmpeg -i $FILE -f mp4 -vcodec mpeg4 -maxrate 1000 -b 700 -qmin 3 -qmax 5 -bufsize 4096 -g 300 -acodec aac -ab 320 -s 320x240 -aspect 4:3 "$FILE".mov"
##############################################################################
########################## lancement de l'encodage ###########################
##############################################################################
$commande 2>&1 | zenity --progress --pulsate --title="Encodeur iPod" --text="Veuillez patientez, Encodage de \n $FILE en cours..." --auto-close
annuler
##############################################################################
########################## Message de fin ####################################
##############################################################################
zenity --info --title "terminé" --text "Vidéo encodée avec succès"
##############################################################################
######################### REMERCIEMENTS ######################################
##############################################################################
zenity --info --text="Merci d'avoir utilisé ce script"
exit