我目前正在做的是:
VideoWriter
图书馆的DotImaging
对象。我撰写视频的源代码是:
private void MakeVideo()
{
var saveDialog = new SaveFileDialog { Filter = @"AVI Video(.avi)|*.avi" };
if (saveDialog.ShowDialog() == DialogResult.OK)
{
using (var videoWriter = new VideoWriter(saveDialog.FileName, new Size(_screenWidth, _screenHeight), FrameRate, true))
{
var ir = new ImageDirectoryCapture(_path, "*.jpg");
while (ir.Position < ir.Length)
{
IImage image = ir.Read();
videoWriter.Write(image);
}
videoWriter.Close();
DeleteFiles(); // Deletes The Files from hard drive
}
}
}
我想做的是:
我无法这样做,因为它直接采用目录路径而不是图像本身。
我想这样做是因为将所有图像写入硬盘驱动器然后制作视频要慢得多,DotImaging的任何替代品都很好。
或者,如果我可以将位图图像解析为VideoWriter.Write()
方法接受的IImage格式,您可以告诉我。
答案 0 :(得分:0)
有一个名为DotImaging.BitmapInterop的扩展库。
在项目中安装后,您可以编写如下内容:
IEnumerable<Bitmap> frames = GetFrames();
using (var writer = new VideoWriter(target), new Size(width, height)))
{
foreach (var bitmap in frames)
{
var imageBuffer = bitmap.ToBgr();
writer.Write(imageBuffer.Lock());
}
}