将png图像转换为视频
Converting png images into video
我正在尝试将给定目录中的所有 png 图像转换为 avi 文件,但我 运行 内存不足。我现在目录中的图像不超过 20 个,一台 4GB 内存的 PC。但我仍然收到此错误。我错过了什么?
这是我当前的代码:
using (var writer = new VideoFileWriter())
{
writer.Open(Path.Combine(dest_path, "output.avi"), width, height, frameRate, VideoCodec.Raw);
foreach (string file in Directory.EnumerateFiles(dest_path))
{
var img = (Bitmap) Image.FromFile(file);
writer.WriteVideoFrame(img);
}
writer.Close();
}
在aForget.net论坛上说需要处理位图
访问:http://www.aforgenet.com/forum/viewtopic.php?f=2&t=2912
using (var frame = BitmapImage2Bitmap(e.ColorFrame.BitmapImage))
using (var thumb = ResizeBitmap(frame, 320, 240))
{
writer.WriteVideoFrame(thumb);
}
}
尝试:
using (var writer = new VideoFileWriter())
{
// create new video file
writer.Open(Path.Combine(dest_path, "output.avi"), width, height, frameRate, VideoCodec.Raw);
foreach (string file in Directory.EnumerateFiles(dest_path))
{
using(var img = (Bitmap) Image.FromFile(file)) {
writer.WriteVideoFrame(img);
}
}
writer.Close();
}
Directory.EnumerateFiles 是惰性求值。并且您正在将视频文件写入源所在的同一文件夹中。这意味着您的输出文件也将被枚举。这将导致视频文件被传递到图像加载器。
尝试输出到不同的文件夹或按扩展名过滤文件。
我正在尝试将给定目录中的所有 png 图像转换为 avi 文件,但我 运行 内存不足。我现在目录中的图像不超过 20 个,一台 4GB 内存的 PC。但我仍然收到此错误。我错过了什么?
这是我当前的代码:
using (var writer = new VideoFileWriter())
{
writer.Open(Path.Combine(dest_path, "output.avi"), width, height, frameRate, VideoCodec.Raw);
foreach (string file in Directory.EnumerateFiles(dest_path))
{
var img = (Bitmap) Image.FromFile(file);
writer.WriteVideoFrame(img);
}
writer.Close();
}
在aForget.net论坛上说需要处理位图
访问:http://www.aforgenet.com/forum/viewtopic.php?f=2&t=2912
using (var frame = BitmapImage2Bitmap(e.ColorFrame.BitmapImage))
using (var thumb = ResizeBitmap(frame, 320, 240))
{
writer.WriteVideoFrame(thumb);
}
}
尝试:
using (var writer = new VideoFileWriter())
{
// create new video file
writer.Open(Path.Combine(dest_path, "output.avi"), width, height, frameRate, VideoCodec.Raw);
foreach (string file in Directory.EnumerateFiles(dest_path))
{
using(var img = (Bitmap) Image.FromFile(file)) {
writer.WriteVideoFrame(img);
}
}
writer.Close();
}
Directory.EnumerateFiles 是惰性求值。并且您正在将视频文件写入源所在的同一文件夹中。这意味着您的输出文件也将被枚举。这将导致视频文件被传递到图像加载器。
尝试输出到不同的文件夹或按扩展名过滤文件。