#1 Le 23/03/2008, à 08:47
- david breizh
[résolu] script zenity début, mais léger problème --progress
bonjour à tous.
voilà j'essai de faire un simple script zenity, il marche sauf la barre de progression qui n'évolue pas .
j'ai regardé sur le forum mais la plupart des réponses ne marchaient pas ou n'étais pas ce que je voulais.
moi j'ai juste une boucle for et je veut voir la progression soit avec la progression de ffmpeg sur le fichier (je sais pas si c'est possible?), soit avec le nombre de fichiers.
je poste mon script, si quelqu'un pouvait me donner un petit coup de pouce.
#!/bin/sh
# AUTHOR: poupouneroot ( ubuntu fr )
# DATE: 23/03/08
# VERSION: 0.1
# LICENSE: GPL
# REQUIRES: ffmpeg, zenity
# NAME: flv to mp3
# DESCRIPTION: utilitaire pour convertir les flv en mp3
# Tester si un fichier a ete selectionne
if [ $# -eq 0 ]; then
zenity --error --title="Erreur" --text="Vous devez choisir au moins un fichier pour lancer la conversion"
exit 1
fi
LISTE="$*"
QUANTITE=`echo $LISTE | wc -w`
COMPTEUR= 0
for A in $LISTE
do
ffmpeg -i "$A" -ab 128 "$A".mp3
COMPTEUR= $((COMPTEUR + 100))
echo $((COMPTEUR / QUANTITE ))
done | zenity --progress
exit 0
edit: voilà l'erreur que j'ai dans mon terminal :
./flv-to-mp3: 28: arith: syntax error: "COMPTEUR + 100"
Dernière modification par david breizh (Le 23/03/2008, à 18:44)
ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!
Hors ligne
#2 Le 23/03/2008, à 10:06
- Quid
Re : [résolu] script zenity début, mais léger problème --progress
Je n'ai pas testé ton script mais devant tous les = il faut que tu enlèves le caractère espace.
Hors ligne
#3 Le 23/03/2008, à 15:13
- Alain.g
Re : [résolu] script zenity début, mais léger problème --progress
la progression soit avec la progression de ffmpeg sur le fichier (je sais pas si c'est possible?)
Oui c'est possible, mais ffmpeg n'affiche pas la progression, en revanche on peut se servir des infos "frame" ou "time" : du moment qu'on connait le nombre total de trame ou seconde (ou peut le connaitre entre autre avec mplayer), on peut calculer le pourcentage.
exemple utilisant mplayer et gawk :
duree=`mplayer -identify -vo null -ao null -frames 0 "in.flv" 2>/dev/null | sed -ne '/^ID_LENGTH/s/.*=\([0-9]*\).*/\1/p'`
ffmpeg -y -i "in.flv" -acodec mp3 -ab 128k "out.mp3" 2>&1 | gawk -vRS='\r' '$1 ~ /frame|size/ {gsub(/.*time=/,""); print $1*100/'$duree'; fflush();}' | zenity --progress --auto-close
Testé rapidement mais ça a l'air de fonctionner.
Concernant ton erreur.. je te conseille de passer en bash, ça sera plus confortable (#!/bin/bash à la place de #!/bin/sh).
Une fois passé en bash et enlevé les espaces après les =, tu ne devrais plus avoir d'erreur (il aurait fallu mettre "$(($compteur…" sinon).
Mais il y a d'autres corrections à apporter, notamment pour gérer correctement les espaces blancs.
en bash, version simple, cela donnerait :
#!/bin/bash
QUANTITE="${#@}"
COMPTEUR=0
for A in "$@"
do
ffmpeg -i "$A" -acodec mp3 -ab 128k "${A%.*}".mp3
((COMPTEUR ++))
echo $((COMPTEUR*100/QUANTITE))
done | zenity --progress --auto-close
exit 0
et en affichant la barre l'encodage de ffmpeg ( utilisation de gawk et mplayer, à installer):
#!/bin/bash
QUANTITE="${#@}"
COMPTEUR=0
for A in "$@"
do
((COMPTEUR ++))
duree=`mplayer -identify -vo null -ao null -frames 0 "$A" 2>/dev/null | sed -ne '/^ID_LENGTH/s/.*=\([0-9]*\).*/\1/p'`
ffmpeg -y -i "$A" -acodec mp3 -ab 128k "${A%.*}.mp3" 2>&1 | gawk -vRS='\r' '$1 ~ /frame|size/ {gsub(/.*time=/,""); pourcent=$1*100/'$duree' ; if ( pourcent>99 && '$COMPTEUR'!='$QUANTITE' ) pourcent=99 ; print "#['$COMPTEUR'/'$QUANTITE'] Conversion du fichier : '"$A"'\n" pourcent; fflush();}'
done | zenity --progress --auto-close
exit 0
Remarque non lié à la programmation : les flv contiennent quasiment tous un flux audio MP3. Ça n'a donc pas beaucoup de sens de vouloir convertir en mp3 avec ffmpeg, il vaut mieux utiliser mplayer avec l'option -dumpaudio : plus rapide et aucune perte de qualité ni augmentation inutile du poids du fichier !
Dernière modification par Alain.g (Le 23/03/2008, à 15:18)
Xubuntu Karmic !
Hors ligne
#4 Le 23/03/2008, à 18:43
- david breizh
Re : [résolu] script zenity début, mais léger problème --progress
merci alain g pour tous c'est renseignement, maintenant je vais aller chercher de la doc sur bash car dans ta première explication j'ai eu mal à la tête au début quand même .
et j'ai modifier le script avec copy pour ffmpeg , et c'est beaucoup plus rapide .
je vais essayer de l'améliorer au fil du temps pour m'entrainer avec bash. et si une fois que j'aurai quelques notions plus approfondies je ferai des scripts pas trop mal et pourrai les poster sur le forum .
voilà et encore merci .
ah ! du fin fond de la bretagne grâce au libre on se sent moins seul!
Vive le libre et toutes les distributions qui m'ont fait découvrir le monde de linux!
Hors ligne