bmp转avi

boshikeji 2010-10-15 03:00:29
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文件还是未压缩的呢,我已经配置了压缩编码。
...全文
91 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gusto 2010-10-15
  • 打赏
  • 举报
回复
网上抄的代码都没看的吧。。 opts[0] 本来是设置压缩的,你填东西后后面根本没有用这个嘛。。你都可以删掉这些行了。。怎么可能压缩?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧