Bonjour à tous!
Je cherche une méthode 'propre' pour afficher le % de progression de l'encodage d'une vidéo via mencoder dans une barre prévu à cet effet.
- J'ai réussi à le faire à partir de divx2pass.log (méthode 1), fichier de log créé automatiquement par mencoder:
- à chaque seconde je compte les lignes de divx2pass.log, sachant que chaque ligne du fichier correspond à un frame encodé
- je récupère le nombre de frames par secondes et la durée de la vidéo pour obtenir le nombre total de frames
- j'en déduis le % par une division
- Une autre méthode (méthode 2) serait de lire le % de progression dans un fichier de log que l'on créé ($ mencoder fichierSource [options] -o fichierSorti > 'log'):
- cela revient à récupérer à chaque seconde la dernière ligne (1) du fichier 'log' (le fichier peut prendre une centaine de milliers de lignes).
Code : Sélectionner tout - Visualiser dans une fenêtre à part Pos: 154.5s 3867f (55%) 283.23fps Trem: 0min 23mb A-V:-0.003 [480:224]
Problèmes:
- La 1ère méthode ne me paraît pas totalement robuste. Je suis obligé de récupéré les information via mencoder et mplayer (je lance même mplayer une fraction de seconde). Je n'obtiens pas directement le % de progression.
- La 2ème méthode consommerait trop de ressources puisqu'on doit traiter toutes les lignes d'un long fichier pour arriver à extraire le % (je ne suis pas arrivé à faire autrement en python ou avec des commandes linux)
Je voudrais pouvoir récupérer les % de progression et les lignes:
... sans passer par un fichier de log. Vous allez comprendre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Pos: 154.5s 3867f (55%) 283.23fps Trem: 0min 23mb A-V:-0.003 [480:224]
Si on exécute mencoder dans un terminal, on obtient par ex:
Comme vous le voyez seule 3 lignes de "Pos:..." sont renvoyées. En l'état ce n'est pas exploitable pour suivre la progression de l'encodage puisqu'on ne récupèrerait qu'un nombre limité de pourcentage. Comment afficher d'avantage de lignes de "Pos..." (par ex dans un terminal - si tel est le cas je pourrais facilement me débrouiller pour exploiter ces lignes) sans passer par un fichier externe de plusieurs milliers de lignes?
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 $ mencoder /home/login/videos/later-dv.mpg -ovc lavc -lavcopts vcodec=mpeg2video:vqmin=15:vpass=1 -oac copy -o toto.mpg MEncoder 2:1.0~rc1-0ubuntu9.2 (C) 2000-2006 MPlayer Team CPU: AMD Athlon(tm) 64 Processor 3500+ (Family: 15, Model: 79, Stepping: 2) CPUflags: Type: 15 MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 1 Compiled with runtime CPU detection. [...] 1 duplicate frame(s)! Pos: 0.8s 22f ( 0%) 0.00fps Trem: 0min 7mb A-V:0.084 [0:224] Skipping frame! Pos: 2.3s 60f ( 1%) 0.00fps Trem: 0min 7mb A-V:0.080 [36:224] Skipping frame! Pos: 278.5s 6966f (100%) 321.19fps Trem: 0min 23mb A-V:0.004 [474:224] Flushing video frames Writing index... Writing header... ODML: Aspect information not (yet?) available or unspecified, not writing vprp header. Video stream: 474.375 kbit/s (59296 B/s) size: 16512977 bytes 278.480 secs 6966 frames Audio stream: 224.000 kbit/s (28000 B/s) size: 7799955 bytes 278.570 secs
Cela serait sans doute la méthode la plus simple et élégante.
Je me suis attardé sur le page de manuel de mencoder mais sans succès.
Partager