[ad_1]
Je souhaite capturer des appareils utilisant ffmpeg.exe. j’ai utilisé la classe Process et la commande ffmpeg associée mais sans succès
Ce que j’ai essayé :
j’ai utilisé le code suivant mais le résultat n’est rien !! je pense que cela se produit parce que le processus s’est terminé dès que process.start() a été exécuté. Comment puis je faire ça?
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(); } }
Solution 1
Vous souhaitez « capturer » la sortie ? Ceci devrait répondre à votre question: Capturer la sortie de la console à partir d’une application .NET (C#)[^]
Solution 2
J’ai eu le même problème. Je redirigeais la sortie standard, mais FFmpeg génère des messages texte vers l’erreur standard.
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(); } }
Astuce : utilisez -hide_banner dans l’argument ffmpeg et votre prochaine étape sera plus facile 🙂
J’espère que cela aide quelqu’un.
[ad_2]
コメント