2013-12-20 105 views
5

我需要在Skype等程序中獲取合成生成的視頻流。音頻部分很簡單。有一個名爲Soundflower的項目,它是一個適配器。它在一側提供虛擬音頻目標設備,在另一側提供視頻源。我正在尋找OSX的相同解決方案。除了我只需要部分如何將其呈現爲虛擬相機。不要誤解,我不需要一個「隨時可用」的工具,我需要如何開發它的方式。所以準備使用的工具只對源代碼有幫助。構建OS X的虛擬攝像頭

在Windows世界中,我從哪裏來,我已經使用DirectShow編程,虛擬攝像頭。現在我正在OSX世界中尋找類似的解決方案。

+0

您是否可以創建虛擬視頻目標設備?我很想知道你是如何實現這一目標的。 thx – user1988824

+0

不,該項目已經停止,因此我停止了尋找解決方案。 –

回答

7

這在某種程度上取決於您希望與之進行接口的應用程序。如果是舊式的QuickTime應用程序(32位,10.8或更早版本),則需要編寫QuickTime vdig(視頻數字化器)組件。這基本上是一個插件,它提供了一個可以被任何QT兼容應用程序動態枚舉和調用的特定接口。但是,現在已經廢棄了(截至10.9)!

現代的方法是使用核心媒體I/O框架。不幸的是,它沒有像大多數其他框架那樣被徹底記錄,因爲它只被開發者基礎的一小部分(誰需要創建硬件接口)所使用。

有一個SDK項目中可用,其中包含了CoreMedia框架以及一些示例代碼:

在看看具體。

你可能不會需要一個kext(內核擴展),你將無法與真正的硬件接口。所以希望你能夠通過實現所需的CMIO接口並註冊你的設備類型。

有可用的一個偉大的書,涵蓋了驅動程序開發的OS X和iOS:

(免責聲明:作者是學院和我的朋友)

的QuickTime曾經是DirectShow的等價物。現在,CoreMedia和朋友已經取代了它,擁有更加現代和靈活的API。

+0

謝謝你的回答。我不相信有人能夠回答你的答案,但我會給出這樣一個機會,因爲我希望得到如下答案:「當然,有一個項目XY,它完全符合你的要求,而來源是BSD。」 :-)你向我展示石質黑暗谷:-)就像QuickTime一樣,DirectShow現在已經被開發者折磨多年後取代(我不知道QuickTime是否類似混亂)。我已經開始下載你的建議。我想大約一個小時後你會得到你的綠色複選標記。 –

+0

當然。 :)你的要求有點小題目,所以如果有一個現成的項目能夠做到這一點,我會感到有些驚訝。我看過QT的樣品,但沒有看到CMIO。但是這個SDK確實有一個完整的例子,所以你應該能夠從中提取大部分你需要的東西。在使用DirectShow和QuickTime之後,我還有更多來自DS的傷疤! QuickTime是老式的,但DS是一場噩夢。 – gavinb

+1

截至2015年10月,所提及的CoreMediaIO SDK項目不在優塞米特或El Capitan編譯。我試圖讓它工作,並通過刪除「源」文件夾中的舊源代碼並添加等效框架來解決很多問題,因爲它似乎已被捆綁到框架中(增加了:加速,evenkit,audiotoolbox, coreaudiokit,碳,audiounit)。然後,我遇到了幾個小時內無法逃脫的核心C++錯誤,並決定放手,我希望蘋果員工能夠修復示例源代碼,並且我們將永遠幸福快樂...... – user1988824