I'm currently developing a WPF application where one of the controls displays a stream of images; much like any webcam. These images originate of an IP camera and can only be accessed by an HTTP Url, which is fixed and always the sames. Now capturing t开发者_如何学编程he images is no problem, via
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.UriSource = uri;
bitmapImage.CacheOption = BitmapCacheOption.None;
bitmapImage.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
bitmapImage.EndInit();
return bitmapImage;
This much works. The problem arises when I attempt to hook up several cameras (more than 6), the application chokes and eventually crashes. All cameras run on a separate thread btw.
I've identified the basic problem: creating a (highlevel?) bitmap eats too much resources as I need the app to process about 600 images/sec in real-time (about 30Mb/sec) eventually.
In a nutshell, i'm looking for a way to make this retrieval/rendering process a lot more efficient.
Thanks in advance!
UPDATE:
Forgot to mention perhaps, im working in .NET 4 WPF, the camera itself is a Mobotix M12, accessed by ethernet.
So, if I get this right, each camera has a framerate of 100 fps? (you mention 600 images/second for 6 cams). With some profiling you could identify the bottleneck?
As a very late update and for anyone still interested - we managed an implementation with the aForge framework http://www.aforgenet.com/aforge/framework
While dated, it can do these kind of things out of the box.
精彩评论