Вопрос

Я использую простой QProcess-Project на WindowsXP-машине:

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 () ... Почему это происходит и как я могу это исправить?

Это было полезно?

Решение

Это происходит потому, что обычно процесс печати выполняется в два файла: " стандартный вывод " файл и "стандартная ошибка" файл. Программист может вручную решить, в какой файл выводить данные (доступ к ним осуществляется через std :: cout и std :: cerr ). Основное правило - печатать, чтобы выводить реальный результат программы, а на stderr - ошибки, диагностику и т. Д.

Я запускаю ffmpeg, и так получилось, что он ничего не печатает на стандартный вывод (возможно, зарезервировав его для специального режима, в котором там печатается закодированный файл), и все текстовые сообщения печатаются на стандартный вывод. Поэтому вы должны использовать функцию setStandardErrorFile () выход.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top