Pregunta

Estoy utilizando un proyecto QProcess simple en una máquina con Windows XP:

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);

El proceso funciona bien, ffmpeg crea todos los archivos que quiero. Pero el archivo de registro se mantiene completamente vacío. Lo mismo sucede cuando quiero escribir la salida estándar en qDebug () ... ¿Por qué sucede esto y cómo puedo solucionarlo?

¿Fue útil?

Solución

Esto sucede porque generalmente los procesos se imprimen en dos archivos: " salida estándar " archivo y " error estándar " expediente. El programador puede decidir manualmente a qué archivo enviar (se accede a través de std :: cout y std :: cerr ). La regla de oro es imprimir para mostrar el resultado real del programa, y ??para indicar errores, diagnósticos, etc.

Ejecuto ffmpeg y sucede que no se imprime nada en la salida estándar (probablemente, reservándolo para el modo especial, donde se imprime el archivo codificado), y todos los mensajes de texto se imprimen en stderr. Por lo tanto, debe utilizar la función setStandardErrorFile () para capturar la salida.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top