2011-02-07 35 views
1

我目前正在开发一个WPF应用程序,其中一个控件显示图像流;很像任何摄像头。这些图像源自IP摄像机,只能通过HTTP Url访问,该URL是固定的,并且始终相同。现在捕捉图像是没有问题的,通过显示IPcam的图像流

BitmapImage bitmapImage = new BitmapImage(); 

    bitmapImage.BeginInit(); 
    bitmapImage.UriSource = uri; 
    bitmapImage.CacheOption = BitmapCacheOption.None; 
    bitmapImage.CreateOptions = BitmapCreateOptions.IgnoreImageCache; 
    bitmapImage.EndInit(); 

    return bitmapImage; 

这很有效。当我尝试连接多台摄像机(超过6台)时,出现问题,应用程序窒息并最终崩溃。所有摄像头都在一个单独的线程上运行。

我已经发现了一个基本问题:创建一个(高级?)位图会消耗太多资源,因为我需要该应用程序最终实时处理约600幅图像/秒(约30Mb /秒)。

简而言之,我正在寻找一种方法使这个检索/渲染过程更加高效。

提前致谢!

UPDATE:

忘记也许提,即时通讯在.NET 4 WPF工作,相机本身是一个MOBOTIX M12,通过以太网访问。

+1

我知道Mobotix,也在WPF中使用.Net 4。有类似的问题。 – Nasenbaer

+0

@Nasenbaer:你有没有设法解决它们? – rumblefx0

+1

在我的情况下,我可以通过添加一个自己的UI类来以更少的时间间隔更新图像来解决这个问题。我使用了内存转换器,因为在内部我正在使用ImageSource的默认位图进行额外的工作。也看看垃圾收集器'GC.Collect'。在你的情况下做什么记忆?在我的情况下,所有工作。但情况与你的情况不同。我还没有几款Mobotix相机进行测试:-)如果您想分享您的代码,我可以尝试通过SVN或FTP解决您的问题。 – Nasenbaer

回答

1

所以,如果我得到这个权利,每个相机的帧速率为100 fps? (你提到600个图像/秒,用于6个摄像头)。 通过一些分析可以确定瓶颈?