Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/04/2007, 14:28
walex
 
Fecha de Ingreso: abril-2007
Mensajes: 1
Antigüedad: 18 años, 1 mes
Puntos: 0
Ayuda con contro de procesos

Hola amigos:

Ante todo presentarme en el foro y felicitaros por vuestro trabajo.

Estoy programando un conversor de video y tengo un problema que me trae de cabeza. Basicamente lo que hago es llamar al FFMPEG con una serie de parámetros, y quiero controlar el retorno del proceso mientras comprime para hacer avanzar una barra de progreso y avisar al usuario de errores, etc.

Hasta ahora he intentado esto:

Dim cmd As New Process()

cmd.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden
cmd.StartInfo.CreateNoWindow = True
cmd.StartInfo.RedirectStandardOutput = True
cmd.StartInfo.UseShellExecute = False
cmd.StartInfo.FileName = My.Application.Info.DirectoryPath & "\ffmpeg.exe"
cmd.StartInfo.Arguments = "-y -i """ & VideoFileIn & """ -f mp4 -vcodec xvid -b 768k -acodec aac -ac 2 -ab 128 """ & VideoFileOut & """"

Dim retorno As String

Do
retorno = cmd.StandardOutput.ReadLine()

If cmd.HasExited Then
Exit Do
End If

Loop

cmd.Close()

La aplicación se arranca y ejecuta correctamente, pero no tengo ningún feedback de lo que está pasando.

También lo he intentado usando BeginOutputReadLine para hacerlo usando lectura asíncrona, pero lo máximo que he conseguido es que la función que he asociado al manejador se ejecute al terminar el proceso.

Private Shared Sub SortOutputHandler(sendingProcess As Object, _
outLine As DataReceivedEventArgs)

¿Se os ocurre alguna forma de poder solucionar este problema? Os estaría muy agradecido.

saludos