Bonsoir a tous,
Je reviens avec un "truc" un peu plus compliqué (enfin il me semble)
Toujours a fond dans mon script d'encodage (mais ca avance)
Bref, voilà ce que j'utilise dans le shell pour lancer l'encodage d'une piste audio en 5.1 :
Note : tout ce qui est après "faac" est sur une seule ligne normalementmkfifo audiodump.pcm
faac -q 100 -I 5,6 -P -R 48000 -C 6 -X audiodump.pcm -o ENG.mp4 & mplayer -dvd-device /mnt/loop dvd://4 -aid 128 -vc null -vo null -ao pcm:nowaveheader -channels 6
Tout ca grace a un pipe (mkfifo)
Maintenant, j'aimerai l'intégré a mon script perl ...
Voilà ce que j'ai écrit :
Mais ca foire complètement :
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
17
18
19
20
21 #!/usr/bin/perl use IO::Pipe; print " Transcodage en AAC-LC 5.1 en cours ...\n"; if ( -p audiodump.pcm ) { unlink audiodump.pcm; system("mkfifo audiodump.pcm"); } else { system("mkfifo audiodump.pcm"); } $|++; my $transcode_faac = new IO::Pipe(); $transcode_facc->reader("faac -q 100 -I 5,6 -P -R 48000 -C 6 -X audiodump.pcm -o test.mp4 & mplayer -dvd-device /mnt/loop dvd://4 -aid 128 -vc null -vo null -ao pcm:nowaveheader -channels 6"); { local $/ = "\r"; while( defined( my $line = $transcode_faac->getline ) ) { print $1 if $line =~ m/(\d+\r)$/; } }
Alors, comment faire pour filtré stdout avec un pipe au milieu ?jerome@Gentoo ~/test $ ./faac
Transcodage en AAC-LC 5.1 en cours ...
mkfifo: ne peut créer le fifo `audiodump': Le fichier existe.
Can't call method "reader" on an undefined value at ./faac line 15.
D'autres part, j'aimerai aussi savoir pourquoi le test sur le pipe "audiodump.pcm" ne passe pas (il devrait l'effacer et le recréer)
Jjeje007
Partager