我目前正在開發一個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