문제

WindowsXP-Machine에서 간단한 QProcess-Project를 사용하고 있습니다.

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). 경험의 규칙은 프로그램의 실제 결과를 stdout으로 인쇄하고 오류, 진단 등을 stderr로 인쇄하는 것입니다.

나는 ffmpeg를 실행하면 stdout에 아무것도 인쇄하지 않으며 (아마도, 아마도 인코딩 된 파일이 인쇄되는 특별 모드를 위해 그것을 예약) 모든 문자 메시지는 stderr에 인쇄됩니다. 그래서 당신은 사용해야합니다 setStandardErrorFile() 출력을 캡처하는 기능.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top