Pergunta

Eu estou usando um simples QProcess-Project em um WindowsXP-Machine:

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

O processo funciona muito bem, ffmpeg cria todos os arquivos que deseja. Mas o log-File mantém completamente vazio. O mesmo acontece quando eu quero escrever o padrão da saída em qDebug () ... Por que isso acontece e como posso corrigi-lo?

Foi útil?

Solução

Isso acontece porque normalmente os processos de impressão em dois arquivos: arquivo de "saída padrão" e arquivo "erro padrão". Programador pode decidir manualmente o arquivo a saída para (eles são acessados ??via std::cout e std::cerr). A regra de ouro é para imprimir em stdout o resultado real do programa, e para stderr -. Erros, diagnósticos etc

Eu corro ffmpeg e acontece, que ele imprime nada para stdout (provavelmente, reservando-o para o modo especial, onde arquivo codificado é impresso lá), e todas as mensagens de texto são impressos no stderr. Portanto, você deve usar setStandardErrorFile() função para capturar a saída.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top