我看了以前的帖子,然后仿照duwenyong(啸海)给的例子写了一段代码,但是总是出错,我跟踪了一下,就在下面这句有问题了
pData = (unsigned char *)AVIStreamGetFrame(pg,mFrame);
好像pData里面没有得到数据啊。然后
myfile.Write(pData,cx*cy*3);就有问题了。pData是这样定义的
unsigned char *pData.而且已经给它分配过空间了。
这是为什么啊?老板催着要,大家帮忙啊!
pData = (unsigned char *)AVIStreamGetFrame(pg,mFrame);
好像pData里面没有得到数据啊。然后
myfile.Write(pData,cx*cy*3);就有问题了。pData是这样定义的
unsigned char *pData.而且已经给它分配过空间了。
这是为什么啊?老板催着要,大家帮忙啊!
解决方案 »
- 【求助】提取心电数据峰值问题
- 关于主线程实时获取子线程进度的问题。
- 对话框的 app类的InitInstance()看不明白,请教了.我加了很多 messagebox()函数,为何永远执行不到呢?
- 散分了!
- 超难(N多天了,没有解决)数据库方面的专家请进
- CSplitterWnd的Create和CreateView的问题急急急分还可以加我急我急我急
- 进来看看这四个函数十什么意思,它们之间怎样运用???
- 用MFC 编写的 一段简单的MP3播放器 编译出现下面错误 希望高手解决!
- 32位的com组件能否被64位程序使用?
- 平滑处理,模板为3乘3,算法有点不明白
- 用DirectSound在窗口中播放声音,可当窗口失去焦点后却不播放了,要想让它继续播放怎么办?
- Rebar的消息响应问题
BOOL CAcitveMovie::aviRead(int mFrame)
{
CAviCreate(TotalFileName);
PGETFRAME pg = AVIStreamGetFrameOpen(pavi,&(m_pBMI->bmiHeader));
pData = (unsigned char *)AVIStreamGetFrame(pg,mFrame);
CFile mypdata; CClientDC dc(this);
CRect rect;
GetClientRect(&rect);
StretchDIBits(HDC(dc),0,500,rect.right,rect.bottom,0,0,cx,cy,pData,(BITMAPINFO*)
m_pBMI,DIB_RGB_COLORS,SRCCOPY);
fileinfo = new BITMAPFILEHEADER;
CFile myfile;
myfile.Open("e:\\123.bmp",CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);
myfile.Write(fileinfo,sizeof(BITMAPFILEHEADER));
myfile.Write(m_pBMI,sizeof(BITMAPINFOHEADER));
//执行到下面这句就出错了
myfile.Write(pData,cx*cy*3+sizeof(BITMAPINFOHEADER));
myfile.Close();
AVIStreamGetFrameClose(pg);
AVIFileRelease(pfile); return TRUE;
}
void CAcitveMovie::CAviCreate(CString &string)
{
HRESULT hr;
pfi = new AVIFILEINFO;
AVIFileInit();
hr = AVIFileOpen(&pfile,string,OF_READ,NULL);
hr = AVIFileInfo(pfile,pfi,sizeof(AVIFILEINFO));
cx = pfi->dwWidth;
cy = pfi->dwHeight;
hr = AVIFileGetStream(pfile,&pavi,streamtypeVIDEO,0);
AVIStreamInfo(pavi,&psi,sizeof(AVISTREAMINFO)); m_pBMI = new BITMAPINFO;
m_pBMI->bmiHeader.biBitCount = 24;
m_pBMI->bmiHeader.biClrImportant = 0;
m_pBMI->bmiHeader.biClrUsed=0;
m_pBMI->bmiHeader.biCompression=0;
m_pBMI->bmiHeader.biHeight=cy;
m_pBMI->bmiHeader.biWidth=cx;
m_pBMI->bmiHeader.biPlanes=1;
m_pBMI->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
m_pBMI->bmiHeader.biSizeImage=((cx*24+31)/32*4)*cy;
m_pBMI->bmiHeader.biXPelsPerMeter=0;
m_pBMI->bmiHeader.biYPelsPerMeter=0;
handle=GlobalAlloc(GHND,((long)((cx*24+31)/32*4)*cy));
pData=(BYTE *)GlobalLock(handle);
}
thank u!
我应该没有装什么avi解码器,我是从别人的avi文件中要得到bmp图象。