2012-11-05 53 views
5

我需要將我的屏幕作爲視頻捕獲,因爲我使用了Expression Encoder 4,但在我的應用程序中,我還需要捕獲一個窗口,但我找不到一種方法它與EE4我試圖動態改變我的ScreenCaptureJobCaptureRectangle,但這似乎不可能。所以我的問題是,你是否知道使用C#或者C++來做'單窗口捕捉'?只錄制一個窗口的視頻

回答

2

可能獲得您感興趣的窗口的窗口句柄,設置一個計時器,並在每個計時器上勾選捕獲該窗口的內容。這樣做不是微不足道的,但肯定可行。我在很多年前在C中做過,但是代碼早已不復存在。

如果您只想捕獲屏幕的矩形區域,問題更簡單。您可以獲取窗口句柄,查詢其大小和位置,然後從屏幕上覆制該區域。在C或C++中,您將獲得桌面DC並從中複製位。在C#中,您可以創建一個與窗口大小相關的Bitmap,調用Graphics.FromImage以獲取圖像的Graphics對象,然後調用CopyFromScreen來獲取窗口內容。缺點是這隻有在沒有任何東西覆蓋有問題的窗口的情況下才有效。如果有東西覆蓋窗口的任何部分,那麼您將捕獲該窗口。

在任何情況下,您最終都會得到需要合併到視頻中的圖像流。有一些圖書館會這樣做。對於C#解決方案,您可以先看看create video from streamed images c#。我懷疑C++有類似的庫。也有一些命令行工具可以實現,儘管我的經驗並不令人滿意。

+0

這種技術正是我在嘗試使用編碼器之前要做的事情,我唯一的擔心是關於性能,但是在使用DirectX之後,我發現這可能不是問題。 –