[ad_1]
Quiero detectar dispositivos que usan ffmpeg.exe. Utilicé la clase Process y el comando ffmpeg relacionado pero no tuve éxito
Lo que he probado:
¡Usé el siguiente código pero el resultado no es nada! Creo que sucede porque el proceso salió tan pronto como se ejecutó Process.start(). ¿Cómo puedo hacer eso?
C#
static void Main(string[] args) { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.CreateNoWindow = false; startInfo.UseShellExecute = false; startInfo.FileName = "ffmpeg.exe"; startInfo.Arguments = "-list_devices true -f dshow -i dummy"; startInfo.RedirectStandardOutput = false; try { using (Process process = Process.Start(startInfo)) { while (!process.StandardOutput.EndOfStream) { string line = process.StandardOutput.ReadLine(); Console.WriteLine(line); } process.WaitForExit(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadKey(); } }
Solución 1
¿Quieres “capturar” el resultado? Esto debería responder a tu pregunta: Capturar la salida de la consola desde una aplicación .NET (C#)[^]
Solución 2
Tuve el mismo problema. Estaba redirigiendo la salida estándar, pero FFmpeg genera mensajes de texto con el error estándar.
C#
static void Main(string[] args) { ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.CreateNoWindow = false; startInfo.UseShellExecute = false; startInfo.FileName = "ffmpeg.exe"; startInfo.Arguments = "-hide_banner -list_devices true -f dshow -i dummy"; startInfo.RedirectStandardError = true; try { using (Process process = Process.Start(startInfo)) { while (!process.StandardError.EndOfStream) { string line = process.StandardError.ReadLine(); Console.WriteLine(line); } process.WaitForExit(); } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadKey(); } }
Consejo: use -hide_banner en el argumento ffmpeg y su próximo paso será más fácil 🙂
Espero que esto ayude a alguien.
[ad_2]
コメント