
03/04/2007, 14:28
|
| | 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 |