[ad_1]
ffmpeg.exeを使用してデバイスをキャッチしたいと考えています。 Processクラスと関連するffmpegコマンドを使用しましたが、成功しませんでした
私が試したこと:
次のコードを使用しましたが、出力は何もありません!! process.start() が実行されるとすぐにプロセスが終了したため、これが発生すると思います。 どうやってやるの?
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(); } }
解決策 1
出力を「キャプチャ」したいですか? これであなたの質問に答えられるはずです: c# – .NETアプリケーションからのコンソール出力のキャプチャ(C#)[^]
解決策 2
私も同じ問題を抱えていました。 標準出力をリダイレクトしていましたが、FFmpeg はテキストメッセージを標準エラーに出力します。
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(); } }
ヒント: ffmpeg 引数で -hide_banner を使用すると、次のステップが簡単になります 🙂
誰かの役に立てば幸いです。
[ad_2]
コメント