Re: Récupérer la sortie de mplayer

トップ ページ

このメッセージに返信
著者: Edgar Bonet
日付:  
To: ML Guilde
題目: Re: Récupérer la sortie de mplayer
Salut !

Le vendredi 15 septembre, Frédéric a écrit :
> Je voudrais récupérer en temps réel le timing de lecture de mplayer, mais
> j'ai du mal à piper sa sortie dans mon programme, vu qu'il rafraichit les
> données toujours sur la même ligne. Du coup, il y a des séquences de
> contrôle bizarre, qui me posent problème (en fait, je n'ai rien en sortie,
> jusqu'au moment où j'appuie sur Enter, et là, je n'ai que des chaînes
> vides).
>
> J'ai fait ça en python, mais si quelqu'un arrive à me montrer comment faire
> dans un autre langage (perl...), ça m'irait aussi. [...]


Voici un exemple rigolo :

    #!/usr/bin/perl -w


    $| = 1;     # don't buffer output
    open(PLAYER, "mplayer demo-grenoble-swing.avi |");
    while (read PLAYER, $data, 1) {
        $data =~ tr/0134579\r/OlEASLg\n/;  # reversed 1337 speak ;-)
        print $data;
    }


Le vendredi 15 septembre, Olivier Allard-Jacquin a écrit :
>     Peut-être es-ce que tu pourrais "piper" mplayer dans un "tc", afin de
> remplacer les "0x0D" en "0x13". [...]


Tu veux dire 0x0A. man ascii :

    0x0A : LF '\n'
    0x0D : CR '\r'
    0x13 : DC3 (Control-S)


Dans le code ci dessus, si tu remplaces le 1337 code par

    $data =~ tr/\r/\n/;


tu vois tout qui s'affiche ligne par ligne. Et d'ailleurs tu peux
enlever la commande $|=1; puisque par défaut la sortie est bufférisée
par lignes.

Bonne nuit,

Edgar.