我目前正在开发一个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,通过以太网访问。
我知道Mobotix,也在WPF中使用.Net 4。有类似的问题。 – Nasenbaer
@Nasenbaer:你有没有设法解决它们? – rumblefx0
在我的情况下,我可以通过添加一个自己的UI类来以更少的时间间隔更新图像来解决这个问题。我使用了内存转换器,因为在内部我正在使用ImageSource的默认位图进行额外的工作。也看看垃圾收集器'GC.Collect'。在你的情况下做什么记忆?在我的情况下,所有工作。但情况与你的情况不同。我还没有几款Mobotix相机进行测试:-)如果您想分享您的代码,我可以尝试通过SVN或FTP解决您的问题。 – Nasenbaer