Pages : 1
#1 Le 08/03/2008, à 20:36
- paul2nice
[resolu] script mencoder / ffmpeg
Bonjour,
Je suis super débutant en linux je cherche à créer un script dont voici le contenu :
#!/bin/sh
# Conversion des videos en .flv
for i in `find . -iname '*.mov'` `find . -iname '*.avi'` `find . -iname '*.asf'`;
do
mencoder $i -forceidx -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames -of lavf -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc -lavcopts vcodec=flv:vbitrate=250:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -vf scale=360:240 -o $i.flv;
done
# FONCTIONNE
# Extraction des images aperçu dans les videos .flv
for i in `find . -iname '*.flv'`;
do
ffmpeg -y -i $i -vcodec mjpeg -vframes 10 -an -f rawvideo TN-$i.jpg;
done
# NE FONCTIONNE PAS
Je suis bloqué à la deuxième boucle, ça me dit
Could not open 'TN-./crossbretagne/100_4067.MOV.flv.jpg' et idem pour les autres images des autres répertoires...
Merci pour votre aide ;-)
Dernière modification par paul2nice (Le 27/03/2008, à 13:23)
Hors ligne
#2 Le 08/03/2008, à 20:42
- jean bono
Re : [resolu] script mencoder / ffmpeg
je ne m'y connais vraiment pas mais bon je vois un fichier .MOV.flv.jpg
donc l'erreur vient de l'extension
quand tu convertis en flv les fichiers sont lisibles?
je pense qu'il doit falloir renommer a un moment ou alors rajouter une option dans ffmpeg
je ne suis pas seulement un con...
Génération-linux
Une aide personnalisée avec les Parrains Linux
Hors ligne
#3 Le 08/03/2008, à 20:53
- paul2nice
Re : [resolu] script mencoder / ffmpeg
oui effectivement ça me génère un TN-image.MOV.flv.jpg, va falloir que je renommes tout ça par la suite mais je m'y met petit à petit, si tu as des propositions elles sont les bienvenues !
Avec la commande
for i in *.flv;
do
ffmpeg -y -i $i -vcodec mjpeg -vframes 10 -an -f rawvideo TN-$i.jpg;
done
ça passe
seulement j'execute le script dans le répertoire ou il y a les videos, j'aimerais l'appliquer pour les répertoires et sous répertoires.
Sinon oui, mes videos fonctionnent parfaitement.
Dernière modification par paul2nice (Le 08/03/2008, à 20:54)
Hors ligne
#4 Le 08/03/2008, à 20:56
- jean bono
Re : [resolu] script mencoder / ffmpeg
je crois que certaines commandes prennent l'argument -R comme recursif pour gerer les sous dossier
ca pourrait marcher
je ne suis pas seulement un con...
Génération-linux
Une aide personnalisée avec les Parrains Linux
Hors ligne
#5 Le 08/03/2008, à 21:30
- paul2nice
Re : [resolu] script mencoder / ffmpeg
J'ai essayé avec un ls -R mais je n'arrive pas à le coupler avec le *.jpg
Autrement, je ne comprends pas pourquoi la commande
for i in `find . -iname '*.flv'`;
do
ffmpeg -y -i $i -vcodec mjpeg -vframes 10 -an -f rawvideo TN-$i.jpg;
done
fonctionne partiellement car mes fichiers jpg sont parcourus mais pas traités...
Hors ligne
#6 Le 08/03/2008, à 22:42
- paul2nice
Re : [resolu] script mencoder / ffmpeg
J'ai suivi tes conseils, j'ai renommé mes fichiers pour avoir une seule extension claire et net.
Malheureusement ça n'y fait rien...
Dernière modification par paul2nice (Le 08/03/2008, à 22:43)
Hors ligne
#7 Le 08/03/2008, à 22:57
- paul2nice
Re : [resolu] script mencoder / ffmpeg
Bon bah j'ai trouvé là ou ça clochait...
la commande suivante
for i in `find . -iname '*.flv'`;
do
ffmpeg -y -i $i -vcodec mjpeg -vframes 10 -an -f rawvideo TN-$i.jpg;
done
ne fonctionnait pas ça me disait
Could not open 'TN-./crossbretagne/100_4067.MOV.flv.jpg'
En enlevant le préfixe TN- dans mon code finalement c'est passé.
Du coup je me tape un renamage pour réintégrer le préfixe par la suite.
Hors ligne
#8 Le 09/03/2008, à 00:00
- jean bono
Re : [resolu] script mencoder / ffmpeg
bien joue
je ne suis pas seulement un con...
Génération-linux
Une aide personnalisée avec les Parrains Linux
Hors ligne
#9 Le 09/03/2008, à 01:28
- paul2nice
Re : [resolu] script mencoder / ffmpeg
Bon bah au final je reste bloqué pour renommer les fichiers .jpg en leur mettant un préfixe TN- pour les intégrer dans ma gallerie.
# Ajout d'un suffixe sur les images jpg
for i in `find . -iname '*.jpg'`;
do
mv $i TN-$i;
done
visiblement c'est mon find .-iname qui pose problème.
Je galère grave dans mon script pour parcourir mes fichiers.
Hors ligne
#10 Le 10/03/2008, à 01:43
- Saito
Re : [resolu] script mencoder / ffmpeg
Bonsoir,
ton problème vient du fait que $i contient le chemin complet vers les fichiers comme le montre ton erreur
Could not open 'TN-./crossbretagne/100_4067.MOV.flv.jpg'
^ $i ^
Pour ne pas avoir à renommer par la suite commme tu le fais, tu peux modifier
for i in `find . -iname '*.flv'`;
do
ffmpeg -y -i $i -vcodec mjpeg -vframes 10 -an -f rawvideo TN-$i.jpg;
done
de cette façon:
for i in `find . -iname '*.flv'`;
do
# on vérifie que $i contient au moins un slash, pour récupérer le chemin du fichier
[[ $i == */* ]] && chemin=${i%/*}/ || chemin=
# on récupère le nom du fichier
nom=${i##*/}
# on retire l'extension de $nom
ffmpeg -y -i $i -vcodec mjpeg -vframes 10 -an -f rawvideo ${chemin}TN-${nom%.*}.jpg;
done
Ainsi, les fichiers jpg seront créés dans le même répertoire que le fichier flv, et seront nommés de la même façon ( machin.jpg pour machin.flv).
Tu peux, pour vérifier, placer la commande echo devant ffmpeg ( echo ffmpeg -y ...) pour voir ce que donne la ligne et si cela te convient.
Dernière modification par Saito (Le 10/03/2008, à 01:50)
Aku-Soku-Zan_Shinsengumi
Hors ligne
#11 Le 10/03/2008, à 13:03
- paul2nice
Re : [resolu] script mencoder / ffmpeg
merci pour ton aide je test ce soir dés que je rentre ;-)
Hors ligne
#12 Le 10/03/2008, à 13:13
- Sciensous
Re : [resolu] script mencoder / ffmpeg
oui le pb vient que le nom est complet (avec le . du repertoire courant)
pour faire simple, tu peux récuperer que le nm du fichier par basename <nom du fichier>
#13 Le 11/03/2008, à 19:54
- paul2nice
Re : [resolu] script mencoder / ffmpeg
Nickel ça fonctionne parfaitement,
par contre,
tu peux récuperer que le nm du fichier par basename <nom du fichier>
Je n'ai pas compris l'histoire de basename ??
Merci à vous !
Hors ligne
#14 Le 12/03/2008, à 00:32
- Saito
Re : [resolu] script mencoder / ffmpeg
En fait tu peux utiliser
nom=`basename $i`
en lieu et place de l'expression:
nom=${i##*/}
que j'utilise plus haut pour récupérer uniquement le nom de fichier dans une chaîne de caractères.
La diffèrence étant que tu utilises un programme externe, qui n'est pas forcément toujours présent plutôt qu'un mécanisme propre au shell ( l'expansion de paramètre dans notre cas).
Sinon n'oublie de regarder les pages de manuel, man basename et man bash qui est trés riche.
Dernière modification par Saito (Le 12/03/2008, à 00:40)
Aku-Soku-Zan_Shinsengumi
Hors ligne
#15 Le 13/03/2008, à 23:22
- paul2nice
Re : [resolu] script mencoder / ffmpeg
merci pour les infos !
Hors ligne