У меня проблема при записи активности экрана с 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.
Спасибо за вашу помощь.