2016-06-21 600 views
0

我试图将一个给定目录中的所有PNG图像转换为一个AVI文件,但我内存不足。目前我的目录中没有超过20张图像,即4GB的内存。但我仍然收到这个错误。我错过了什么?将PNG图像转换为视频

这里是我当前的代码:

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(); 
      } 

回答

2

在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(); 
} 
1

Directory.EnumerateFiles是懒惰的评估。并且您正在将视频文件写入源位于的相同文件夹中。这意味着您的输出文件也将被枚举。这将导致视频文件被传递给图像加载器。

尝试通过扩展名输出到不同的文件夹或筛选文件。