Salut a tous,

Pour mon programme de rip de dvd, j'utilise mplayer pour qu'il rogne les bandes noires, pour se faire j'utilise ca :

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
16
#!/usr/bin/perl
 
use strict;
use warnings;
use IO::Pipe;
 
 
print "       ATTENTION ! Pour sortir appuyez deux fois sur 'ECHAP' !\n";
sleep 3;				
my $d_cropp = new IO::Pipe();
$d_cropp->reader("mplayer -dvd-device /mnt/loop dvd://3 -ao null -vo null -vf cropdetect -sb 50000000 -endpos 5001000o");
{
while( defined( my $line = $d_cropp->getline ) ) {									    
	print	$line if $line =~ m/^.*CROP/;									   
	}
}
Les deux problèmes sont d'une part, que l'utilisateur est obligé d'appuyer sur "echap" pour terminer la détection du rognage et d'autre part, que cette détection s'étend sur plusieurs lignes, exemple :

[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
[CROP] Aire coupée: X: 0..719 Y: 0..573 (-vf crop=720:560:0:8).0
Ce que j'aimerais faire c'est, dans un premier temps, que ca "print" que sur une seule ligne (comprendre il print la ligne commençant par [CROP], puis il l'efface et il reprint par dessus) et, dans un deuxième temps, envoyé un "kill" au processus après un certain temps.

Note : Ceux qui connaissent un peu mplayer vont me dire d'utiliser les options "-sb/-ss" et "-endpos" afin de ne pas envoyer de signal kill, mais il se trouve que sur mon système ces options ont un comportement vraiment ... bizarre (les positions sont changeantes selon le dvd ).

Alors, comment faire ?

Jjeje007