Aide script shell

bonjour!

alors voila ca fait quelques temps que je me prends la tete pour faire un script shell pour utiliser ffmpeg et ne trouvant pas de reponse qui me convienne avec mon ami google je me permets de faire appel a vous ! lol

en fait je souhaite faire un script shell pour convertir tous les fichiers portant une certaine extension , ex: convertir les fichiers avi d'un repertoire toto en fichier flv
ca peut paraitre bete comme ca mais je suis incapable de faire un truc qui fonctionne :/

j'avais tenté un truc comme ca , sans succes lol (ok les scripts shell c'est pas mon fort)

[code]
#!/bin/sh

for element in *.avi

ffmpeg -i $element -s 320x240 -acodec mp3 -ar 11025 -aspect 4:3 -pass 1 -b 500k -r 30 -f flv mavideo.flv

done
[/code]

pour l'exemple j'ai mis mavideos.flv comme fichier de sortie mais l'idéal serait un nom genere pour ne pas ecraser un fichier existant ( timestamp par ex )

quelqu'un aurait une idée ?

merci !
Configuration: ubuntu 7.04 serveur

3 réponses

  1. merci a tous !
    le probleme est qu apparement le:

    for element in *.avi
    ne recherche pas tous les fichiers ayant cet extension .avi, si je fais un echo la boucle me sort juste un

    " *.avi : Aucun fichier ou répertoire de ce type"

    , alors que dans le dossier specifié il y a bien des fichiers de cette extension la
    1. Modérateur
      c'est que ton script ne doit pas s'executer dans le répertoire qui contient les fichier

      rajoute un cd avant la boucle
  2. Modérateur
    Salut,

    à toi d'adapter
    lami20j@debian:~$ for i in *.avi;do echo ${i%%.*}_new.flv;done
    a_new.flv
    b_new.flv
    
    1. Modérateur
      salut,

      il manque le do :

      for element in *.avi
      do
      ffmpeg -i $element ...
      done

      et en fichier de sortie tu peux mettre $element.flv

      cdt
      1. Modérateur
        $element.flv pas terrible car = fichier.avi.flv

        for element in *.avi
        do
        sortie=basename $element .avi
        ffmpeg -i $element ... $sortie.flv
        done