Avifile32,不能用AviManager打开文件
本文关键字:文件 AviManager 不能 Avifile32 | 更新日期: 2023-09-27 18:04:08
我正面临着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
。我的问题是,它为什么会这样?
我也遇到了同样的问题,这是由于流没有被正确处理(所以一旦打开"* ")。Avi "文件被锁定,然后每次打开尝试都以此错误结束)。
为了避免这种情况,请确保您以正确的顺序关闭/处置所有AVI对象:正确的:
aviManager.Close();
newStream.GetFrameClose();
,并删除所有的"null ",如aviManager=null;等等,从代码的末尾开始(它在我的机器上引起了一些随机问题)。
希望对你有帮助。
问题可能出在路径上。在创建"test.avi
"文件之前是否已经创建了"C:'Recordings
"文件夹?尝试先在系统中创建路径:
if(!Directory.Exists(path))
Directory.CreateDirectory(path);
,
path = @"c:'Recordings"
(不需要将"''"answers"@"一起使用,因为反斜杠会被转义。)