我正在一个项目中,我需要记录屏幕一段固定的时间,然后将记录保存到.avi文件中。我发现了SharpAvi库,因此我一直在学习如何基于该库实现解决方案。但是,当我运行该程序时,.avi文件中没有任何内容(但仍会播放记录的时间)。
保存位图的方式是否有问题?我是C#的新手,所以如果无法正确提出问题,我深表歉意。
private static Bitmap SaveScreen()
{
Size s = Screen.PrimaryScreen.Bounds.Size;
Bitmap bmp = new Bitmap(s.Width, s.Height);
Graphics g = Graphics.FromImage(bmp);
g.CopyFromScreen(0, 0, 0, 0, s);
g.DrawImage(bmp, 10, 10);
return bmp;
}
public static byte[] ImageToByte(Image img)
{
ImageConverter converter = new ImageConverter();
return (byte[])converter.ConvertTo(img, typeof(byte[]));
}
static void Main(string[] args)
{
AviWriter writer = new AviWriter("test.avi")
{
FramesPerSecond = 30,
EmitIndex1 = true
};
var stream = writer.AddVideoStream();
stream.Width = 640;
stream.Height = 480;
stream.Codec = KnownFourCCs.Codecs.Uncompressed;
stream.BitsPerPixel = BitsPerPixel.Bpp32;
var frameData = new byte[stream.Width * stream.Height * 4];
while (!Console.KeyAvailable)
{
frameData = ImageToByte(SaveScreen());
stream.WriteFrame(true, frameData, 0, frameData.Length);
}
writer.Close();