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。我的问题是,它为什么会这样?

Avifile32,不能用AviManager打开文件

我也遇到了同样的问题,这是由于流没有被正确处理(所以一旦打开"* ")。Avi "文件被锁定,然后每次打开尝试都以此错误结束)。

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

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

,并删除所有的"null ",如aviManager=null;等等,从代码的末尾开始(它在我的机器上引起了一些随机问题)。

希望对你有帮助。

问题可能出在路径上。在创建"test.avi"文件之前是否已经创建了"C:'Recordings"文件夹?尝试先在系统中创建路径:

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

,

path = @"c:'Recordings"

(不需要将"''"answers"@"一起使用,因为反斜杠会被转义。)