Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Autres Logiciels > Vidéo

Vidéo Forum d'entraide sur les logiciels pour la gestion Vidéo, TV, logiciels Webcams, ...

Réponse
 
Outils de la discussion
Vieux 24/11/2007, 14h54   #1 (permalink)
Futur Membre du Club
 
Date d'inscription: novembre 2005
Messages: 34
Par défaut mencoder et barre de progression

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 :
    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:
Code :
Pos: 154.5s   3867f (55%) 283.23fps Trem:   0min  23mb  A-V:-0.003 [480:224]
... sans passer par un fichier de log. Vous allez comprendre.

Si on exécute mencoder dans un terminal, on obtient par ex:
Code :
$ 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
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?

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.
goran kajfes est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 26/11/2007, 18h32   #2 (permalink)
Futur Membre du Club
 
Date d'inscription: novembre 2005
Messages: 34
Par défaut

J'ai pu récupérer les chaînes de caractères de type:
Code :
Pos: 154.5s   3867f (55%) 283.23fps Trem:   0min  23mb  A-V:-0.003 [480:224]
pour obtenir la progression de mencoder.

En fait je n'arrivais pas à les récupérer car j'attendais des lignes, alors que les chaînes de caractères "Pos:..." n'en étaient pas vraiment. En effet, elles se terminent par '\r' qui n'est pas un retour-chariot de fin de ligne sous les systèmes Unix.

Le problème n'avait donc pas grand-chose avec mencoder. Je passe en résolu.
goran kajfes est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Autres Logiciels > Vidéo



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide


Fuseau horaire GMT +1. Il est actuellement 14h35.


Publiez vos articles, tutoriels et cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter
Copyright 2000-2008 www.developpez.com - Legal informations