有没有办法在屏幕上移动一些图像,并在它们移动时将场景记录为视频



正如您从标题中所读到的,我希望能够在屏幕上绘制一些图像,将它们向某个方向移动,并以良好的fps速率视频捕捉移动。

我想指定的是,我不想记录桌面或它的某些部分,而是记录图像移动的实际窗口的内容(因此窗口也可以最小化(。如果可能的话,我希望能够为我的视图设置一个自定义大小,在那里一切都会发生。

我应该从哪里开始?

我已经尝试过WPF,但由于UI是单线程的,我无法在视图上移动时截图。

你建议我去哪个图书馆?有没有类似的开源项目我可以借鉴?欢迎任何建议!

以下是我最近为此编写的一些代码,它在多个帧中循环,并将控件(在本例中为Canvas(渲染为PNG:

private void Export(int frame)
{
// force the control to update after any changes you've just made
theCanvas.Dispatcher.Invoke(DispatcherPriority.Render, EmptyDelegate);
// render the control into a bitmap
RenderTargetBitmap bitmap = new RenderTargetBitmap(1920, 1080, 96, 96, PixelFormats.Pbgra32);
bitmap.Render(theCanvas);
// save the bitmap out as a PNG
using (var stream = File.Create($"Animation/Frame_{frame.ToString("D3")}.png"))
{
var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmap));
encoder.Save(stream);
}
}

然后,您可以使用ffmpeg将这些PNG打包为您选择的电影文件格式。

相关内容

  • 没有找到相关文章

最新更新