2013-04-20 40 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