Forum Programmation.shell Sélection de fichiers pour une commande mencoder

Posté par (page perso) .
Tags :
2
15
juin
2011

Bonjour

Je souhaite faire un film a partir de photos (fichiers jpg). Pour cela j'utilise la commande :

mencoder "mf://*.jpg" -mf type=jpg:fps=25 -ovc lavc -o output.avi

Mes fichiers proviennent d'une webcam qui prend des photos toutes les 5 minutes et sont nommés de cette façon : 2011-06-15_10.20.01.jpg

Au lieu de prendre toutes les photos j'aimerais ne sélectionner que les photos prises entre 9h et 18h. Je suppose que (grâce aux regex ou autre) ceci est possible mais je n'y arrive pas.

mencoder "mf://*_{???}.*.jpg" -mf type=jpg:fps=25 -ovc lavc -o output.avi

Quelqu'un saurait par quoi je doit remplacer {???} ? Quelqu'un aurait une autre solution ?

  • # Faut coder pour toi .... rahhh lala....

    Posté par (page perso) . Évalué à 4.

    Et comme je suis de bonne humeur ce matin :

    for data in `ls -l --time-style=+%H | awk '{print $6"#"$7}'`; 
    do 
        TIME=`echo $data | cut -d '#' -f 1`
        FILE=`echo $data | cut -d '#' -f 2`
        if [ $TIME -gt 09 ] && [ $TIME -lt 18 ]; then 
            mv $FILE mon_repertoire_de_tri
        fi 
    done
    

    Et après tu lance ta moulinette de concaténation et création de film sur le répertoire trié...

    Bon les puriste vont dire "Bouuuh c'est cochon tu aurais pu faire un script awk plutôt que de coller un séparateur et découper derrière"....
    Oui mais bon, ma bonne humeur ne va pas jusque là !

    Fuse : j'en Use et Abuse !

  • # man bash ou man sh

    Posté par . Évalué à 3.

    facile pour 10h-18h ca s'ecrit :

    mf://*_1[0-8]*.jpg

    par contre pour ne prendre que 09h en plus de 10h-18h ca devient plus complexe

    du coup j'utilise un outil txt2regex
    qui me demande à quoi ressemble ma chaine de caractere et qui ecrit la regexp correspondante

    reste à savoir s'il peut calculer celle là pour toi

    • [^] # Re: man bash ou man sh

      Posté par (page perso) . Évalué à 2.

      Rahhh je suis une buse j'avais lu trop vite et pas noté que le nom des fichiers contenaient l'horodatage..... Du coup y a rien à coder, Regex effectivement, je plussois...

      Fuse : j'en Use et Abuse !

    • [^] # Re: man bash ou man sh

      Posté par (page perso) . Évalué à 1.

      Bonne idée pour ne sélectionner qu'à partir de 10h en effet, merci c'est déjà une bonne piste. Et s'il y avait un moyen de faire : "0[8-9] ou 1[0-8]" c'est possible ça ?

      • [^] # Re: man bash ou man sh

        Posté par (page perso) . Évalué à 1.

        apparemment (0[8-9]|1[0-8]) ne fonctionne pas

        • [^] # Re: man bash ou man sh

          Posté par . Évalué à 2.

          En mettant l'un après l'autre sur la ligne? :
          mencoder mf://*_0[8-9]*.jpg mf://*_1[0-8]*.jpg xxxx...
          Enfin je vois dans le message original des guillemets, apparemment c'est mencoder qui fait le globbing des regexps.

  • # find

    Posté par (page perso) . Évalué à 3.

    En principe tu peux utiliser find (ou ls+grep mais c'est moins pratique).

    Quelque chose comme:

    mencoder $(find -iname '*_*0[8-9].jpg' -o -iname '*_*1[0-8].jpg' -print) ...
    

    Je ne sais toujours pas me passer du -o avec find. genre:
    '*_*\(0[8-9]|1[0-8]\).jpg'
    
  • # Solution

    Posté par (page perso) . Évalué à 1.

    Un grand merci à Postmortem qui m'a donné la solution ici en se basant sur http://www.mplayerhq.hu/DOCS/HTML/fr/menc-feat-enc-images.html

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.