Domanda

Sto usando un semplice QProcess-Project su una macchina 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);

Il processo funziona bene, ffmpeg crea tutti i file che voglio. Ma il file di registro rimane completamente vuoto. Lo stesso succede quando voglio scrivere l'output standard su qDebug () ... Perché succede e come posso ripararlo?

È stato utile?

Soluzione

Ciò accade perché in genere i processi vengono stampati in due file: "output standard" file e "errore standard" file. Il programmatore può decidere manualmente a quale file eseguire l'output (sono accessibili tramite std :: cout e std :: cerr ). La regola empirica è stampare su stdout il risultato effettivo del programma e su stderr: errori, diagnostica, ecc.

Eseguo ffmpeg e succede così, che non stampa nulla su stdout (probabilmente, riservandolo per la modalità speciale, dove viene stampato il file codificato) e tutti i messaggi di testo vengono stampati su stderr. Quindi dovresti usare la funzione setStandardErrorFile () per catturare l'output.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top