Question

J'utilise un simple projet QProcess sur une machine 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);

Le processus fonctionne correctement, ffmpeg crée tous les fichiers que je veux. Mais le log-File reste complètement vide. La même chose se produit lorsque je veux écrire la sortie standard à qDebug () ... Pourquoi cela se produit-il et comment puis-je résoudre le problème?

Était-ce utile?

La solution

Cela se produit car, en règle générale, les processus d'impression dans deux fichiers: "sortie standard" " fichier et " erreur type " fichier. Le programmeur peut choisir manuellement le fichier vers lequel il doit sortir (on y accède via std :: cout et std :: cerr ). La règle empirique consiste à imprimer sur stdout le résultat réel du programme et stderr - erreurs, diagnostics, etc.

J'exécute ffmpeg et il se trouve qu'il n'affiche rien sur stdout (probablement en le réservant pour le mode spécial, où le fichier codé est imprimé ici) et tous les messages texte sont imprimés sur stderr. Vous devez donc utiliser la fonction setStandardErrorFile () pour capturer la sortie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top