質問

WindowsXP-Machineで簡単なQProcess-Projectを使用しています:

QString program = "U:\\ffmpeg.exe";
QStringList arguments;
arguments << "-i" << "U:\\clock.avi" << "U:\\tmp_jpeg\\foo-%03d.jpeg";

process.setStandardOutputFile("U:\\log.txt", QIODevice::Append);
process.start(program, arguments);

プロセスは正常に機能し、ffmpegは必要なすべてのファイルを作成します。ただし、ログファイルは完全に空のままです。同じことがqDebug()で標準出力を書きたいときに起こります... なぜこれが起こり、どうすれば修正できますか?

役に立ちましたか?

解決

これは、通常、プロセスが次の2つのファイルに印刷されるために発生します。「標準出力」ファイルと「標準エラー」ファイル。プログラマは、出力するファイルを手動で決定できます( std :: cout および std :: cerr からアクセスします)。経験則では、プログラムの実際の結果を標準出力に出力し、エラー、診断などの標準エラー出力に出力します。

ffmpegを実行すると、stdoutに何も印刷されず(おそらく、エンコードされたファイルが印刷される特殊モード用に予約する)、すべてのテキストメッセージがstderrに印刷されます。したがって、キャプチャするには setStandardErrorFile() 関数を使用する必要があります出力。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top