私は、いくつかのビデオファイルに対していくつかの後処理を行うためにいくつかのコマンドラインアプリケーションを呼び出すアプリケーションに取り組んでいます。
現在、 Comskipを使用して、ケーブルカードチューナーからのビデオ録画のコマーシャルの中断を特定しようとしています。これは問題なく動作しますが、必要な画面出力を取得するのに問題があります。
String stdout = null;
using (var process = new Process())
{
var start = new ProcessStartInfo(comskip, cmdLine);
start.WindowStyle = ProcessWindowStyle.Normal;
start.CreateNoWindow = true;
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
process.StartInfo = start;
process.Start();
process.WaitForExit();
stdout = process.StandardOutput.ReadToEnd();
}
stdout
アプリケーションが手動で起動されたときと同じように画面に表示されるもの(下のスクリーンショット)を取得することを期待しています。これは、アプリケーションが実行していることの継続的なフィードであり、出力に%進捗を示す行が混在しています。 、プログレスバーを更新するために使用したい
しかし、上記のコードを実行すると、次のことがわかります。
使用したコマンドラインは次のとおりです。"C:\ Users \ Chris \ Google Drive \ Tools \ ComSkip \ comskip.exe" "C:\ Users \ Chris \ Desktop \ ComSkip Tuning Files \ Modern Family.wtv" "--ini = C: \ Users \ Chris \ Desktop \ ComSkip Tuning Files \ comskip_ModernFamily.ini "
コマンドラインに従って、iniファイルをC:\ Users \ Chris \ Desktop \ ComSkip Tuning Files \ comskip_ModernFamily.iniに設定します。開始値にC:\ Users \ Chris \ Desktop \ ComSkip Tuning Files\comskip_ModernFamily.iniを使用します。
StandardError
また、ストリームをリダイレクトして取得しようとしましprocess.StandardError.ReadToEnd();
たが、これらのオプションを使用して実行すると、プロセスがハングしているように見えます。
期待しているものをキャプチャするための何かが不足していますか、それともこのアプリケーションの出力ストリームがアクセスできない別の場所に移動している可能性がありますか?