IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mac OS X Discussion :

Incompréhension avec sed


Sujet :

Mac OS X

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut Incompréhension avec sed
    Bonjour,

    Il y a un truc que je ne comprend pas, peut être allez vous pouvoir m'expliquer. J'ai une boucle pour extraire la valeur de "frame" issue d'un traitement de ffmpeg
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while [ $suivi_conversion -eq 0 ]
    do 
    	sleep 1
    	progression=$(cat $(dirname $0)/fichier.txt | tail -1 | grep "frame=")
    	echo "$progression"
    	echo $(cat $(dirname $0)/fichier.txt | tail -1 | grep "frame=" | sed "s/fps=/%/" | cut -d"%" -f1 | sed -e 's/frame=//')
    done
    La sortie de fmpeg est de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    frame=  638 fps= 29 q=21.0 size=   66931kB time=00:00:20.94 bitrate=26178.8kbits/s dup=106 drop=0 speed=0.95x
    J'ai comme résultat :
    1er echo : la ligne issue de ffmpeg présentée ci dessus mise à jour toutes les secondes
    2eme echo : J'obtiens toujours la même valeur qui correspond à la 1er valeur de frame=18 par exemple...

    Je ne comprend pas pourquoi ....

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Pour répondre à ton interrogation, parce qu'entre les 2 commandes, il ne s'écoule pas 1 seconde

    Sinon, grep "frame=" | sed "s/fps=/%/" | cut -d"%" -f1 | sed -e 's/frame=//' peut-être remplacé par grep -Po 'frame= *\K[^ ]*'
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    J'ai oublié de préciser que je suis sur MacOS... Et du coup le grep que tu m'as fournit ne fonctionne pas...
    entre les 2 commandes, il ne s'écoule pas 1 seconde
    ??? Je ne comprend pas ce que tu veux dire je pense... Ou le contraire

    Mais pourquoi, avec les 2 commandes suivantes j'ai des résultats différents :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo $(cat $(dirname $0)/fichier.txt | tail -1)
    #Ci dessous les resultats obtenu sur 3secondes
    # frame=   28 fps=0.0 q=21.0 size=    1593kB time=00:00:01.30 bitrate=10036.4kbits/s dup=5 drop=0 speed=2.55x    
    # frame=   62 fps= 61 q=21.0 size=    4757kB time=00:00:02.48 bitrate=15683.9kbits/s dup=10 drop=0 speed=2.45x    
    # frame=   95 fps= 63 q=21.0 size=    7810kB time=00:00:03.64 bitrate=17549.5kbits/s dup=16 drop=0 speed=2.41x    
    echo $(cat $(dirname $0)/fichier.txt | tail -1 | grep "frame=" | sed "s/fps=/%/" | cut -d"%" -f1)
    # 28
    # 28
    # 28

  4. #4
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par tepaze Voir le message
    J'ai oublié de préciser que je suis sur MacOS... Et du coup le grep que tu m'as fournit ne fonctionne pas...
    Remplace le grep par : awk '{print $2}' ou bien : sed -n 's/frame= *\([^ ]*\) .*/\1/p'.

    De même : echo $(cat $(dirname $0)/fichier.txt | tail -1 | grep "frame=" | sed "s/fps=/%/" | cut -d"%" -f1) par : tail -1 $(dirname $0)/fichier.txt | awk '{print $2}.


    Citation Envoyé par tepaze Voir le message
    Mais pourquoi, avec les 2 commandes suivantes j'ai des résultats différents :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    echo $(cat $(dirname $0)/fichier.txt | tail -1)
    #Ci dessous les resultats obtenu sur 3secondes
    # frame=   28 fps=0.0 q=21.0 size=    1593kB time=00:00:01.30 bitrate=10036.4kbits/s dup=5 drop=0 speed=2.55x    
    # frame=   62 fps= 61 q=21.0 size=    4757kB time=00:00:02.48 bitrate=15683.9kbits/s dup=10 drop=0 speed=2.45x    
    # frame=   95 fps= 63 q=21.0 size=    7810kB time=00:00:03.64 bitrate=17549.5kbits/s dup=16 drop=0 speed=2.41x    
    echo $(cat $(dirname $0)/fichier.txt | tail -1 | grep "frame=" | sed "s/fps=/%/" | cut -d"%" -f1)
    # 28
    # 28
    # 28
    Le echo ne sert à rien
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    Merci pour ton aide, mais il y a toujours quelque chose qui ne va pas. Pour illustrer mon problème, voici le fichier de données source (fichier.txt) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    frame=   29 fps=0.0 q=21.0 size=    1697kB time=00:00:01.36 bitrate=10149.3kbits/s dup=5 drop=0 speed=2.74x    
    frame=   64 fps= 64 q=24.0 size=    4921kB time=00:00:02.55 bitrate=15783.1kbits/s dup=11 drop=0 speed=2.55x    
    frame=   96 fps= 63 q=19.0 size=    7904kB time=00:00:03.64 bitrate=17761.8kbits/s dup=16 drop=0 speed= 2.4x    
    frame=  116 fps= 57 q=21.0 size=    9737kB time=00:00:04.31 bitrate=18468.2kbits/s dup=19 drop=0 speed=2.12x    
    frame=  136 fps= 53 q=20.0 size=   11703kB time=00:00:04.96 bitrate=19293.9kbits/s dup=23 drop=0 speed=1.95x    
    frame=  155 fps= 51 q=21.0 size=   13253kB time=00:00:05.59 bitrate=19400.6kbits/s dup=26 drop=0 speed=1.83x    
    frame=  176 fps= 49 q=21.0 size=   15208kB time=00:00:06.29 bitrate=19798.9kbits/s dup=29 drop=0 speed=1.76x    
    frame=  197 fps= 48 q=21.0 size=   17270kB time=00:00:06.96 bitrate=20309.9kbits/s dup=33 drop=0 speed= 1.7x    
    frame=  216 fps= 47 q=19.0 size=   18929kB time=00:00:07.61 bitrate=20360.5kbits/s dup=36 drop=0 speed=1.66x    
    frame=  238 fps= 46 q=21.0 size=   20893kB time=00:00:08.33 bitrate=20532.5kbits/s dup=40 drop=0 speed=1.63x    
    frame=  258 fps= 46 q=19.0 size=   22892kB time=00:00:09.03 bitrate=20761.5kbits/s dup=43 drop=0 speed= 1.6x    
    frame=  278 fps= 45 q=21.0 size=   24641kB time=00:00:09.70 bitrate=20797.5kbits/s dup=46 drop=0 speed=1.58x    
    frame=  299 fps= 45 q=21.0 size=   26518kB time=00:00:10.37 bitrate=20929.8kbits/s dup=50 drop=0 speed=1.56x    
    frame=  310 fps= 44 q=-1.0 Lsize=   28823kB time=00:00:10.75 bitrate=21962.5kbits/s dup=52 drop=0 speed=1.53x
    Et voici les resultats que j'obtiens chez moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tail -1 ./fichier.txt
    frame=  310 fps= 44 q=-1.0 Lsize=   28823kB time=00:00:10.75 bitrate=21962.5kbits/s dup=52 drop=0 speed=1.53x
    Donc la tout va bien, c'est cette ligne qui m'interesse
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tail -1 ./fichier.txt | sed -n 's/frame= *\([^ ]*\) .*/\1/p'
    29
    Et là c'est pas bon. Alors que c'est le même fichier, et que j'ai vérifié juste avant que je passais la bonne ligne à la sortie...

    C'est un bug sous MacOS ou quoi ???

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 277
    Points : 12 725
    Points
    12 725
    Par défaut
    Bonjour,

    Donne nous le résultat des commandes suivantes:
    Cordialement.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    file /Volumes/HDD/MontageAuto/fichier.txt 
    /Volumes/HDD/MontageAuto/fichier.txt: ASCII text, with CR, LF line terminators
    cat -A n'est pas disponible sous MacOS

  8. #8
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 277
    Points : 12 725
    Points
    12 725
    Par défaut
    Ton fichier n'est pas un fichier au format mac ni unix, a priori c'est un format dos.

    si MAC supporte cette commande à la place de cat -A :
    Cordialement.

  9. #9
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ tail -1 fich 
    frame=  310 fps= 44 q=-1.0 Lsize=   28823kB time=00:00:10.75 bitrate=21962.5kbits/s dup=52 drop=0 speed=1.53x
    
    $ tail -1 fich | sed -n 's/frame= *\([^ ]*\) .*/\1/p'
    310
    C'est ton fichier qui a un problème

    Pour cat -A fichier essaie avec sed -n l fichier.
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    Oui, effectivement, lorsque je copie les données dans un autre fichier vierge, et que j'effectue le test, j'ai le bon résultat.....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sed -n l /Volumes/HDD/MontageAuto/fichier.txt 
    frame=   29 fps=0.0 q=21.0 size=    1697kB time=00:00:01.36 bitrate=10149.3kbits/s dup=5 drop=0 speed=2.74x    \rframe=   64 fps= 64 q=24.0 size=    4921kB time=00:00:02.55\
     bitrate=15783.1kbits/s dup=11 drop=0 speed=2.55x    \rframe=   96 fps= 63 q=19.0 size=    7904kB time=00:00:03.64 bitrate=17761.8kbits/s dup=16 drop=0 speed= 2.4x    \rfra\
    me=  116 fps= 57 q=21.0 size=    9737kB time=00:00:04.31 bitrate=18468.2kbits/s dup=19 drop=0 speed=2.12x    \rframe=  136 fps= 53 q=20.0 size=   11703kB time=00:00:04.96 b\
    itrate=19293.9kbits/s dup=23 drop=0 speed=1.95x    \rframe=  155 fps= 51 q=21.0 size=   13253kB time=00:00:05.59 bitrate=19400.6kbits/s dup=26 drop=0 speed=1.83x    \rframe\
    =  176 fps= 49 q=21.0 size=   15208kB time=00:00:06.29 bitrate=19798.9kbits/s dup=29 drop=0 speed=1.76x    \rframe=  197 fps= 48 q=21.0 size=   17270kB time=00:00:06.96 bit\
    rate=20309.9kbits/s dup=33 drop=0 speed= 1.7x    \rframe=  216 fps= 47 q=19.0 size=   18929kB time=00:00:07.61 bitrate=20360.5kbits/s dup=36 drop=0 speed=1.66x    \rframe= \
     238 fps= 46 q=21.0 size=   20893kB time=00:00:08.33 bitrate=20532.5kbits/s dup=40 drop=0 speed=1.63x    \rframe=  258 fps= 46 q=19.0 size=   22892kB time=00:00:09.03 bitra\
    te=20761.5kbits/s dup=43 drop=0 speed= 1.6x    \rframe=  278 fps= 45 q=21.0 size=   24641kB time=00:00:09.70 bitrate=20797.5kbits/s dup=46 drop=0 speed=1.58x    \rframe=  2\
    99 fps= 45 q=21.0 size=   26518kB time=00:00:10.37 bitrate=20929.8kbits/s dup=50 drop=0 speed=1.56x    \rframe=  310 fps= 44 q=-1.0 Lsize=   28823kB time=00:00:10.75 bitrat\
    e=21962.5kbits/s dup=52 drop=0 speed=1.53x$
    Je cree le fichier depuis le bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ffmpeg -i video.mp4 -f flv out.flv >$(dirname $0)/fichier.txt 2>&1 & while .......
    Comment faire ?? Vous auriez une piste ?

  11. #11
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 277
    Points : 12 725
    Points
    12 725
    Par défaut
    Je ne suis pas sur de comprendre, le fichier que tu nous montres avec la commande est bien au format MAC et quand tu le copie/colle dans un autre fichier cela fonctionne.
    Ce qui m'amène à dire que les commande tel que tail ou sed ne prennent pas en compte le format MAC, alors que ffmpeg en tient compte ???

    A quoi ressemble le fichier avec lequel ça fonctionne ( la commande sed -n l fichier_qui_fonctionne ?
    Cordialement.

  12. #12
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Convertis ton fichier au format unix avec la commande mac2unix, qui fait partie du paquet unix2dos (ou dos2unix), à installer brew install dos2unix
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    sed -n l /Volumes/HDD/MontageAuto/fichier_OK.txt 
    frame=   29 fps=0.0 q=21.0 size=    1697kB time=00:00:01.36 bitrate=10149.3kbits/s dup=5 drop=0 speed=2.74x    $
    frame=   64 fps= 64 q=24.0 size=    4921kB time=00:00:02.55 bitrate=15783.1kbits/s dup=11 drop=0 speed=2.55x    $
    frame=   96 fps= 63 q=19.0 size=    7904kB time=00:00:03.64 bitrate=17761.8kbits/s dup=16 drop=0 speed= 2.4x    $
    frame=  116 fps= 57 q=21.0 size=    9737kB time=00:00:04.31 bitrate=18468.2kbits/s dup=19 drop=0 speed=2.12x    $
    frame=  136 fps= 53 q=20.0 size=   11703kB time=00:00:04.96 bitrate=19293.9kbits/s dup=23 drop=0 speed=1.95x    $
    frame=  155 fps= 51 q=21.0 size=   13253kB time=00:00:05.59 bitrate=19400.6kbits/s dup=26 drop=0 speed=1.83x    $
    frame=  176 fps= 49 q=21.0 size=   15208kB time=00:00:06.29 bitrate=19798.9kbits/s dup=29 drop=0 speed=1.76x    $
    frame=  197 fps= 48 q=21.0 size=   17270kB time=00:00:06.96 bitrate=20309.9kbits/s dup=33 drop=0 speed= 1.7x    $
    frame=  216 fps= 47 q=19.0 size=   18929kB time=00:00:07.61 bitrate=20360.5kbits/s dup=36 drop=0 speed=1.66x    $
    frame=  238 fps= 46 q=21.0 size=   20893kB time=00:00:08.33 bitrate=20532.5kbits/s dup=40 drop=0 speed=1.63x    $
    frame=  258 fps= 46 q=19.0 size=   22892kB time=00:00:09.03 bitrate=20761.5kbits/s dup=43 drop=0 speed= 1.6x    $
    frame=  278 fps= 45 q=21.0 size=   24641kB time=00:00:09.70 bitrate=20797.5kbits/s dup=46 drop=0 speed=1.58x    $
    frame=  299 fps= 45 q=21.0 size=   26518kB time=00:00:10.37 bitrate=20929.8kbits/s dup=50 drop=0 speed=1.56x    $
    frame=  310 fps= 44 q=-1.0 Lsize=   28823kB time=00:00:10.75 bitrate=21962.5kbits/s dup=52 drop=0 speed=1.53x$
    Et zut....

    Le soucis c'est que j'aimerais éviter d'avoir des "dépendances". Je voudrais que ce script soit portable... Donc installer un truc avec brew bof bof... Je le ferais si je ne trouve pas d'alternative...

    Sinon, je n'ai pas réussi à utiliser la sortie de ffmpeg sans passer par l'ecriture dans un fichier, mais en même temps je ne pas très balaize en bash... Peut être pourriez vous me dire comment passez les infos à ma boucle... L'idée étant d'avoir un suivi de l'avancement de la conversion sans avoir les 50 lignes de ffmpeg...

    Je n'ai pas réussi à exploiter ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ffmpeg -i video.mp4 -f flv out.flv | ....

  14. #14
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    ffmpeg -i video.mp4 -f flv - | .... si je ne m'abuse…
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    ffmpeg -i video.mp4 -f flv - | .... si je ne m'abuse…
    Non, c'est la sortie de la conversion vidéo, et non la sortie du "texte"
    Et y a t'il un moyen de modifier la requête sed pour que ça fonctionne ?

  16. #16
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 277
    Points : 12 725
    Points
    12 725
    Par défaut
    Essaye le code ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ffmpeg -i video.mp4 -f flv out.flv -loglevel quiet -stats 2>&1 | while read -d "$(echo -en '\015')" || [ -n "$REPLY" ]
    do
     echo ${REPLY} | sed -n '/frame=/s/frame=[^0-9]*\([0-9]*\).*/\1/p'
    done
    et si tu veux, tu peux remplacer le "$(echo -en '\015')" par un "^M" (c'est le CTRL-M qui s'obtient dans un terminal par CTRL-V puis CTRL-M)

    Pour la petite explication, les stats ainsi que les logs (qui sont supprimer ici par le niveau quiet) sont sortie sur la sortie d'erreur, donc on redirige celle-ci sur la sortie standart et on pipe.
    Ensuite, le principal souci des stats, c'est que celle-ci sont affichées en mode progression, ce qui est la raison qu'une ligne de stats se termine avec un Carriage Return et non un Line Feed.
    Le || [ -n "$REPLY" ] est là car la dernière ligne de stats ne finit pas par un carriage return et ne serait donc pas prise en compte par la boucle while.
    Cordialement.

  17. #17
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Points : 7 882
    Points
    7 882
    Par défaut
    Citation Envoyé par tepaze Voir le message
    J'ai oublié de préciser que je suis sur MacOS...
    Tu as oublié de le préciser, mais tu as surtout posté dans le mauvais forum. Tu n'es pas sous Linux et tu n'utilises pas les commandes GNU. D'où certains des problèmes rencontrés avec les propositions qui t'ont été faites.

    La prochaine fois que tu as une question relative au shell d'OS X, poste dans le forum http://www.developpez.net/forums/f17...mmandes-posix/ , ça n'empêchera pas d'avoir parfois des réponses avec des gnuismes, mais au moins, ce ne sera pas de ta faute ;-)
    ɹǝsn *sıɹɐlos*

  18. #18
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Essaye le code ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ffmpeg -i video.mp4 -f flv out.flv -loglevel quiet -stats 2>&1 | while read -d "$(echo -en '\015')" || [ -n "$REPLY" ]
    do
     echo ${REPLY} | sed -n '/frame=/s/frame=[^0-9]*\([0-9]*\).*/\1/p'
    done
    et si tu veux, tu peux remplacer le "$(echo -en '\015')" par un "^M" (c'est le CTRL-M qui s'obtient dans un terminal par CTRL-V puis CTRL-M)

    Pour la petite explication, les stats ainsi que les logs (qui sont supprimer ici par le niveau quiet) sont sortie sur la sortie d'erreur, donc on redirige celle-ci sur la sortie standart et on pipe.
    Ensuite, le principal souci des stats, c'est que celle-ci sont affichées en mode progression, ce qui est la raison qu'une ligne de stats se termine avec un Carriage Return et non un Line Feed.
    Le || [ -n "$REPLY" ] est là car la dernière ligne de stats ne finit pas par un carriage return et ne serait donc pas prise en compte par la boucle while.
    Merci pour ces explications très intéressantes et instructives.
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    Bonjour,

    Tout d'abord merci pour le temps consacré à ce sujet.
    La prochaine fois que tu as une question relative au shell d'OS X, poste dans le forum http://www.developpez.net/forums/f17...mmandes-posix/ , ça n'empêchera pas d'avoir parfois des réponses avec des gnuismes, mais au moins, ce ne sera pas de ta faute ;-)
    C'est exact. Mais d'habitude, je fais cela sous Linux... Aujourd'hui c'est sous OSX... Désolé...

    Pour le code, je ne peux rien tester durant quelques jours... Je reviens vers vous rapidement.

    Encore merci pour le temps passé.

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 201
    Points : 150
    Points
    150
    Par défaut
    J'ai passé beaucoup de temps à éplucher la doc à propos de la vidéo et des filtres, mais je n'ai pas pensée à regarder pour les options de sortie texte. Merci disedorgue.

    Le code que tu me fournit fonctoionne très bien... Uniquement dans le terminal, une fois mis dans le script, cela ne fonctionne plus... Plus aucune sortie.

    Même si je reprend juste l'exemple dans un fichier, ça ne fonctionne pas...

    Je suis perplexe...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Incompréhension avec sed et une variable
    Par venturic dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 08/02/2011, 09h30
  2. Recherche avec sed insensible à la casse
    Par _Mac_ dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 12/10/2005, 15h42
  3. Script bash : Pb avec sed
    Par fred64 dans le forum Linux
    Réponses: 3
    Dernier message: 19/08/2005, 11h24
  4. Extraire une valeur d'une ligne avec sed
    Par jojolepabo dans le forum Linux
    Réponses: 6
    Dernier message: 27/10/2004, 09h34
  5. incompréhension avec ado
    Par Orgied dans le forum Bases de données
    Réponses: 3
    Dernier message: 19/05/2004, 18h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo