2016-06-21 602 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是懶惰的評估。並且您正在將視頻文件寫入源位於的相同文件夾中。這意味着您的輸出文件也將被枚舉。這將導致視頻文件被傳遞給圖像加載器。

嘗試通過擴展名輸出到不同的文件夾或篩選文件。