我想知道GotoMeeting這樣的軟件如何捕獲桌面。我可以使用GDI進行全屏(或逐塊)捕捉,但這對我來說似乎太浪費了。此外,我也研究了鏡像設備,但我想知道是否有更簡單的技術或圖書館。像GotoMeeting這樣的軟件如何捕獲桌面的圖像?
我需要快速高效的桌面屏幕捕捉(10p15 fps),我最終將轉換爲視頻文件並與我的應用程序集成,以便通過網絡發送捕獲的Feed。
謝謝!
我想知道GotoMeeting這樣的軟件如何捕獲桌面。我可以使用GDI進行全屏(或逐塊)捕捉,但這對我來說似乎太浪費了。此外,我也研究了鏡像設備,但我想知道是否有更簡單的技術或圖書館。像GotoMeeting這樣的軟件如何捕獲桌面的圖像?
我需要快速高效的桌面屏幕捕捉(10p15 fps),我最終將轉換爲視頻文件並與我的應用程序集成,以便通過網絡發送捕獲的Feed。
謝謝!
是的,拍攝屏幕截圖並找到之前捕獲的差異將是一種很好的方式,通過僅發送跨越來減少傳輸帶寬,當然這與視頻編碼技術類似塊。
仍然意味着你需要做一個捕獲加額外的處理來獲得差異,即對它進行編碼。
什麼語言?
.NET提供了Graphics.CopyFromScreen。
通過使用鏡像設備,您可以同時獲得更新後的Rectangle和指向Screen的指針。更新的矩形指針指向所有正在改變的矩形,這些矩形是頻繁改變的改變矩形。過濾出一些矩形,因爲在一秒鐘內可以得到1000個矩形。
我得到20到30幀每秒使用內存驅動程序我顯示在我的圖片框,但是當我得到全屏更新然後這些幀被緩衝。因爲圖片框很慢,並且改變了我自己的組件,所以這是一些快速但不是很好的全屏以及一般我全屏顯示10 fps。我在渲染幀時面臨着問題,我可以每秒捕捉20到30幀,但是我的渲染在一秒內是8到10個全屏幕幀。如果任何人有全屏幕渲染幀請重播我。
嗯,我想要一個語言中立的答案,更像是關於API調用的技術討論。 CopyFromScreen會進行一點一點的傳輸,就像我剛纔提到的那樣,對我來說有點浪費。在不太強大的筆記本電腦上每秒鐘執行10-15次這樣的操作,可能會導致筆記本電腦電量顯着下降,或者兩者兼而有之。所以需要更有效率的東西。 – verma 2010-01-11 22:18:09
如果有更高效的方法,你不認爲核心.NET庫會使用它嗎?如果你想要一個「更高效」的方式,它將涉及不捕獲屏幕本身。 – 2010-01-11 22:34:36
嗯,我不是說.NET的CopyFromScreen調用效率不高,我只是說對於我的具體情況我認爲它很浪費。我不想捕捉整個屏幕,只是想知道屏幕一點也沒有改變。 – verma 2010-01-12 19:13:06