2013-01-07 37 views
1

我想將Skype視頻插入到我自己的應用程序中。我正在使用skype4com來控制通話,但是我找不到任何參考或示例,這些參考或示例暗示可以通過它的視頻流將其嵌入到您的應用程序中。我試圖加入SkypeKit計劃,但一個月後,我仍然在等待他們的任何消息,我聽到你經常只是等待,等待他們的消息。如何竊取另一個應用程序的視頻(通過hwnd)並將其顯示在單獨的應用程序中

我想知道是否還有其他事情可以做,只需找到Skype顯示的視頻的hwnd,並將其用於/用於面板/表格/等。我擁有我的應用程序,然後隱藏Skype窗口的其餘部分。我試着用谷歌搜索一般話題,但也許我不知道這個概念的正確描述是阻止我找到任何東西。

粗略地我知道我可以做一些事情,比如使用窗口句柄來抓取框架的位圖並在我自己的應用程序中顯示它,隱藏Skype,但這可能會帶來很多開銷。

任何人都知道如何做到這一點,或者這是什麼概念,所以我可以自己找到它?

謝謝!

回答

1

這不是最終的或完全回答這個問題,但它包含的問題,我問...

最後我嘗試不同的東西,有不同程度的成功的部分答案。

解決這類問題時的第一個問題顯然是要確定您嘗試重新使用的視頻是否通過DirectX呈現。

如果視頻不是DirectX渲染,那麼您確實可以從窗口捕捉視頻並隨時隨地播放視頻。網上有各種樣本,應該如何從窗口捕獲位圖。訣竅是窗口可以通過不透明的方式隱藏,但不能最小化(最小化它不會更新)!您只需使用您找到的具有視頻的窗口的hwnd,並在循環中通過各種方法獲取這些位圖的副本,然後在其他地方顯示它們。根據您電腦的速度和視頻的大小,這種方法的工作可以忍受,我沒有問題。

如果您嘗試劫持的視頻是通過DirectX渲染的,那麼您大部分都是,但並非完全沒有運氣。由於DirectX視頻是由圖形卡(而非操作系統)直接渲染到操作系統表面上的,因此您必須使用完全不同的方法將視頻作爲幀抓取並顯示在別處。有很多關於如何進行DirectX屏幕捕獲的例子。但是,大量的問題是,如果DirectX窗口被隱藏,重疊或不透明度設置爲零,則不會捕獲任何東西!我甚至嘗試使用虛擬桌面管理器軟件來查看是否可以欺騙系統在虛擬窗口中播放DirectX視頻,然後將其捕獲並播放到我想要的位置,但它當然比我更聰明,並且我得到了空白圖片。所以,底線似乎是,除非你做一些非常極端的事情,比如寫一個虛擬的圖形卡驅動程序,那你倒黴。 (有各種各樣的興趣方法,其中包括編寫DirectX代理,可以捕獲視頻/靜止圖像到顯卡,但我仍然認爲你可能需要一個虛擬圖形驅動程序來說服顯示器表面是可見的,因此值得渲染。)

相關問題