CString BmpDir = szDir;
BmpDir+=_T("\\*.*");
AVIFileInit();
AVISTREAMINFO strhdr;
PAVIFILE pFile;
PAVISTREAM ps;
PAVISTREAM pComstream;
AVICOMPRESSOPTIONS pcompressoption;
AVICOMPRESSOPTIONS FAR * opts[1];
opts[0] = &pcompressoption;
memset(&pcompressoption,0,sizeof(pcompressoption));
int nframes=0;
CFileFind flFind;
BOOL bret = flFind.FindFile(BmpDir);
while(bret)
{
bret = flFind.FindNextFile();
if (!flFind.IsDots()&&!flFind.IsDirectory())
{
CString flname = flFind.GetFilePath();
FILE * pf=fopen(flname,"rb");
BITMAPFILEHEADER bmpFileHdr;
BITMAPINFOHEADER bmpInfoHdr;
fseek(pf,0,SEEK_SET);
fread(&bmpFileHdr,sizeof(BITMAPFILEHEADER),1,pf);
fread(&bmpInfoHdr,sizeof(BITMAPINFOHEADER),1,pf);
if (nframes==0)
{
AVIFileOpen(&pFile,szFileName,OF_WRITE|OF_CREATE,NULL);
memset(&strhdr,0,sizeof(strhdr));
strhdr.fccType = streamtypeVIDEO;
strhdr.fccHandler=0;
strhdr.dwScale = 1;
strhdr.dwRate =3;
strhdr.dwSuggestedBufferSize = bmpInfoHdr.biSizeImage;
SetRect(&strhdr.rcFrame,0,0,bmpInfoHdr.biWidth,bmpInfoHdr.biHeight);
AVIFileCreateStream(pFile,&ps,&strhdr);
opts[0]->fccType=streamtypeVIDEO;
opts[0]->fccHandler=mmioStringToFOURCC("msvc",0);
opts[0]->dwQuality = 9500;
opts[0]->dwBytesPerSecond = 0;
opts[0]->dwFlags=AVICOMPRESSF_VALID||AVICOMPRESSF_KEYFRAMES;
opts[0]->lpFormat = 0;
opts[0]->cbFormat = 0;
opts[0]->dwInterleaveEvery = 0;
int c;
c=AVIMakeCompressedStream(&pComstream,ps,&pcompressoption,NULL);
int hr;
hr=AVIStreamSetFormat(pComstream,0,&bmpInfoHdr,sizeof(BITMAPINFOHEADER));
} BYTE * buffer = new BYTE[bmpInfoHdr.biWidth * bmpInfoHdr.biHeight * 3];

fread(buffer,1,bmpInfoHdr.biWidth * bmpInfoHdr.biHeight * 3,pf);
AVIStreamWrite(pComstream,nframes,1,(LPBYTE)buffer,bmpInfoHdr.biSizeImage,AVIIF_KEYFRAME,NULL,NULL);
nframes++;
fclose(pf);
delete[]buffer;
}
}
AVIStreamClose(ps);
AVIStreamClose(pComstream);
if (pFile!=NULL)
AVIFileRelease(pFile);
AVIFileExit();
为什么生成的avi文件还是未压缩的呢,我已经配置了压缩编码。