我在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创建我想要的所有文件。但是log-File保持完全为空。当我想在qDebug()处写标准输出时也会发生同样的情况...... 为什么会发生这种情况,我该如何解决?

有帮助吗?

解决方案

这是因为通常将进程打印成两个文件:“标准输出”和“标准输出”。文件和“标准错误”文件。程序员可以手动决定输出哪个文件(通过 std :: cout std :: cerr 访问它们)。经验法则是打印到stdout程序的实际结果,以及stderr - 错误,诊断等。

我运行ffmpeg,它发生了,它没有打印到stdout(可能,保留它用于特殊模式,其中打印编码文件),并且所有文本消息都打印到stderr。所以你应该使用 setStandardErrorFile() 函数来捕获输出。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top