C# &引用;参数无效";从avi文件获取帧时。

C# &引用;参数无效";从avi文件获取帧时。,c#,avi,C#,Avi,我这里有一段代码,它从AVI文件中提取帧,制作它们的克隆,并将它们存储在一个数组中。几百次之后,我得到一个错误,说“参数无效”。我四处搜索了答案,但所有的答案都是针对某个东西工作过一次,然后又不工作的情况。在发生此错误之前,此命令平均执行这些行490次。我想知道你们中是否有人能告诉我这里出了什么问题? 另外,file=null实际上在代码中后来被更改为有一个值,以防您认为这就是我得到错误的地方 帮助:我正在使用一个org.Video.VFW;对于作者和读者来说,我用另一种方式称之为空虚 如果这还

我这里有一段代码,它从AVI文件中提取帧,制作它们的克隆,并将它们存储在一个数组中。几百次之后,我得到一个错误,说“参数无效”。我四处搜索了答案,但所有的答案都是针对某个东西工作过一次,然后又不工作的情况。在发生此错误之前,此命令平均执行这些行490次。我想知道你们中是否有人能告诉我这里出了什么问题? 另外,file=null实际上在代码中后来被更改为有一个值,以防您认为这就是我得到错误的地方

帮助:我正在使用一个org.Video.VFW;对于作者和读者来说,我用另一种方式称之为空虚

如果这还不够好,我很抱歉。这是我在这里问的第一个问题

AVIWriter writer = new AVIWriter("wmv3");
AVIReader reader = new AVIReader();
string file = null;
Bitmap[] AVIImages = new Bitmap[1];

int imagesProcessed = 0;
double progressValue = 0;

private void getImages()
{
    reader.Open(file);
    while (reader.Position - reader.Start < reader.Length)
    {
        Application.DoEvents();
        AVIImages[imagesProcessed] = (Bitmap)reader.GetNextFrame().Clone();
        imagesProcessed++;
        progressValue = (int)((double)imagesProcessed / (double)reader.Length * 100);
        Array.Resize(ref AVIImages, imagesProcessed + 1);
        Thread.Sleep(10);
    }
    reader.Close();
    picWaiting.Visible = false;
    lblWaiting.Text = "Done!";
    timeUpdateProgressBar.Stop();
}
AVIWriter=新的AVIWriter(“wmv3”);
AVIReader=新的AVIReader();
字符串文件=null;
位图[]AVIMAGES=新位图[1];
int imagesProcessed=0;
双进位值=0;
私有void getImages()
{
打开(文件);
while(reader.Position-reader.Start

这似乎就是为什么位图上浪费了太多内存,无法一次存储太多位图的原因


你说你创建了490个位图。。找出限制,然后停止或开始覆盖旧位图。这帮了大忙。非常感谢。我想我能做的是将帧调整为较小的大小,然后让它们一次编辑30秒。非常感谢D