opencv在多线程下无法播放rtsp视频
int main()
{
/*CvCapture *capture = cvCreateFileCapture("rtsp://admin:admin123@172.24.47.47:554/h264/ch1/main/av_stream");
IplImage *frame = NULL;
while ((frame = cvQueryFrame(capture)) != NULL){
imshow("lm", (Mat)frame);
}
waitKey();*/
CLock lock(g_Lock);
HANDLE hThread;
String temp = "rtsp://admin:admin123@172.24.47.47:554/h264/ch1/main/av_stream";
for (int i = 0; i <= 1; i++) {
if ((hThread = CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)&FunProc,
&temp,
0,
NULL
)) == NULL)
{
printf("Error Creating Thread#: %d\n", i);
return(1);
}
else
{
Sleep(10);
}
CloseHandle(hThread);
}
system("pause");
}
DWORD WINAPI FunProc(
LPVOID IpParameter
)
{
test(*((String*)IpParameter));
return 0;
}
int test(String AviFileName)
{
const char* ptemp = AviFileName.c_str();
CvCapture *capture = NULL;
IplImage *frame = NULL;
capture = cvCreateFileCapture(ptemp);
cout << ptemp << endl;
while ((frame = cvQueryFrame(capture)) != NULL){
imshow(ptemp, (Mat)frame);
}
waitKey();
return 0;
}
直接播放时可以的,但放在多线程下面无法播放,然而可以播放本地视频