用Opencv VideoWriter函数得到的视频没有总帧数,在播放时给进度条设置带来很大的麻烦
int main()
{
Size videoSize=Size(640, 480);
string videoPath3="D:\\videoRecordMP42.avi";
int fourcc3=CV_FOURCC('M', 'P', '4', '2');
float fpsInput=24; // 帧率
float pauseInput=1000/fpsInput; // 帧间隔
VideoWriter videoOutput3(videoPath3,fourcc3,fpsInput,videoSize,true);
cv::Mat image;
while (1)
{
if(socketMat.receive(image) > 0)
{
videoOutput3<<image;
cv::imshow("",image);
char c = cv::waitKey(pauseInput);
if( c == 27 ) break;
}
}
socketMat.socketDisconnect();
return 0;
}
-----------------俺是分割线-------------------------------------------------------
以上是段网络视频传输的代码,其它一切正常,但视频完成后,avi文件没有总帧数(我用其它代码测试过,正常的AVI文件帧率和总帧数都会有,但用opencv生成的avi文件就是没有总帧数),在后续的播放代码中,以下函数
VideoCapture capture;
capture.open(vPath);
int aaa=(int)capture.get(CV_CAP_PROP_FRAME_COUNT);
取出的值,aaa为0,这样就没有办法设置滑动条的取值范围,当然,你可以说用while可以得到总帧数,我也是这样做的,
但问题是,在后续的ontime中无法获得视频文件当前的实时pos值,请问各位大神,有什么办法在生成avi文件时,设置它的总帧数呢?