2013-03-15 55 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"