Pages : 1
#1 Le 05/03/2008, à 15:36
- Maxouille
un p'ti scripts svp ^^
bonjour,
j'aimerais savoir si qqn pourrais gentillement me creer un script semblable à celui ci-dessous mais pour encoder tout un répertoire de video et non pas vidéo par vidéo
mencoder mavideo.avi -o mavideo.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames
Merci
source: ici
Hors ligne
#2 Le 05/03/2008, à 16:24
- WW
Re : un p'ti scripts svp ^^
Salut,
#!/bin/sh
# Script permettant d'encodage de dossier entier
menu=$(zenity --list --column="Choix" --column=" " --height="250" --width="350" --radiolist --text="Que voulez-vous faire ??\nEncoder :" --title="Menu" false "Vidéos" false "Dossiers" false "Vidéos provenant de dossiers différents")
if [ "$menu" = "" ]; then
exit 0;
fi
if [ "$menu" = "Dossiers" ]; then # Traite n dossier(s)
selection=$(zenity --file-selection --multiple --directory --title="Sélection de dossier") # Sélection de dossier
if [ "$selection" = "" ]; then # L'utilisateur à cliquer sur annuler
exit 0;
else
fin=`expr "$selection" : '.*|\(.*\)'`
if [ "$fin" = "" ]; then # Permet d'éviter que la boucle while soit sans fin quand l'utilisateur sélectionne qu'un seul dossier
fin=$selection
fi
# La boucle while traite tout les dossiers sélectionnés sauf le dernier
while [ "$selection" != "$fin" ] ; do
courant=`expr "$selection" : '\([^|]*|\)'`
selection=${selection#$courant}
courant=${courant%|}
cd "$courant"
for i in *.avi *.AVI; do # Pour les vidéos au différents formats #@
mencoder "$i" -o "$i".flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames
done
done
# On le traire donc à la fin de la boucle while
cd "$fin"
for i in *.avi *.AVI; do # Pour les vidéos au différents formats #@
mencoder "$i" -o "$i".flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames
done
fi
zenity --info --text="L'encodage fini" --title="Merci !!!"
elif [ "$menu" = "Vidéos" -o "$menu" = "Vidéos provenant de dossiers différents" ]; then # Traite n vidéo(s)
if [ "$menu" = "Vidéos provenant de dossiers différents" ]; then
zenity --info --text="Une fenêtre de sélection va apparaître, sélectionner alors les Vidéos de votre premier dossier et valider.\n\nUne nouvelle fenêtre s'ouvrira alors pour la sélection des Vidéos du dossier suivant.\n\nUne fois que vous avez sélectionné et validé toutes les Vidéos désirées, cliquer sur Annuler." --title=">Utilisation<"
fi
selection=$(zenity --file-selection --multiple --title="Sélection de vidéo") # Sélection de vidéo
if [ "$menu" = "Vidéos provenant de dossiers différents" -a "$selection" != "" ]; then
while [ "$selection" != "" ]; do
multirep=$multirep"|$selection"
selection=$(zenity --file-selection --multiple --title="Sélection de vidéo")
done
elif [ "$selection" = "" ]; then
exit 0;
fi
if [ "$menu" = "Vidéos provenant de dossiers différents" ]; then
selection=${multirep#|}
fi
fin=`expr "$selection" : '.*|\(.*\)'`
if [ "$fin" = "" ]; then # Permet d'éviter que la boucle while soit sans fin quand l'utilisateur sélectionne qu'un seul fichier
fin=$selection
fi
while [ "$selection" != "$fin" ]; do
courant=`expr "$selection" : '\([^|]*|\)'`
selection=${selection#$courant}
courant=${courant%|}
mencoder "$i" -o "$i".flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames
done
mencoder "$i" -o "$i".flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames
zenity --info --text="L'encodage est finie." --title="Merci !!!"
fi
Avec ça tu dois pouvoir encoder un dossier en entier mais aussi plusieurs dossiers d'un coup (à condition qu'il soit dans le même répertoire/dossier père) en maintenant la touche Ctrl lors de tes clics souris.
Remarque : il n'y a pas de barre de progression juste un message lorsque c'est fini. Je verrais plus tard.
Dernière modification par WW (Le 05/03/2008, à 16:30)
Quand on sait c'est facile, mais qui n'a jamais été débutant.
Hors ligne
#3 Le 05/03/2008, à 16:35
- Maxouille
Re : un p'ti scripts svp ^^
Ca a l'air de marcher, jte tiens au courant
Merci beaucoup
Remarque, ça aurait pu etre bien de rajouter le nom de la video qui est en train d'étre encodé
Dernière modification par Maxouille (Le 05/03/2008, à 16:36)
Hors ligne
#4 Le 08/03/2008, à 11:35
- Maxouille
Re : un p'ti scripts svp ^^
Bon comme je t'avais dit je te tiens au courant. Ton script a bien marché mais j'ai quelques problèmes/améliorations que tu pourrais faire
-Certaines videos ont étés ignorés (pourtant ils ont des nom normaux)
-Savoir quel video est en train dêtre encoder en se moment
-Et surtout, quand le fichier .flv existe déjà, qu'il le remplace pas mais l'ignore
Voila
Dis moi les prochaines mises a jours si tu en fait
Merci
Hors ligne
#5 Le 09/03/2008, à 18:54
- WW
Re : un p'ti scripts svp ^^
Salut,
Changelog :
-> Nom de la vidéo encodée avec une pseudo-bar de progression
-> Eviter l'encodage lorsque le fichier .flv existe déjà
-> Nommage vidéo.flv et plus vidéo.avi.flv
-> Clarification du code avec la fonction traitement
Le dernier point va te permettre de modifier très simplement le code si tu veux appliquer un traitement différent.
#!/bin/sh
# Script permettant d'encodage de dossier entier
traitement() {
mencoder "$1" -o "${1%avi}"flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=400:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames 2>&1 | zenity --progress --pulsate --title="Encodage en cours" --text="Vidéo : $1" --auto-close;
}
# Fin des définitions de fonctions
menu=$(zenity --list --column="Choix" --column=" " --height="250" --width="350" --radiolist --text="Que voulez-vous faire ??\nEncoder :" --title="Menu" false "Vidéos" false "Dossiers" false "Vidéos provenant de dossiers différents")
if [ "$menu" = "" ]; then
exit 0;
fi
if [ "$menu" = "Dossiers" ]; then # Traite n dossier(s)
selection=$(zenity --file-selection --multiple --directory --title="Sélection de dossier") # Sélection de dossier
if [ "$selection" = "" ]; then # L'utilisateur à cliquer sur annuler
exit 0;
else
fin=`expr "$selection" : '.*|\(.*\)'`
if [ "$fin" = "" ]; then # Permet d'éviter que la boucle while soit sans fin quand l'utilisateur sélectionne qu'un seul dossier
fin=$selection
fi
# La boucle while traite tout les dossiers sélectionnés sauf le dernier
while [ "$selection" != "$fin" ] ; do
courant=`expr "$selection" : '\([^|]*|\)'`
selection=${selection#$courant}
courant=${courant%|}
cd "$courant"
for i in *.avi *.AVI; do
if [ ! -e "$i".flv ]; then # Permet d'éviter d'écraser les .flv existants
traitement $i
fi
done
done
# On le traire donc à la fin de la boucle while
cd "$fin"
for i in *.avi *.AVI; do
if [ ! -e "$i".flv ]; then # Permet d'éviter d'écraser les .flv existants
traitement $i
fi
done
fi
zenity --info --text="L'encodage fini" --title="Merci !!!"
elif [ "$menu" = "Vidéos" -o "$menu" = "Vidéos provenant de dossiers différents" ]; then # Traite n vidéo(s)
if [ "$menu" = "Vidéos provenant de dossiers différents" ]; then
zenity --info --text="Une fenêtre de sélection va apparaître, sélectionner alors les Vidéos de votre premier dossier et valider.\n\nUne nouvelle fenêtre s'ouvrira alors pour la sélection des Vidéos du dossier suivant.\n\nUne fois que vous avez sélectionné et validé toutes les Vidéos désirées, cliquer sur Annuler." --title=">Utilisation<"
fi
selection=$(zenity --file-selection --multiple --title="Sélection de vidéo") # Sélection de vidéo
if [ "$menu" = "Vidéos provenant de dossiers différents" -a "$selection" != "" ]; then
while [ "$selection" != "" ]; do
multirep=$multirep"|$selection"
selection=$(zenity --file-selection --multiple --title="Sélection de vidéo")
done
elif [ "$selection" = "" ]; then
exit 0;
fi
if [ "$menu" = "Vidéos provenant de dossiers différents" ]; then
selection=${multirep#|}
fi
fin=`expr "$selection" : '.*|\(.*\)'`
if [ "$fin" = "" ]; then # Permet d'éviter que la boucle while soit sans fin quand l'utilisateur sélectionne qu'un seul fichier
fin=$selection
fi
while [ "$selection" != "$fin" ]; do
courant=`expr "$selection" : '\([^|]*|\)'`
selection=${selection#$courant}
courant=${courant%|}
if [ ! -e "$courant".flv ]; then # Permet d'éviter d'écraser les .flv existants
traitement $courant
fi
done
if [ ! -e "$fin".flv ]; then # Permet d'éviter d'écraser les .flv existants
traitement $fin
fi
zenity --info --text="L'encodage est finie." --title="Merci !!!"
fi
En espérant que tout fonctionne .
Quand on sait c'est facile, mais qui n'a jamais été débutant.
Hors ligne
#6 Le 09/03/2008, à 21:46
- Maxouille
Re : un p'ti scripts svp ^^
Ok je testerais un peu plus tard merci
Pourquoi pas faire un logiciel complet ?
edit: c'est pas mal du tout la nouvelle barre par contre on a plus les pourcents (si on lance le script dans un terminal) c'est dommage ...
Dernière modification par Maxouille (Le 09/03/2008, à 21:50)
Hors ligne
#7 Le 13/03/2008, à 21:31
- WW
Re : un p'ti scripts svp ^^
Salut,
Qu'entend par faire un logiciel complet ?? (un .deb de ce script ou plutôt un frontend pour mencoder qui serai bien sûr beaucoup plus long à faire et qui existe déjà).
Pour le frontend, regarde ici.
Pour le problème des %, je les ai justement detournés pour les rediriger et filtrer ça avec zenity.
Quand on sait c'est facile, mais qui n'a jamais été débutant.
Hors ligne
Pages : 1