2009-09-28 44 views
0

所以,我有一個應用程序通過本地連接流式傳輸兩個視頻源。每個視頻都有自己的濾波器圖形,通過解碼濾波器和Inifinite Pin Tee濾波器,然後有一個GMFBridge濾波器,用於使用WM ASF濾波器打開/關閉錄製。還有一個視頻渲染器運行三通濾波器的不同輸出。最小化DirectShow內存消耗

現在,這一切都沒有問題,但是整個應用程序的內存消耗遠遠超過80 MB,打開錄製時可能會超過100。

我想知道是否有任何提示最大限度地減少DirectShow內存消耗?

我通過DirectShowLib互操作庫從C#(.NET 2.0)使用DirectShow。

乾杯

+0

這些活的流是?您可以嘗試通過調用圖上的SetSyncSource(null)來禁用時鐘。 – 2009-09-28 09:56:58

+0

你使用的是哪個Windows平臺,其中100 MB被認爲是很多? – Alan 2009-10-05 19:03:19

+0

XP - 自定義硬件 - 用戶交互可以持續6個小時。我的關注點更多的是在加載/重新加載過濾器圖形時內存中的潛在跳轉,而不是任何高內存消耗的單一實例。 – Kazar 2009-10-05 22:24:39

回答

1

我對.NET應用程序的第一個建議是不信任任務管理器。使用性能監視器並添加專用字節計數器。這會告訴你你的真實內存使用情況。另外,由於您使用的是第三方過濾器(封閉源代碼),因此除降低視頻分辨率和幀率外,實際上沒有降低內存使用量的選項。

+0

已經做過個別的過濾器測量,我認爲第三方組件是問題,就像你說的那樣。接受指出。 – Kazar 2009-10-01 21:50:29