3

我在 WindowsXP 机器上使用了一个简单的 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() 编写标准输出时也会发生同样的情况......为什么会发生这种情况,我该如何解决?

4

1 回答 1

9

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

我运行 ffmpeg 并且它发生了,它不向 stdout 打印任何内容(可能是为特殊模式保留它,在那里打印编码文件),并且所有文本消息都打印到 stderr。所以你应该使用setStandardErrorFile()函数来捕获输出。

于 2009-10-26T10:09:20.573 回答