2013-03-15 164 views
0

我遇到了AviManager库的问题。我想创建一个AVI文件来存储视频,但我一直在这条线得到一个错误:Avifile32无法使用AviManager打开文件

_aviManager = new AviManager(@"c:\\Recordings\\test.avi", false); 

展望库,这种方法看起来是这样的:

public AviManager(String fileName, bool open){ 
     Avi.AVIFileInit(); 
     int result; 
     if(open){ //open existing file 

      result = Avi.AVIFileOpen(
       ref aviFile, fileName, 
       Avi.OF_READWRITE, 0); 
     }else{ //create empty file 

      result = Avi.AVIFileOpen(
       ref aviFile, fileName, 
       Avi.OF_WRITE | Avi.OF_CREATE, 0); 

     } 
     if(result != 0) { 
      throw new Exception("Exception in AVIFileOpen: "+result.ToString()); 
     } 
    } 

因为文件目前不存在,它应该输入else部分并创建一个新文件。它会创建文件,但之后崩溃,因为结果取值为-2147205009。我的问题是,它为什么这样做?

+0

您可以发布您收到的错误消息吗? – 2013-03-15 12:36:41

+0

AVIFileOpen中的异常:-2147205009 – LaCartouche 2013-03-15 12:41:49

回答

0

我有同样的问题,这是由于我的情况造成一个​​流没有正确处置(所以一旦打开“* .avi”文件被锁定,然后每次下一次打开尝试结束了这个错误)。

为了避免这种情况,请确保您关闭/处置按正确的顺序中的所有对象AVI: 正确:

aviManager.Close(); 
newStream.GetFrameClose(); 

,并删除所有“归零”像aviManager = NULL;等等(它在我的机器上造成了一些随机问题)。

希望有所帮助。

0

问题可能在路径中。在创建test.avi文件之前创建了文件夹C:\Recordings?尝试先在系统中创建的路径:(使用“\\”加上“@”是不必要的,因为反斜线在任何一种方式转义)

if(!Directory.Exists(path)) 
    Directory.CreateDirectory(path); 

path = @"c:\Recordings"