Magnus9998
Может быть, было бы проще захватить рабочий стол с интервальной скоростью, а затем кодировать каждое изображение в видеофайл с помощью плагина или внешней библиотеки.
Проверьте их:
http://bytescout.com/products/developer/imagetovideosdk/imagetovideosdk_first_step_with_visual_c_sharp_net.html[^]
Простая оболочка C# для библиотеки AviFile[^]
О том, как захватить ваш destop, это легко. Вы создаете растровое изображение с размером экрана, затем графику из растрового изображения, а затем копируете экран и сохраняете его:
private void TakeScreenShot()
{
Bitmap bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
Graphics gfxScreenshot = Graphics.FromImage(bmpScreenshot);
gfxScreenshot.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
//Change the ImageFormat to jpeg to save hard disk or keep it in Tiff
//for higher resolution
bmpScreenshot.Save("Dependencies\\temp.tif", ImageFormat.Tiff);
bmpScreenshot = null;
}
Вы можете адиктивно использовать внешнюю программу, такую как VirtualDub. Может быть, вы можете сделать для него сценарий и запустить его из своей программы. Я знаю, что это не тот способ, которым вы должны это сделать, но это другой способ.
Rakesh Bairi
Спасибо за ваш ответ,я ищу прямой захват как видео, а не изображение, потому что нам нужно захватывать много изображений в секунду и объединять их в видео.
Magnus9998
Проблема в том, что вы не можете захватить непосредственно в виде видео. Каждое программное обеспечение для захвата видео, включая профессиональную видеозапись, захватывает неподвижные изображения и сохраняет их во временной папке, затем объединяет их во временный файл и, наконец, объединяет все изображения и кодирует их в конечный видеофайл. Имейте в виду, что видео-это просто куча неподвижных изображений и аудио, объединенных в один файл.