一、背景介紹
虛擬攝像頭,顧名思義,就是利用軟件技術(shù)虛擬出一個(gè)攝像頭硬件設(shè)備供用戶(hù)使用。當(dāng)我們需要對(duì)視頻圖像進(jìn)行處理再輸出時(shí),虛擬攝像頭就具備非常大的價(jià)值了。關(guān)于如何在Windwos上實(shí)現(xiàn)一個(gè)虛擬設(shè)備的資料已經(jīng)非常豐富了,Windows Driver Kit里面也有非常多的幫助文檔。這篇博文主要總結(jié)了在Mac下開(kāi)發(fā)虛擬攝像頭的一些經(jīng)驗(yàn)。Mac下的虛擬攝像頭產(chǎn)品其實(shí)也有不少,例如CamTwist, CamMask, CamWiz, ManyCam等。但是關(guān)于如何在Mac下開(kāi)發(fā)虛擬攝像頭設(shè)備的資料卻是異常匱乏。通過(guò)一番搜索后才找到一個(gè)關(guān)鍵字:CoreMediaIO. 經(jīng)過(guò)了解,CoreMediaIO是Mac下的一個(gè)framework,主要用于對(duì)視頻圖像進(jìn)行處理。而CoreMediaIO framework有一個(gè)Device Abstraction Layer(DAL),它類(lèi)似與Mac下CoreAudio的Hardware Abstraction Layer(HAL)。HAL主要是用來(lái)處理音頻硬件發(fā)送的音頻流的,而DAL則是用來(lái)處理視頻設(shè)備的視頻流的。因此,利用DAL插件框架,可以模擬出一個(gè)攝像頭設(shè)備供上層用戶(hù)使用。
CoreMediaIO DAL有一個(gè)示例項(xiàng)目,這個(gè)項(xiàng)目模擬出了一個(gè)名為“Sample”的設(shè)備,通過(guò)底層kext模塊提供的模擬數(shù)據(jù)實(shí)現(xiàn)視頻幀的傳遞。這個(gè)DEMO要真正使用起來(lái)的話(huà),有一些需要注意的地方。在Demo中的README文件中推薦使用如下命令安裝預(yù)編譯好的程序:
延伸閱讀
我想了解如何學(xué)習(xí) |