Запись активности экрана с SharpAvi - PullRequest
0 голосов
/ 08 июня 2018

У меня проблема при записи активности экрана с SharpAvi, вот мой код:

    SharpAvi.Output.AviWriter aviW = new SharpAvi.Output.AviWriter(videoRecorderFileLocation);
    SharpAvi.Output.IAviVideoStream streamAVI = aviW.AddVideoStream(500, 300, SharpAvi.BitsPerPixel.Bpp32);
    streamAVI.Codec = SharpAvi.KnownFourCCs.Codecs.MicrosoftMpeg4V3;

По таймеру каждые 40 мс я записываю изображение, подобное этому:

        System.Drawing.Bitmap image = new System.Drawing.Bitmap(500, 300, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
        System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(image);
        g.CopyFromScreen(0, 0, 0, 0, new System.Drawing.Size(500, 300), System.Drawing.CopyPixelOperation.SourceCopy);

        using (MemoryStream ms = new MemoryStream())
        {
            image.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
            streamAVI.WriteFrame(true, // is key frame? (many codecs use concept of key frames, for others - all frames are keys)
                  ms.ToArray(), // array with frame data
                  0, // starting index in the array
                  ms.ToArray().Length // length of the data
            );
        }

        videoRecorderTimer.Start();

И я закрываю видео с помощью

        videoRecorderTimer.Stop();
        aviW.Close();

Видеофайл создан правильно, но в нем нет изображений (или черные изображения), когда я читаю его с помощью VLC.

Спасибо за вашу помощь.

...