}
//线程
UINT WINAPI CZRSCapDlg::ThreadFunc(LPVOID pParam){CZRSCapDlg *pDlg = (CZRSCapDlg *)pParam;//使用pDlg引用全局的变量或函数,这些变量和函数最好的独有使用
}
本人的使用:
UINT WINAPI CZRSCapDlg::ThreadFunc(LPVOID pParam){CZRSCapDlg *pDlg = (CZRSCapDlg *)pParam;int yuv,mp4;av_register_all();avdevice_register_all();char* yuvName = NULL;char* mp4Name = NULL;if(pDlg->m_Order == "orderStart"){CString strDir,strName;strDir = pDlg->m_filePath;if(strDir.Right(1) != "//")strDir += "//";strDir = strDir + pDlg->m_StudentID;pDlg->m_StudentMP4Name = strDir;if (!PathIsDirectory(strDir)){CreateDirectory(strDir, 0);//不存在则创建}strDir += "//";std::vector<CString> fileList;CFileFind f; BOOL bFind=f.FindFile(strDir+pDlg->m_StudentID+"*.zrv"); while(bFind) {bFind = f.FindNextFile(); CString fileNum ,filename;filename = f.GetFileName();filename.Trim();filename = filename.Left(filename.GetLength()-4);fileNum = filename.Right(2);fileList.push_back(fileNum); } f.Close();sort(fileList.begin(), fileList.end(), SortbyNumASC);if(fileList.size()>0)strName = fileList.at(fileList.size()-1);if(strName != ""){CString strStuID;CString yuvNameTemp, mp4NameTemp;strStuID = strName;int strStuNum = atoi(strStuID);int i;for(i=1;i<=pDlg->m_ScreenCounts;i++){ strStuNum++;if(i!=pDlg->m_ScreenCounts){pDlg->m_FreamCount = 300*10;//1分钟转换一次}else{pDlg->m_FreamCount = pDlg->m_Time%300*10;}pDlg->m_flagCount = i;CString str;if(strStuNum < 10)str.Format("0%d",strStuNum);elsestr.Format("%d",strStuNum);yuvNameTemp = pDlg->m_StudentID;mp4NameTemp = pDlg->m_StudentID;yuvNameTemp = yuvNameTemp + str + ".yuv";mp4NameTemp = mp4NameTemp + str + ".mp4";yuvNameTemp = strDir + yuvNameTemp;mp4NameTemp = strDir + mp4NameTemp;yuvName = (char*)(LPCTSTR)yuvNameTemp;mp4Name = (char*)(LPCTSTR)mp4NameTemp;yuv = pDlg->screen_to_yuv420p(yuvName);if(yuv != 0){return -1;}mp4 = pDlg->yuv420p_to_mp4(yuvName,mp4Name);if(mp4 != 0){return -1;}DeleteFile(yuvNameTemp);//修改文件名CFileFind find;CString newName;newName = mp4NameTemp.Left(mp4NameTemp.GetLength()-4);newName = newName + ".zrv";MoveFile(mp4NameTemp,newName);}//pDlg->m_FreamCount = 0;//pDlg->m_ScreenCounts = 0;pDlg->zipMP4File();}else{int i;CString yuvNameTemp, mp4NameTemp;for(i=1;i<=pDlg->m_ScreenCounts;i++){ if(i!=pDlg->m_ScreenCounts){pDlg->m_FreamCount = 300*10;//5分钟转换一次}else{pDlg->m_FreamCount = pDlg->m_Time%300*10;}pDlg->m_flagCount = i;CString str;if(i < 10)str.Format("0%d",i);elsestr.Format("%d",i);yuvNameTemp = pDlg->m_StudentID;mp4NameTemp = pDlg->m_StudentID;yuvNameTemp = yuvNameTemp + str + ".yuv";mp4NameTemp = mp4NameTemp + str + ".mp4";yuvNameTemp = strDir + yuvNameTemp;mp4NameTemp = strDir + mp4NameTemp;yuvName = (char*)(LPCTSTR)yuvNameTemp;mp4Name = (char*)(LPCTSTR)mp4NameTemp;yuv = pDlg->screen_to_yuv420p(yuvName);if(yuv != 0){return -1;}mp4 = pDlg->yuv420p_to_mp4(yuvName,mp4Name);if(mp4 != 0){return -1;}//pDlg->m_StudentMP4Name = mp4NameTemp;//pDlg->OnBnClickedZipButton();DeleteFile(yuvNameTemp);//DeleteFile(mp4NameTemp);//修改文件名CFileFind find;CString newName;newName = mp4NameTemp.Left(mp4NameTemp.GetLength()-4);newName = newName + ".zrv";//find.FindFile(mp4NameTemp);//find.GetFileName();MoveFile(mp4NameTemp,newName);}//pDlg->m_FreamCount = 0;//pDlg->m_ScreenCounts = 0;pDlg->zipMP4File();}}return 0;}
新闻热点
疑难解答