В настоящее время я использую AVIWriter от Aforge с таймером, который добавляет кадр в файл avi:
writer = new AVIWriter("MSVC");
writer.Open("test.avi", 400, 400);
Bitmap b = new Bitmap(width, height);
Graphics g = Graphics.FromImage(b);
IntPtr hdc = g.GetHdc();
bool result = PrintWindow((IntPtr)observedProcess.MainWindowHandle, hdc, 0);
g.ReleaseHdc();
g.Flush();
Bitmap resized = ResizeImage(b, 400, 400);
writer.AddFrame(resized);