Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicitÓ e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.net] Progresso ffmpeg su progressbar
Forum - C# / VB.NET - [VB.net] Progresso ffmpeg su progressbar

Avatar
BeTmAsTeR (Normal User)
Newbie


Messaggi: 7
Iscritto: 01/09/2009

Segnala al moderatore
Postato alle 19:55
Martedý, 01/09/2009
Scusate il titolo poco chiaro, st˛ creando un piccolo convertitore di formati utilizzando ffmpeg, il codice per la conversione non Ŕ stato un grosso problema ma mi sono bloccato qui .....

Vorrei far conincidere l' avanzamento che mostra ffmpeg in una progressbar sul form .....

Come faccio ???

grazie in anticipo :hail:

PM Quote
Avatar
GoLDBeRG (Ex-Member)
Expert


Messaggi: 331
Iscritto: 19/12/2005

Segnala al moderatore
Postato alle 20:54
Martedý, 01/09/2009
non ho capito nemmeno di cosa stai parlando...

PM Quote
Avatar
BeTmAsTeR (Normal User)
Newbie


Messaggi: 7
Iscritto: 01/09/2009

Segnala al moderatore
Postato alle 1:19
Mercoledý, 02/09/2009
allora hai presente quando esegui una conversione con ffmpeg ?
ti viene mostrato l' avanzamento della conversione
dato che st˛ facendo un prog in vb.net che sfrutta ffmpeg per la conversione di file in altri formati ..... volevo che l' avanzamento di ffmpeg venisse mostrate sul mio form attraverso la progressbar

PM Quote
Avatar
Il Totem (Admin)
Guru^2


Messaggi: 3635
Iscritto: 24/01/2006

Segnala al moderatore
Postato alle 10:04
Mercoledý, 02/09/2009
Devi redirigere l'output del programma ffmpeg sulla tua applicazione. Per far questo si usano alcune proprietÓ di Process. Io ho fatto la stessa cosa con Lame:
Codice sorgente - presumibilmente VB.NET

  1. P = New Process
  2.             P.StartInfo.FileName = Lame
  3.             P.StartInfo.Arguments = Info.Arguments & String.Format("{0}{1}{0} {0}{2}{0}", Chr(34), File, Info.Folder & "\" & IO.Path.GetFileNameWithoutExtension(File) & ".mp3")
  4.             P.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
  5.             P.StartInfo.UseShellExecute = False
  6.             P.StartInfo.RedirectStandardError = True
  7.             P.StartInfo.CreateNoWindow = True
  8.             AddHandler P.ErrorDataReceived, AddressOf Process_DataReceived
  9.  
  10.             P.Start()
  11.             P.BeginErrorReadLine()


Solo che al posto di StandardError e ErrorDataReceived ci vanno StandardOutput e OutputDataReceived. Leggi e manipoli i dati nell'evento relativo; io ho usato le espressioni regolari:
Codice sorgente - presumibilmente VB.NET

  1. Private Sub Process_DataReceived(ByVal sender As Object, ByVal e As DataReceivedEventArgs)
  2.         Dim pfMatch As Match = ProcessedFramesReg.Match(e.Data)
  3.         Dim prMatch As Match = ProcessingRateReg.Match(e.Data)
  4.         Dim tpMatch As Match = TimeToProcessReg.Match(e.Data)
  5.         Dim Infos As New System.Text.StringBuilder()
  6.         Dim Percent As Single = -1
  7.  
  8.         If (pfMatch.Success) And (prMatch.Success) And (tpMatch.Success) Then
  9.             Infos.AppendFormat("Frames processati: {0:N0}/{1:N0}", CInt(pfMatch.Groups("Proc").Value), CInt(pfMatch.Groups("All").Value))
  10.             Percent = 100 * CSng(pfMatch.Groups("Proc").Value) / CSng(pfMatch.Groups("All").Value)
  11.             Infos.AppendFormat(" - Velocit├ : {0}", prMatch.Groups("Rate").Value)
  12.             Infos.AppendFormat(" - In coda: {0} min", tpMatch.Groups("Time").Value)
  13.         End If
  14.  
  15.         bgConvert.ReportProgress(Percent, Infos.ToString)
  16.     End Sub



"Infelici sono quelli che hanno tanto cervello da vedere la loro stupiditÓ."
(Fligende Blatter)

"Dubitare di se stessi Ŕ il primo segno d'intelligenza."
(Ugo Ojetti)
PM Quote