0

そのため、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();
}
4

1 に答える 1

0

C#「パラメータが無効です。」新しいビットマップの作成

これは、ビットマップで大量のメモリが浪費され、一度に大量のビットマップを保存できないことが原因のようです。

あなたは 490 個のビットマップを作成すると言います.. 制限を把握し、そこで停止するか、古いビットマップの上書きを開始します。

于 2013-08-12T23:19:09.420 に答える