Comment obtenir la longueur d'un fichier texte ouvert par une autre application
cs_gandalf27
Messages postés13Date d'inscriptionvendredi 10 mars 2006StatutMembreDernière intervention10 septembre 2010
-
8 sept. 2010 à 22:00
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
10 sept. 2010 à 23:56
J'ai une application qui lance un processus d'analyse des fichiers vidéo et qui écrit un fichier log.
Si le fichier vidéo est correct ou s'il y a seulement quelques problèmes de structures, je n'ai pas de problème.
Si le fichier vidéo est vraiment corrompu, l'analyse prend trop de temps et le fichier log fini par être plus gros que le fichier vidéo. Et certain vidéo vont jusqu'à 12G.
Comment obtenir la longueur du fichier log qui est en cours d'écriture par le processus d'analyse. Ce fichier n'est fermé que lorsque l'analyse est terminée.
A voir également:
Comment obtenir la longueur d'un fichier texte ouvert par une autre application
cs_gandalf27
Messages postés13Date d'inscriptionvendredi 10 mars 2006StatutMembreDernière intervention10 septembre 2010 9 sept. 2010 à 14:17
Bonjour Jack,
effectivement cette commande existe mais elle me donne toujours la même réponse peut importe quand j'exécute la commande. Elle me donne la grosseur du fichier lors de la dernière sauvegarde et mais le fichier que j'interroge est toujours en traitement par un processus externe à VB.
je refait un autre test pour vérifier.
Merci
Autre idée ???
cs_gandalf27
Messages postés13Date d'inscriptionvendredi 10 mars 2006StatutMembreDernière intervention10 septembre 2010 9 sept. 2010 à 20:59
Bonjour Renfield,
- récapitulation : l'application MpegParse fonctionne seulement avec un decodeur Stradis et génère un log d'analyse (.txt)
le fichier txt ne peut être ouvert par une autre application en même temps.
je pourrais t'envoyer une copie de l'application mais on ne peux pas attacher de fichier
cs_gandalf27
Messages postés13Date d'inscriptionvendredi 10 mars 2006StatutMembreDernière intervention10 septembre 2010 9 sept. 2010 à 21:26
Bonjour Renfield,
j'ajoute un aperçu de la liste de paramètres de MpegParse ainsi que la commande utilisée.
---------------------
C:\MpegparseSD>mpegparse
MPEG Parser, Version 1.31, Copyright 2001-2005 Stradis, Inc. Atlanta, Georgia
All Rights Reserved World Wide.
usage: MpegParse <-switches> filename
switches:
-cc:fn Extract Closed Caption to File (stream order)
-ccr:fn Extract Closed Caption to File (temporal order)
-cld Clear Low Delay Bit
-pa Print Audio Statistics
-ppcr Print PCR Statistics
-pv Print Video Statistics
-rta Re-time audio from first PTS
-rta=n.n Re-time audio starting with n.n
-rts Re-time SMPTE time stamps
-rts=<+/->xx:xx:xx.xx
Re-time SMPTE time stamps starting with xx:xx:xx.xx
use + to force drop frame, - to remove drop frame
-rtv=n.n Re-time video starting with n.n
-scg Set first GOP to closed GOP
-sog Set first GOP to open GOP
-select Select Program for Transport Stream
-prg:n.a Use Program 'n', 'a'th Audio Stream (0 based) for Transport Stream
-vpes:fn Extract Video PES Stream to File
-apes:fn Extract Audio PES Stream to File
-ves:fn Extract Video Elementary Stream to File
-aes:fn Extract Audio Elementary Stream to File
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 10 sept. 2010 à 02:54
>
pile poil :
TU demande a rediriger la sortie standard de la console dans un fichier de ton choix...
il est assez simple de modifier ton appel et permettre :
- d'attendre que le convertisseur aies finit son job, tout en ayant la possibilite d'afficher une progression quelconque, ou au moins un message d'attente
- de demander a obtenir un acces (toi seul) en lecture a la sortie standard. Le but de la manoeuvre ? Pouvoir traiter en temps reel les donnees qui se trouvent actuellement dans ton fichier de log.
J'ai un peu de code tout pret, je te le filerai demain. rapidement, de tete, je dirai qu'il fqut utiliser les APIs:
cs_gandalf27
Messages postés13Date d'inscriptionvendredi 10 mars 2006StatutMembreDernière intervention10 septembre 2010 10 sept. 2010 à 14:23
ce que j'ai surtout besoin de savoir c'est de pouvoir suivre la progression de la grosseur du fichier de sortie pour déterminer s'il y a un problème à l'analyse.
Autrement dit si le fichier de sortie atteint 25% de la grosseur du fichier analysé, c'est qu'il y a un problème majeur et que je dois arrêter le processus d'analyse.
Je fait ensuite la vérification du contenu du fichier de sortie une fois l'analyse complétée, qu'il soit bon ou mauvais.
cs_gandalf27
Messages postés13Date d'inscriptionvendredi 10 mars 2006StatutMembreDernière intervention10 septembre 2010 10 sept. 2010 à 17:19
donc a partir de l'exemple : modifications en gras ' This is the code for the base process
Dim myProcess As New Process()
' Start a new instance of this program but specify the 'spawned' version.
Dim myProcessStartInfo As New ProcessStartInfo(args(0), "spawn") Nom de l'application, arguments myProcessStartInfo.UseShellExecute = False
myProcessStartInfo.RedirectStandardOutput = True
myProcess.StartInfo = myProcessStartInfo
myProcess.Start()
Dim myStreamReader As StreamReader = myProcess.StandardOutput
' Read the standard output of the spawned process.
Dim myString As String , len as long
Créer une boucle mystring = myStreamReader.ReadLine()
len=+length(mystring) Console.WriteLine(myString) à changer pour écrire dans un fichier tant que mystring <>"" or len>25% fichier analysé myProcess.WaitForExit()
myProcess.Close()