Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 big_smile).


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 wink
Il ne faut pas que le nom du fichier contient des espaces aussi tongue

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

Re : Besoin de programmeurs Bash et zenity

Ok, je regarderai cela ce soir.

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