Salut a tous,
Pour monpremierdeuxième post sur ce forum, j'ai un probleme... (étant pratiquement nouveau dans le monde de la programation, j'essayerai de me rattrapper mais c'est pas demain la veille)
Je suis en train d'essayer d'ecrire un script perl afin d'automatiser mes backups dvd. Pour l'instant, je me suis concentré sur l'encodage de la video.
Pour info, je tourne sous gentoo et ma version de perl est 5.8.8.
D'autres part, j'avais commencé a écrire ce script sous bash avant de m'interresser a perl, donc voila ce que ca donne sous bash :
Et voila ce que ca donne lors de l'execution :
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
22
23
24
25
26
27
28
29
30
31
32
33
34 #!/bin/sh # Color RD="\\033[1;31m" ## Red NM="\\033[0;39m" ## Normal StartDateG=`date +'%A %d %B'` StartTimeG=`date +%H:%M:%S` ## Premiere Pass ### /usr/bin/time mencoder VTS_01_0.VOB -of rawvideo -ovc x264 -x264encopts bitrate=3622:pass=1:subq=4:8x8dct:me=dia:frameref=5:bframes=2:b_pyramid:weight_b:direct_pred=auto:partitions=all:qcomp=0.75:ip_factor=1.10:pb_factor=1.40 -nosound -o /dev/null > encodage_pass1.log 2>&1 tps_pass1=`cat encodage_pass1.log | grep "user" | tr -d [:alpha:] | awk '{print $3}'` ## Deuxieme Pass ### /usr/bin/time mencoder VTS_01_0.VOB -of rawvideo -ovc x264 -x264encopts bitrate=3622:pass=3:subq=5:8x8dct:me=hex:frameref=5:bframes=2:b_pyramid:weight_b:direct_pred=auto:partitions=all:qcomp=0.75:ip_factor=1.10:pb_factor=1.40:trellis=1:threads=2 -nosound -o /dev/null > encodage_pass2.log 2>&1 tps_pass2=`cat encodage_pass2.log | grep "user" | tr -d [:alpha:] | awk '{print $3}'` ## Troisieme Pass ### /usr/bin/time mencoder VTS_01_0.VOB -of rawvideo -ovc x264 -x264encopts bitrate=3622:pass=2:subq=6:8x8dct:me=umh:frameref=5:bframes=2:b_pyramid:weight_b:direct_pred=auto:partitions=all:qcomp=0.75:ip_factor=1.10:pb_factor=1.40:brdo:trellis=2:threads=2 -nosound -o video.264 > encodage_pass3.log 2>&1 tps_pass3=`cat encodage_pass3.log | grep "user" | tr -d [:alpha:] | awk '{print $3}'` # Fin ### EndDateG=`date +'%A %d %B'` EndTimeG=`date +%H:%M:%S` echo "Encodage lancé le ${StartDateG} à ${StartTimeG}." echo "Encodage terminé le ${EndDateG} à ${EndTimeG}." echo "La première pass a durée ${tps_pass1} minutes" echo "La seconde : ${tps_pass2} minutes" echo "Et la dernière : ${tps_pass3} minutes"
Le seul problème c'est que je n'ai pas la progression de l'encodage, alors que mencoder (le program d'encodage) l'affiche si il est lancé sans la redirection du stdout dans mes fichiers de log (encodage_pass1.log, encodage_pass2.log et encodage_pass3.log)jerome@Dressing1 ~ $ ./x264-encodage-mod
Encodage lancé le dimanche 03 juin à 19:33:30.
Encodage terminé le dimanche 03 juin à 19:33:47.
La première pass a durée 0:03.25 minutes
La seconde : 0:04.13 minutes
Et la dernière : 0:08.72 minutes
Et c'est la que j'aimerais filtré le output de mencoder et ne garder que l'affichage de la progression de l'encodage, qui est donné comme ca dans mon shell :
Et de mettre tout le reste dans des fichiers logs.Pos: 0.6s 18f (99%) 6.22fps Trem: 0min 0mb A-V:0.000 [0:0]
Voila le output de la premiere pass sans rediriger quoi que ce soit dans un fichier :
Tout ce qui est après le Pos: 0.6s 18f (99%) 6.22fps Trem: 0min 0mb A-V:0.000 [0:0] est donné a la fin de l'encodage. Par ailleur, cette ligne (Pos: ...) est interactive.MEncoder dev-SVN-r23401 (C) 2000-2007 MPlayer Team
CPU: AMD Athlon(tm) processor (Family: 6, Model: 4, Stepping: 4)
CPUflags: Type: 6 MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 0 SSE2: 0
Compilé avec détection du CPU à l'exécution.112 codecs audio & 235 codecs vidéo
succès : format : 0 data : 0x0 - 0x18e800
Fichier de type MPEG-PS détecté.
VIDEO: MPEG2 720x576 (aspect 3) 25.000 fps 8000.0 kbps (1000.0 kbyte/s)
[V] filefmt:2 fourcc:0x10000002 size:720x576 fps:25.00 ftime:=0.0400
Ouverture du filtre vidéo : [expand osd=1]
Expand: -1 x -1, -1 ; -1, osd: 1, aspect: 0.000000, round: 1
==========================================================================
Ouverture du décodeur vidéo : [mpegpes] MPEG 1/2 Video passthrough
VDec : requête de config de vo - 720 x 576 (espace colorimétrique préferé : Mpeg PES)
N'a pas pu trouver espace colorimétrique correspondant - nouvel essai avec -vf scale...
Ouverture du filtre vidéo : [scale]
Le périphérique de sortie vidéo sélectionné est incompatible avec ce codec.
Essayer d'ajouter le filtre d'échelle, e.g. -vf spp,scale plutôt que -vf spp.
Echec de l'initialisation de VDecoder
Famille de codecs vidéo demandée [mpeg12] (vfm=libmpeg2) non disponible (activez-la à la compilation)
Ouverture du décodeur vidéo : [ffmpeg] FFmpeg's libavcodec codec family
Codec vidéo choisi : [ffmpeg2] vfm : ffmpeg (FFmpeg MPEG-2)
==========================================================================
VDec : requête de config de vo - 720 x 576 (espace colorimétrique préferé : Planar YV12)
VDec: using Planar I420 as output csp (no 1)
L'aspect du film est 1.78:1 - pré-redimensionnement à l'aspect correct.
x264 [info]: using SAR=64/45
x264 [info]: using cpu capabilities MMX MMXEXT 3DNow!
New_Face failed. Maybe the font path is wrong.
Please supply the text font file (~/.mplayer/subfont.ttf).
subtitle font: load_sub_face failed.
New_Face failed. Maybe the font path is wrong.
Please supply the text font file (~/.mplayer/subfont.ttf).
subtitle font: load_sub_face failed.
Pos: 0.6s 18f (99%) 6.22fps Trem: 0min 0mb A-V:0.000 [0:0]
Flushing video frames.
Flux vidéo : 2991.318 kbit/s (373914 B/s) taille : 254262 octets 0.680 secs 18 images
x264 [info]: slice I:2 Avg QP:20.00 size: 35316
x264 [info]: slice P:15 Avg QP:22.60 size: 12201
x264 [info]: mb I I16..4: 21.8% 32.2% 46.0%
x264 [info]: mb P I16..4: 14.8% 14.0% 12.3% P16..4: 34.2% 0.8% 0.6% 0.2% 0.2% skip:22.8%
x264 [info]: final ratefactor: 18.10
x264 [info]: 8x8 transform intra:33.5% inter:53.2%
x264 [info]: ref P 19.6% 0.7% 28.3% 50.8% 0.6%
x264 [info]: kb/s:2984.1
Alors, est-ce possible avec perl de faire ce genre de chose
J'avais commencé à écrire le script, et voilà ou j'en suis :
Apres le "while", je sais vraiment pas comment m'y prendre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #!/usr/bin/perl -w use strict; my $pass_1 = `mencoder VTS_01_0.VOB -of rawvideo -ovc x264 -x264encopts bitrate=3622:pass=1:subq=4:8x8dct:me=dia:frameref=5:bframes=2:b_pyramid:weight_b:direct_pred=auto:partitions=all:qcomp=0.75:ip_factor=1.10:pb_factor=1.40 -nosound -o /dev/null`; open ( PASS_1, "$pass_1 2>&1 |" ); while (<PASS_1>) { }![]()
Jjeje007
Note : Désolé pour le roman![]()
Partager