2011-02-07 37 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個攝像頭)。 通過一些分析可以確定瓶頸?