“参数无效”从avi文件获取帧时。

时间:2013-08-12 22:45:37

标签: c# avi

所以我这里有这个代码从AVI文件中提取帧,克隆它们,并将它们存储在一个数组中。几百次后,我收到一条错误消息“参数无效”。我一直在寻找答案,但所有的答案都是针对什么时候有效,但后来又不起作用。在发生此错误之前,此平均执行这些行490次。我想知道你们其中一个人是否可以告诉我这里有什么问题? 此外,file = null实际上是在代码中稍后更改为具有值,以防您认为这是我得到错误的位置。

帮助:我正在使用AForge.Video.VFW;对于AVIWriter和Reader,我在另一个线程中称之为void。

对不起,如果这还不够好。这是我在这里问过的第一个问题。

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();
}

1 个答案:

答案 0 :(得分:0)

C# "Parameter is not valid." creating new bitmap

似乎是为什么在Bitmaps上浪费了太多的内存,一次不能存储太多的位图。

你说你创建了490个位图..找出限制并停在那里或开始覆盖旧的位图