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.