В настоящее время я разрабатываю приложение WPF, в котором один из элементов управления отображает поток изображений; как любая веб-камера. Эти изображения происходят от IP-камеры и могут быть доступны только по HTTP-адресу, который фиксирован и всегда является sames. Теперь захват изображений не представляет проблемы, черезОтображение потока изображений IPcam
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.UriSource = uri;
bitmapImage.CacheOption = BitmapCacheOption.None;
bitmapImage.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
bitmapImage.EndInit();
return bitmapImage;
Это много работает. Проблема возникает, когда я пытаюсь подключить несколько камер (более 6), приложение задыхается и, в конечном счете, падает. Все камеры работают по отдельному потоку.
Я определил основную проблему: создание растрового изображения (highlevel?) Слишком много ресурсов, так как мне нужно приложение для обработки около 600 изображений в секунду в реальном времени (около 30 Мбит/с).
В двух словах я ищу способ сделать этот процесс поиска/рендеринга более эффективным.
Заранее благодарен!
UPDATE:
Забыл упомянуть, возможно, им работать в .NET 4 WPF, сама камера является Mobotix M12, доступ к локальным сетям.
Я знаю Mobotix и также работаю над .Net 4 в WPF. Имеют схожие проблемы. – Nasenbaer
@Nasenbaer: вам когда-нибудь удалось их решить? – rumblefx0
В моем случае я мог бы решить эту проблему, добавив собственный пользовательский интерфейс для обновления изображения за меньший промежуток времени, чем камера передает кадры. Я использовал конвертер памяти, потому что изнутри я работаю дополнительно с битовой картой по умолчанию в случае с ImageSource. Также взгляните на сборщик мусора 'GC.Collect'. Что делает память в вашем случае? В моем случае все работает. Но ситуация отличается от вашей. У меня нет нескольких камер Mobotix для тестирования :-) Если вы хотите поделиться своим кодом, я могу попытаться исправить вашу проблему с помощью SVN или FTP. – Nasenbaer