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