2013-04-20 69 views
0

我已經寫了一段代碼,應該創建一個列表中的avi文件。AForge AVI作家例外

// instantiate AVI writer, use WMV3 codec 
     internal static AVIWriter writer = new AVIWriter("wmv3"); 
     private static List<Bitmap> imgList = new List<Bitmap>(); 

     internal static void SaveFile() 
     { 
      var list = imgList; 
      imgList = default(List<Bitmap>); 

      // create new AVI file and open it 
      writer.Open(@"d:\test.avi", 640, 480); 
      foreach (Bitmap b in list) 
      { 
       writer.AddFrame(b); 
      } 
      writer.Close(); 
     } 

Unfortubately,我得到在nullreference例外「的foreach(在列表位圖二)」 但是當我調試,並放置在writer.Close()斷點時,這錯誤僅觸發後,我居然通過該斷點。

所以我很困惑,有誰知道這裏發生了什麼?

回答

0

不完全確定你的程序爲什麼會在2個不同的點上遇到相同的異常。我最好的猜測是它與native interop沒有與託管代碼同步有關。

您是否嘗試過引用AForge源代碼而不是二進制文件?這可以讓你指出錯誤發生的確切位置。

現在我建議你檢查任何空值的位圖列表或更新到最新的AForge(也許這是一個框架錯誤)。我也建議你嘗試幾種不同的編解碼器(不要問爲什麼)。

+0

好的,謝謝你的建議,我會給他們一個鏡頭。 – user2303251 2013-04-21 15:01:15

+0

嗯,當我嘗試使用FFMPEG庫時,它以某種方式設法拋出一個異常,甚至在訪問與ffmpeg有關的任何代碼之前(將代碼放置在imgList中的代碼完全不相關) – user2303251 2013-04-21 15:42:38

+0

我可以建議你溝渠峽谷。根據我的經驗,處理這樣的東西太不穩定(在這方面)。請嘗試使用EmguCV中的視頻編寫器類。更好的是,將所有的視頻幀轉儲到臨時目錄,並直接調用FFMpeg(通過命令行參數)將它們全部結合起來(只是谷歌參數)。 – CMJ 2013-04-23 19:49:59