0

我遇到了 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部分,新建一个文件。它创建文件,但随后崩溃,因为结果采用了 value -2147205009。我的问题是,它为什么要这样做?

4

2 回答 2

0

我遇到了同样的问题,这在我的情况下是由未正确处理的流引起的(因此一旦打开“* .avi”文件就被锁定,然后每次打开尝试都以这个错误结束)。

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

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

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

希望有帮助。

于 2013-10-22T13:08:57.607 回答
0

问题可能出在路径上。文件夹C:\Recordings是在创建test.avi文件之前创建的吗?尝试先在系统中创建路径:

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

在哪里

path = @"c:\Recordings"

(使用“\\”和“@”是不必要的,因为反斜杠以任何一种方式都被转义了。)

于 2015-09-04T13:56:25.210 回答