求助:视频的存储问题
我现在在做视频存储的工作,点击“保存”按钮对摄像头采集的视频进行算法处理后以AVI的格式存储到硬盘中,保存按钮函数的内容是:void CShowStreamDlg::OnBaocun()
{
CString filename;
CFileDialog FileDlg(FALSE,_T("avi"));
if(FileDlg.DoModal()==IDOK)
{
ilename=FileDlg.GetPathName();
nFrames=0;
m_bIsbaocun=true;
}
}
下面是回调函数里的内容,但是保存成AVI视频文件时,文件占存储空间,但是打不开,用暴风影音打开提示说文件头不完整,不是标准的视频文件。
我个人觉得可能是这个函数的参数设置的不对AVIStreamSetFormat(ps,nFrames,&(OutHeader),sizeof(OutHeader));您看能不能给我指点指点,学生感激不尽!
if(m_bIsbaocun==true)
{
if(nFrames==0)
{
AVIFileInit();
AVIFileOpen(&pfile,filename,OF_WRITE|OF_CREATE,NULL);
memset(&strhdr,0,sizeof(strhdr));
strhdr.fccType=streamtypeVIDEO;
strhdr.fccHandler=0;
strhdr.dwScale=1;
strhdr.dwRate=25;
strhdr.dwSuggestedBufferSize=pInfo->bmiHeader.biSizeImage;
SetRect(&strhdr.rcFrame,0,0,pInfo->bmiHeader.biWidth,pInfo->bmiHeader.biHeight);
AVIFileCreateStream(pfile,&ps,&strhdr);
}
AVIStreamSetFormat(ps,nFrames,&(OutHeader),sizeof(OutHeader));
AVIStreamWrite(ps,nFrames,1,(LPBYTE)GrayImage,OutHeader.biSizeImage,AVIIF_KEYFRAME,NULL,NULL);
nFrames++;
}
if(m_bIstingzhibaocun==true)
{
AVIStreamClose(ps);
if(pfile!=NULL)
AVIFileExit();
MessageBox("保存成功");
m_bIsbaocun=false;
m_bIstingzhibaocun=false;
}