在我的主進程中,我使用CreateProcess(...)創建了一個ffmpeg子進程。 我需要跟蹤轉換進度以更新進度條的狀態。爲此,我從ffmpeg輸出中讀取文本並從中提取進度狀態。FFmpeg progress track visual C++
我做一個樣品PROGRAMM這樣的:
HANDLE rPipe, wPipe;
CreatePipe(&rPipe,&wPipe,&secattr,0);
STARTUPINFO sInfo;
ZeroMemory(&sInfo,sizeof(sInfo));
PROCESS_INFORMATION pInfo;
ZeroMemory(&pInfo,sizeof(pInfo));
sInfo.cb=sizeof(sInfo);
sInfo.dwFlags=STARTF_USESTDHANDLES;
sInfo.hStdInput=NULL;
sInfo.hStdOutput=wPipe;
sInfo.hStdError=wPipe;
// pStr contain ffmpeg command
CreateProcess(0,(LPTSTR)pStr,0,0,TRUE,NORMAL_PRIORITY_CLASS|CREATE_NO_WINDOW,0,0,&sInfo,&pInfo);
CloseHandle(wPipe);
BOOL ok;
do
{
memset(buf,0,bufsize);
ok=::ReadFile(rPipe,buf,100,&reDword,0);
result += buf;
}while(ok);
但我不能得到 「結果」 交互式更新。我的應用程序在轉換過程中保持不變,只有在ffmpeg的過程完成後纔會更新「結果」字符串。
我怎樣才能讓我的主進程和ffmpeg同時運行,並交互地讀/寫ffmpeg進程的輸出/輸入?
謝謝你的時間!
邏輯資源