2013-03-15 7 views
0

AviManager 라이브러리에 문제가 있습니다. 내가 비디오를 저장하는 AVI 파일을 만들려면,하지만이 줄에 오류가 점점 계속 : Aviile32, 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

받고있는 오류 메시지를 게시 할 수 있습니까? –

+0

AVIFileOpen의 예외 : -2147205009 – LaCartouche

답변

0

동일한 문제가 발생하여 스트림이 제대로 처리되지 않아서 발생했습니다. 따라서 한 번 열면 "* .avi"파일이 잠기고 다음 번 시도가 끝날 때마다이 오류가 발생합니다.

것은 그 확인하십시오 피하기 위해 당신 가까이/올바른 순서로 모든 AVI 오브젝트를 처리 : 올바른 :

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

을 또한 aviManager = null이 같은 모든 "널링"를 제거; 코드의 끝에서 (내 컴퓨터에서 임의의 문제가 발생했습니다).

희망이 있습니다.

0

문제가 경로에 있습니다. test.avi 파일을 만들기 전에 폴더 C:\Recordings이 생성 되었습니까? 먼저 시스템의 경로를 만들어보십시오 : (. 백 슬래시는 어느 방법으로 탈출되어 있기 때문에 사용 "\\"함께 "@"로, 불필요)

path = @"c:\Recordings" 

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