我遇到了AviManager库的问题。我想创建一个AVI文件来存储视频,但我在这一行上一直收到错误:
_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)
我遇到了同样的问题,这是因为我的情况是由于流没有正确处理(因此一旦打开,“* .avi”文件就会被锁定,然后每次下一次打开尝试都会出现此错误)。
为避免这种情况,请确保以正确的顺序关闭/处置所有AVI对象: 正确:
aviManager.Close();
newStream.GetFrameClose();
并删除所有“nulling”,如aviManager = null;从代码的末尾开始(它在我的机器上引起了一些随机问题)。
希望有所帮助。
答案 1 :(得分:0)
问题可能在路径上。在创建C:\Recordings
文件之前是否创建了文件夹test.avi
?首先尝试在系统中创建路径:
if(!Directory.Exists(path))
Directory.CreateDirectory(path);
其中
path = @"c:\Recordings"
(使用" \\"和#34; @"是不必要的,因为反斜杠以任何一种方式转义。)