下面将两个AVI文件合并成一个文件的代码错在哪了?

时间:2021-01-01 20:09:49
//下面是一段将两个avi文件合并为一个文件的代码,麻烦各位看看究竟错在哪了? 
//变异提示为:error C2146: syntax error : missing ';' before identifier 'pfile1'
                        error C2501: 'PAVIFILE' : missing storage-class or type specifiers
                        fatal error C1004: unexpected end of file found
                        Error executing cl.exe.

PAVIFILE  pfile1, pfile2, pfile3;                                                                            
AVIFILEINFO  pfi;                                                    
PAVISTREAM   pavi1,   pavi2;
AVISTREAMINFO  strhdr;  
BITMAPINFOHEADER   bi;                      
LONG  lStreamStart;  
LONG  lStreamSize;  
LPVOID  lpData1;                         
LPVOID  lpData2;    

//initializes the AVIFile library,同AVIFileExit()对应。    
//Call AVIFileInit() before using any other AVIFile functions            
AVIFileInit();    
AVIFileOpen(&pfile1,   "a.avi ",OF_READ ¦OF_SHARE_DENY_NONE,NULL);                              
AVIFileOpen(&pfile2,   "b.avi ",OF_READ ¦OF_SHARE_DENY_NONE,NULL);                                  
AVIFileGetStream(pfile1,&pavi1,streamtypeVIDEO,0);                                    
AVIFileGetStream(pfile2,&pavi2,streamtypeVIDEO,0);                      
AVIFileOpen(&pfile3, "c.avi ",OF_WRITE ¦OF_CREATE,NULL);                      
PAVIFILE  pf;    
AVIStreamFormatSize(pavi1,0,&lStreamSize);                        
 
lStreamSize=sizeof(bi);                      
AVIStreamReadFormat(pavi1,0,&bi,&lStreamSize);//Read format                      

AVIStreamInfo(pavi1,&strhdr,sizeof(strhdr));  
AVIFileCreateStream(pfile3,&pavi3,&strhdr);  

//Set format of new stream using AVIStreamSetFormat.  
AVIStreamSetFormat(pavi3,0,&bi,sizeof(bi));    
//Allocate memory for the bitmaps.  
lStreamStart=AVIStreamStart(pavi1);      
lStreamSize=AVIStreamLength(pavi1);      
lpData1=GlobalAllocPtr(GMEM_MOVEABLE,bi.biSizeImage*lStreamSize);        
AVIStreamRead(pavi1,lStreamStart,lStreamSize,lpData1,bi.biSizeImage*lStreamSize,NULL,NULL);  
AVIStreamWrite(pavi3,lStreamStart,lStreamSize,lpData1,
               bi.biSizeImage*lStreamSize,AVIIF_KEYFRAME,NULL,NULL);  
int pos=AVIStreamEnd(pavi1);
    lStreamStart=AVIStreamStart(pavi2);
    lStreamSize=AVIStreamLength(pavi2);

lpData2=GlobalAllocPtr(GMEM_MOVEABLE,bi.biSizeImage*lStreamSize);        
AVIStreamRead(pavi2,lStreamStart,lStreamSize,lpData1,bi.biSizeImage*lStreamSize,NULL,NULL);  
AVIStreamWrite(pavi3,pos,lStreamSize,lpData1,
              bi.biSizeImage*lStreamSize,AVIIF_KEYFRAME,NULL,NULL);  

AVIStreamRelease(pavi1);      
AVIStreamRelease(pavi2);
AVIStreamRelease(pavi3);  
AVIFileRelease(pfile1);  
AVIFileRelease(pfile2);  
AVIFileRelease(pfile3);   

6 个解决方案

#1


PAVIFILE 不认,它是在哪个头文件定义的,包含那个头文件

#2


不懂 友情up

#3


查了很多东西,都说是应该包含vfw.h,但包含后问题依旧啊,急!

麻烦各路高手好好研究下,这个问题好像困扰了很多人。。。。谢谢!

#4


变异提示为:error C2146: syntax error : missing ';' before identifier 'pfile1'
  error C2501: 'PAVIFILE' : missing storage-class or type specifiers
  fatal error C1004: unexpected end of file found
  Error executing cl.exe.

这句说的挺清楚了,类型丢失。一般是类型未声明

#5


再顶下,高手都看过来撒。。。。修改修改。。。。

#6


你搜索整个工程,看哪里定义了 PAVIFILE, 把它include进来就可以了。 这是个很简单也很常见的小问题。

#1


PAVIFILE 不认,它是在哪个头文件定义的,包含那个头文件

#2


不懂 友情up

#3


查了很多东西,都说是应该包含vfw.h,但包含后问题依旧啊,急!

麻烦各路高手好好研究下,这个问题好像困扰了很多人。。。。谢谢!

#4


变异提示为:error C2146: syntax error : missing ';' before identifier 'pfile1'
  error C2501: 'PAVIFILE' : missing storage-class or type specifiers
  fatal error C1004: unexpected end of file found
  Error executing cl.exe.

这句说的挺清楚了,类型丢失。一般是类型未声明

#5


再顶下,高手都看过来撒。。。。修改修改。。。。

#6


你搜索整个工程,看哪里定义了 PAVIFILE, 把它include进来就可以了。 这是个很简单也很常见的小问题。