談虛擬攝像頭技術(shù)在監(jiān)控系統(tǒng)中的應(yīng)用
前言
本文引用地址:http://www.ex-cimer.com/article/250091.htm網(wǎng)絡(luò)攝像頭簡(jiǎn)稱WEBCAM,一般通過(guò)USB與電腦連接,或直接嵌入在筆記本電腦屏幕的上方,主要在網(wǎng)絡(luò)會(huì)議、即時(shí)通訊、IP電話等軟件中應(yīng)用。虛擬攝像頭顧名思義,就是用軟件手段在計(jì)算機(jī)中模擬出一個(gè)網(wǎng)絡(luò)攝像頭硬件,它本身不具備視頻采集的功能,但可以將圖片、視頻文件或其它設(shè)備采集到的視頻做為虛擬攝像頭的輸出,并可加入各種個(gè)性化的特效。例如,在沒(méi)有真實(shí)網(wǎng)絡(luò)攝像頭情況下,也可以通過(guò)虛擬攝像頭軟件進(jìn)行視頻聊天,只不過(guò)對(duì)方看到的不是真實(shí)的視頻,而是一些預(yù)設(shè)的錄像或圖片。
目前網(wǎng)上的一些用虛擬攝像頭技術(shù)開(kāi)發(fā)的軟件,多被用來(lái)在網(wǎng)絡(luò)聊天軟件中欺騙對(duì)方。實(shí)際上,虛擬攝像頭有效克服了真實(shí)網(wǎng)絡(luò)攝像頭內(nèi)容單一、依賴硬件的缺點(diǎn),使用領(lǐng)域非常寬廣。本文以兩個(gè)虛擬攝像頭技術(shù)與監(jiān)控系統(tǒng)結(jié)合使用的項(xiàng)目為例,具體分析系統(tǒng)的開(kāi)發(fā)思路和效果,希望能對(duì)虛擬攝像頭技術(shù)的推廣應(yīng)用起到拋磚引玉的效果。 限于篇幅,本文重點(diǎn)在于分析設(shè)計(jì)思路,未有涉及太多技術(shù)細(xì)節(jié),只對(duì)關(guān)鍵技術(shù)作簡(jiǎn)要的描述,具體實(shí)現(xiàn)方式感興趣的讀者可以通過(guò)網(wǎng)絡(luò)查找相關(guān)資料。
虛擬攝像頭驅(qū)動(dòng)開(kāi)發(fā)路線
虛擬攝像頭驅(qū)動(dòng)的開(kāi)發(fā)可以遵循以下3條路線:
1.傳統(tǒng)的WDM驅(qū)動(dòng)的開(kāi)發(fā)模式,WDM是微軟為Windows2000及后續(xù)操作系統(tǒng)提供的通用驅(qū)動(dòng)程序模型,一個(gè)驅(qū)動(dòng)程序可以看作是一個(gè)運(yùn)行在系統(tǒng)底層的DLL,采用WDM的方式開(kāi)發(fā)虛擬攝像頭需要從驅(qū)動(dòng)整體入手,在操作系統(tǒng)中虛擬出一個(gè)設(shè)備,需要開(kāi)發(fā)者具備豐富的計(jì)算機(jī)接口和Windows驅(qū)動(dòng)開(kāi)發(fā)經(jīng)驗(yàn)。
2.基于DirectShow平臺(tái)的開(kāi)發(fā)模式,DirectShow是微軟推出的基于COM的流媒體處理開(kāi)發(fā)包,與DirectX開(kāi)發(fā)包一起發(fā)布,用DirectShow開(kāi)發(fā)虛擬攝像頭無(wú)需涉及驅(qū)動(dòng)程序編寫(xiě),體積小巧、安裝過(guò)程不會(huì)引起安全軟件和操作系統(tǒng)的警告,且視頻處理效率比WDM高。
3.利用DSF框架平臺(tái)開(kāi)發(fā),微軟DSF框架利用小端口驅(qū)動(dòng)把一個(gè)虛擬的USB設(shè)備控制器驅(qū)動(dòng)接在計(jì)算機(jī)上,涉及驅(qū)動(dòng)層面的內(nèi)容DSF已經(jīng)做好了,開(kāi)發(fā)者只需按DSF接口標(biāo)準(zhǔn)開(kāi)發(fā)一個(gè)動(dòng)態(tài)鏈接庫(kù)用來(lái)模擬設(shè)備功能,再開(kāi)發(fā)一個(gè)腳本文件用于模擬設(shè)備的物理插拔動(dòng)作,一個(gè)虛擬設(shè)備就做好了。
上述3條開(kāi)發(fā)路線中,路線1、2對(duì)開(kāi)發(fā)者的要求較高,開(kāi)發(fā)時(shí)間也相對(duì)較長(zhǎng);方案3則相對(duì)簡(jiǎn)單,基本不需要與驅(qū)動(dòng)打交道,但利用DSF框架開(kāi)發(fā)的軟件,在客戶的機(jī)器上部署相對(duì)繁瑣,不利于商業(yè)推廣。剛?cè)腴T(mén)的開(kāi)發(fā)者建議在網(wǎng)上搜索虛擬攝像頭的開(kāi)源代碼,以加快開(kāi)發(fā)進(jìn)度。
無(wú)論哪種方式開(kāi)發(fā)的虛擬攝像頭驅(qū)動(dòng),都必須有一個(gè)外部數(shù)據(jù)傳入的接口(建議做成COM形式方便調(diào)用)。其它軟件(如下文所述的數(shù)據(jù)轉(zhuǎn)發(fā)軟件)可以通過(guò)這個(gè)接口,傳入RGB格式的位圖數(shù)據(jù),虛擬攝像頭將傳入的位圖作為拍攝到的影像,通過(guò)QQ、MSN、Netmetting等軟件顯示出來(lái)。RGB是一種工業(yè)標(biāo)準(zhǔn)的位圖數(shù)據(jù)存儲(chǔ)方式,每一幅位圖就是一幀,當(dāng)每秒傳入25幅以上的位圖,虛擬攝像頭就會(huì)顯示出流暢的視頻了。
在醫(yī)療領(lǐng)域的應(yīng)用
某醫(yī)院進(jìn)口的醫(yī)療設(shè)備,其所附帶的軟件,可以在記錄病人生理數(shù)據(jù)的同時(shí),具備同步錄像功能,但該軟件只有一個(gè)網(wǎng)絡(luò)攝像頭接口,無(wú)法實(shí)現(xiàn)一臺(tái)設(shè)備同時(shí)監(jiān)管多個(gè)病床;且安裝軟件的電腦與病房相隔較遠(yuǎn),網(wǎng)絡(luò)攝像頭鞭長(zhǎng)莫及。另外在病房?jī)?nèi)原已安裝了多個(gè)監(jiān)控模擬攝像機(jī),護(hù)士中心可使用聯(lián)網(wǎng)監(jiān)控軟件,通過(guò)局域網(wǎng)連接到硬盤(pán)錄像機(jī)觀察到病房?jī)?nèi)的情況。因此,為了有效提高這種昂貴的進(jìn)口設(shè)備利用率,使其軟件能與現(xiàn)有的監(jiān)控設(shè)備結(jié)合,我們?cè)O(shè)計(jì)了如下的虛擬攝像頭技術(shù)方案:
目前國(guó)內(nèi)主流的IP攝像機(jī)和硬盤(pán)錄像機(jī)均有SDK開(kāi)發(fā)包,這里以??低曄盗挟a(chǎn)品為例說(shuō)明開(kāi)發(fā)過(guò)程:開(kāi)發(fā)一個(gè)數(shù)據(jù)轉(zhuǎn)發(fā)軟件,先調(diào)用??档脑O(shè)備網(wǎng)絡(luò)SDK接收從IP攝像機(jī)或硬盤(pán)錄像機(jī)端傳來(lái)的壓縮視頻流,收到壓縮流后,立即調(diào)用播放庫(kù)SDK中的相應(yīng)函數(shù),對(duì)壓縮流進(jìn)行解壓,獲得YUV格式的圖像數(shù)據(jù),再將YUV轉(zhuǎn)換為RGB格式(轉(zhuǎn)換算法在網(wǎng)上很多,選擇時(shí)需注意算法的效率),最后通過(guò)虛擬攝像頭的數(shù)據(jù)傳入接口,將圖像在醫(yī)療軟件上顯示出來(lái)。數(shù)據(jù)轉(zhuǎn)發(fā)軟件可以根據(jù)使用者的要求,自動(dòng)或手動(dòng)切換監(jiān)控?cái)z像機(jī),將不同監(jiān)控?cái)z像機(jī)采集到圖像顯示在同一套軟件中。
作為進(jìn)一步完善,我們通過(guò)虛擬攝像頭實(shí)現(xiàn)了畫(huà)中畫(huà)功能,具體做法是:同時(shí)從2臺(tái)攝像機(jī)獲取壓縮流并解碼;將其中一臺(tái)攝像機(jī)的位圖數(shù)據(jù)按比例縮?。磩h減一部分像素),作為子畫(huà)面;將主畫(huà)面的位圖數(shù)據(jù)中一部分,更換為子畫(huà)面的位圖數(shù)據(jù),形成畫(huà)中畫(huà),再傳入到虛擬攝像頭。這樣,在主畫(huà)面切換到某一病床時(shí),子畫(huà)面仍監(jiān)控著整個(gè)病房的總體情況,達(dá)到了全貌和細(xì)節(jié)同時(shí)兼顧的效果。
在視頻會(huì)議中的應(yīng)用
某大型企業(yè)分支機(jī)構(gòu)遍布全省,各地的營(yíng)業(yè)現(xiàn)場(chǎng)均安裝了視頻監(jiān)控系統(tǒng)。該企業(yè)經(jīng)常通過(guò)視頻會(huì)議軟件組織全省范圍的會(huì)議。使用者希望通過(guò)視頻會(huì)議軟件,除了能看到參會(huì)者外,在會(huì)議討論過(guò)程中,還經(jīng)常需要將一些生產(chǎn)經(jīng)營(yíng)現(xiàn)場(chǎng)的畫(huà)面調(diào)出來(lái)顯示,供大家討論。由于視頻會(huì)議軟件具有網(wǎng)絡(luò)攝像頭接口,我們開(kāi)發(fā)了一套適用于視頻會(huì)議的虛擬攝像頭軟件:
滿足客戶需求的關(guān)鍵,是在上一章節(jié)的畫(huà)中畫(huà)功能基礎(chǔ)上,實(shí)現(xiàn)一個(gè)畫(huà)面是真實(shí)的網(wǎng)絡(luò)攝像頭采集到的圖像(一般是參會(huì)者),另一個(gè)畫(huà)面是視頻監(jiān)控系統(tǒng)傳輸過(guò)來(lái)的圖像(一般是生產(chǎn)經(jīng)營(yíng)現(xiàn)場(chǎng)),相結(jié)合形成畫(huà)中畫(huà)后,通過(guò)虛擬攝像頭顯示出來(lái)。獲取真實(shí)網(wǎng)絡(luò)攝像頭采集到的圖像有WIA, DirectShow, VFW等幾種技術(shù),通常的手段是通過(guò)剪貼板從緩存中獲取圖像并轉(zhuǎn)換為位圖,但這種方式存在幀率低、不兼容多線程等問(wèn)題。經(jīng)研究,我們通過(guò)VFW的回調(diào)函數(shù)功能,獲取攝像頭采集到的位圖,可達(dá)到高幀率、低CPU占用的效果。
隨著視頻會(huì)議功能的深入使用,用戶又提出了新的問(wèn)題:開(kāi)會(huì)期間,臨時(shí)需要將一些沒(méi)有安裝監(jiān)控?cái)z像機(jī)的場(chǎng)景,在視頻會(huì)議上展示出來(lái)。為此系統(tǒng)增加了智能手機(jī)設(shè)備的支持:在Android或IPhone手機(jī)上安裝專用的軟件,即可將手機(jī)攝像頭拍攝到的圖像,通過(guò)無(wú)線網(wǎng)絡(luò)傳輸?shù)诫娔X上,數(shù)據(jù)轉(zhuǎn)發(fā)軟件可以將收到的手機(jī)圖像轉(zhuǎn)換為RGB格式,并傳送給虛擬攝像頭。由此,視頻會(huì)議徹底擺脫了地域、環(huán)境和設(shè)備的限制。
攝像頭相關(guān)文章:攝像頭原理
評(píng)論