将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 是惰性求值。并且您正在将视频文件写入源所在的同一文件夹中。这意味着您的输出文件也将被枚举。这将导致视频文件被传递到图像加载器。

尝试输出到不同的文件夹或按扩展名过滤文件。