Test Foro de elhacker.net SMF 2.1

Programación => Programación General => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: Eleкtro en 27 Noviembre 2012, 09:52 AM

Título: (SOLUCIONADO) Como agarrar el error-output de un proceso?
Publicado por: Eleкtro en 27 Noviembre 2012, 09:52 AM
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
Título: Re: Como agarrar el error-output de un proceso?
Publicado por: 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
Título: Re: Como agarrar el error-output de un proceso?
Publicado por: seba123neo en 27 Noviembre 2012, 13:57 PM
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 (http://code.google.com/p/ffmpeg-sharp/)

saludos.

Título: Re: Como agarrar el error-output de un proceso?
Publicado por: Eleкtro en 27 Noviembre 2012, 14:07 PM
Cita de: seba123neo en 27 Noviembre 2012, 13:57 PM
ffmpeg-sharp (http://code.google.com/p/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
Título: Re: Como agarrar el error-output de un proceso?
Publicado por: seba123neo en 27 Noviembre 2012, 14:18 PM
cambio de pagina el proyecto, ahora esta en sourceforge:

SharpFFmpeg (http://sourceforge.net/projects/sharpffmpeg/)

y aca tenes otro:

FFmpeg.NET (http://ffmpegdotnet.codeplex.com/)

saludos.
Título: Re: Como agarrar el error-output de un proceso?
Publicado por: Eleкtro en 27 Noviembre 2012, 15:59 PM
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!