压缩视频并传输后,无法解压缩,怎么办???急死了!!!
视频压缩代码:char* buffer = new char [lpVHdr->dwBytesUsed+1];
//char buffer[362*288*3+1]="";
memset(buffer,10,lpVHdr->dwBytesUsed+1);
DWORD dwCkID ;
DWORD dwCompFlags ;
DWORD dwQuality = 100;
char* pout;
char*p;
long s=10000;
BOOL k;
p=(char*)ICSeqCompressFrame(&pDlg->m_Com,0,(char*)lpVHdr->lpData,&k,&s);
用TCP方式传送和接收:
传送send(sockClient,p,s+1,0);
接收: char recvBuf[10000];
memset(recvBuf,0,10000);
recv(sockConn,recvBuf,10000,0);
解压代码:BITMAPINFO m_BmpU;
BITMAPINFO m_BmpC;
COMPVARS m_cv;
HIC m_hIC;
m_hIC=NULL;
ZeroMemory(&m_cv,sizeof(m_cv));
m_cv.cbSize=sizeof(m_cv);
m_cv.dwFlags=ICMF_COMPVARS_VALID ;
m_cv.hic=m_hIC;//ICOpen(ICTYPE_VIDEO,m_cv.fccHandler,ICMODE_COMPRESS);
m_cv.fccType=ICTYPE_VIDEO ;
m_cv.fccHandler=859189837;//875967096;//mmioFOURCC('d','i','v','x');
m_cv.lpbiOut=0;//(BITMAPINFO*)&m_OutInfo;
m_cv.lKey=15;
m_cv.lDataRate=300;
m_cv.lQ=10000;
//将视频格式固定(这是非常常用的格式,一般的视频捕捉设备应该会支持)
ZeroMemory(&m_BmpU,sizeof(m_BmpU));
m_BmpU.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
m_BmpU.bmiHeader.biWidth=352;
m_BmpU.bmiHeader.biHeight=288;
m_BmpU.bmiHeader.biPlanes=1;
m_BmpU.bmiHeader.biBitCount=24;
m_BmpU.bmiHeader.biSizeImage=352*288*3;
m_hIC=ICOpen(ICTYPE_VIDEO,m_cv.fccHandler,ICMODE_COMPRESS|ICMODE_DECOMPRESS);//既可以当做压缩器也可以当做解压缩器使用
ICCompressGetFormat(m_hIC,&m_BmpU,&m_BmpC);
ICSendMessage(m_hIC,0x60c9,0xf7329ace,0xacdeaea2);
//只能用这个函数,使用ICDecompressGetFormat();不能成功
m_cv.hic=m_hIC;
m_cv.dwFlags=ICMF_COMPVARS_VALID;
ICSeqCompressFrameStart(&m_cv,&m_BmpU);//以上四句格式、顺序非常重要,一处不正确就无法成功。
long ret=ICDecompressBegin(m_cv.hic,(BITMAPINFO*)&m_BmpC,(BITMAPINFO*)&m_BmpU);
if(ret!=ICERR_OK)
{
printf("%s\n","Chu shi hua wei cheng gong");
}
DWORD flag=ICDECOMPRESS_UPDATE;
char decbuffer[352*288*3];
/**********************视频格式初始化结束*********************************/
if(!recvBuf||!decbuffer||!m_hIC)
printf("%s\n","bu cheng gong");
flag=ICDECOMPRESS_NOTKEYFRAME;
ret=ICDecompress (m_cv.hic,ICDECOMPRESS_NOTKEYFRAME ,&m_BmpC.bmiHeader,recvBuf,&m_BmpU.bmiHeader,decbuffer);
if(ret!=ICERR_OK);
{
printf("%s\n","Jie ya suo wei cheng gong");
}
视频的压缩和传输、接收都没有问题。
出错就出在解压缩这里,总是无法将数据解压缩出来。无论flag设置为0还是设置为ICDECOMPRESS_NOTKEYFRAME都不行
这是怎么回事啊?怎么解决???谢谢啦!