(SOLUCIONADO) Como agarrar el error-output de un proceso?

Iniciado por Eleкtro, 27 Noviembre 2012, 09:52 AM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

Hola,

Necesito agarrar el error output de la CMD en este código, pero no sé como hacerlo, solo me agarra el output standard. ¿Me pueden indicar como se hace?

Muchas gracias!

PD: Ya sé que es una mala práctica usar comandos externos, pero no encuentro ninguna librería que sirva para buscar metadataos Y A LA VEZ convertir videos, eso es dificil, estoy aprendiendo!


Código (VBNET) [Seleccionar]
               If metadata = True Then
                   Dim ffmpeg_process As New Process()
                   Dim ffmpeg_startinfo As New ProcessStartInfo()
                   ffmpeg_startinfo.FileName = "cmd.exe "
                   ffmpeg_startinfo.UseShellExecute = False
                   ffmpeg_startinfo.CreateNoWindow = False
                   ffmpeg_startinfo.Arguments = "/C ffmpeg.exe -y -i " & ControlChars.Quote & aFile.FullName.ToString() & ControlChars.Quote & " -f ffmetadata " & ControlChars.Quote & "%TEMP%\" & aFile.Name.ToString() & "_metadata.txt" & ControlChars.Quote & " >NUL 2>&1 && Type " & ControlChars.Quote & "%TEMP%\" & aFile.Name.ToString() & "_metadata.txt" & ControlChars.Quote & "| FINDSTR /I " & ControlChars.Quote & "^INAM ^title" & ControlChars.Quote
                   ffmpeg_startinfo.RedirectStandardOutput = True
                   ffmpeg_process.EnableRaisingEvents = True
                   ffmpeg_process.StartInfo = ffmpeg_startinfo
                   ffmpeg_process.Start()
                   Dim readerStdOut As IO.StreamReader = ffmpeg_process.StandardOutput
                   Do While readerStdOut.EndOfStream = False
                       consolebox.AppendText(readerStdOut.ReadLine() + vbNewLine)
                       consolebox.SelectionStart = consolebox.Text.Length
                       consolebox.ScrollToCaret()
                   Loop
               End If








kub0x

Código ( vb.net) [Seleccionar]
proceso.redirectstandarderror = true
Dim stderr as string = Proceso.standarderror.readtoend


simplemente configuras el proceso para que redireccione los posibles errores.

Saludos dsd android
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


seba123neo

usa un wrapper de ese ffmpeg.exe, asi te evitas escribir cada comando de conversion de video, ya te viene todo programado en una libreria lista para usar en .NET, hay varias, pero una de las mejores es:

ffmpeg-sharp

saludos.

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Eleкtro

Cita de: seba123neo en 27 Noviembre 2012, 13:57 PM
ffmpeg-sharp

Cita de: SOURCEFORGE
Your search did not generate any results.
You may want to try your search over all downloads.

This project currently has no downloads.

xD?

Te lo agradezco Seba, buscaré otro parecido...

Saludos








seba123neo

cambio de pagina el proyecto, ahora esta en sourceforge:

SharpFFmpeg

y aca tenes otro:

FFmpeg.NET

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

Eleкtro

Cita de: kub0x en 27 Noviembre 2012, 13:35 PM
Código ( vb.net) [Seleccionar]
proceso.redirectstandarderror = true
Dim stderr as string = Proceso.standarderror.readtoend


simplemente configuras el proceso para que redireccione los posibles errores.

Saludos dsd android

Gracias Kubox, aunque me expliqué mal, yo lo que necesitaba era el ExitCode, pero ya está.




Sobre el SharpFFmpeg, me voy a abstener de usarlo, aparte de porque el proyecto tiene SEIS años de antiguedad sin actualizarse, solo hay ejemplos escritos en C#, así que ni idea tengo xD.

Y el FFMPEG.Net no soporta codificación de video, y si no he entendido mal solo soporta pistas WAV, está muy verde, así que tampoco me sirve...

Saludos!