欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

計算機屏幕捕獲監(jiān)控及記錄方法

文檔序號:6409464閱讀:246來源:國知局
專利名稱:計算機屏幕捕獲監(jiān)控及記錄方法
技術(shù)領(lǐng)域
本發(fā)明涉及電數(shù)字數(shù)據(jù)處理的方法,特別涉及一種計算機屏幕圖像的捕獲技術(shù),尤其涉及對連續(xù)圖像所進行的計算機屏幕捕獲監(jiān)控及記錄方法。
背景技術(shù)
計算機屏幕捕獲監(jiān)控及記錄技術(shù)在現(xiàn)在的信息社會得到了大量的應用,比如呼叫中心的質(zhì)量管理軟件中,除開話音記錄外,話務員操作呼叫中心軟件的方法也需要同步記錄下來,這里就需要用到屏幕捕獲技術(shù),并把獲得的數(shù)據(jù)文件記錄下來,可以利用某些專門做遠程監(jiān)控的軟件來監(jiān)控話務員,但是由于很少有遠程監(jiān)控軟件能夠提供集成接口,使得不能把呼叫中心軟件和遠程監(jiān)控軟件集成起來,所以操作起來非常的不方便,靈活性不高;也可以采用攝像機來做監(jiān)控,這樣就大大增加了硬件成本的投入,而且非常的不方便,不適于呼叫中心的應用。如果需要實現(xiàn)計算機監(jiān)控,則需要捕獲連續(xù)的圖像,目前的屏幕捕獲大都采用定時捕獲整個屏幕然后壓縮的方式,這樣形成的圖像數(shù)據(jù)非常大,不利于網(wǎng)絡傳輸,而且可能會影響到被監(jiān)控機器的正常操作。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種可以有效克服上述問題的計算機屏幕捕獲監(jiān)控及記錄方法,該技術(shù)提供了接口供集成應用,通過該方法,可以捕捉連續(xù)的屏幕圖像,而且產(chǎn)生的數(shù)據(jù)量非常少,并在處理圖像數(shù)據(jù)后,發(fā)送給監(jiān)控機器進行遠程監(jiān)控,或者存為文件,供日后播放。
本發(fā)明以屏幕捕捉模塊為主,并與圖像壓縮模塊和數(shù)據(jù)處理模塊順序相連,完成屏幕捕獲和圖像處理的功能。
其中屏幕捕捉模塊用來對外提供接口設(shè)置屏捕參數(shù),然后依據(jù)用戶設(shè)置好的參數(shù)來捕獲屏幕圖像。
圖像壓縮模塊負責在設(shè)置圖像壓縮率、選擇圖像格式后,增加一個包括壓縮信息的文件頭,然后采用線程來壓縮圖像,并把壓縮后的圖像數(shù)據(jù)傳遞給數(shù)據(jù)處理模塊。
數(shù)據(jù)處理模塊用來把接收到的經(jīng)過壓縮的圖像數(shù)據(jù)增加一個幀信息后封裝成圖像幀,作為獲得的圖像幀發(fā)送出去。
本發(fā)明通過實施以下的技術(shù)方案來實現(xiàn)實施一種計算機屏幕捕獲監(jiān)控及記錄方法,基于包括硬盤、內(nèi)存、主板、顯示器、鍵盤、鼠標、操作系統(tǒng)以及上層應用程序所構(gòu)成的計算機系統(tǒng),其措施是設(shè)置屏幕捕捉模塊,所述屏幕捕捉模塊的工作步驟包括a.上層應用程序利用屏捕外殼提供的接口來設(shè)置屏捕參數(shù);b.上層應用程序調(diào)用StartCapture函數(shù)通知屏捕外殼開始屏捕;c.屏捕外殼通知內(nèi)核捕獲一幅關(guān)鍵幀作為開始幀;d.屏捕外殼打開定時器或設(shè)置需要的消息鉤子;e.屏捕外殼按照上層應用程序設(shè)置的參數(shù)來控制內(nèi)核進行屏捕,進入自動屏捕狀態(tài)。
F.內(nèi)核在每次收到屏捕外殼的屏捕通知后,按照屏捕外殼傳遞進來的屏捕控制參數(shù)來來獲取屏幕圖像數(shù)據(jù);g.內(nèi)核觸發(fā)OnCapture事件,把轉(zhuǎn)換顏色位后的圖像傳遞到屏幕捕捉模塊之外;h.屏捕需要結(jié)束時,上層應用程序調(diào)用StopCapture函數(shù)通知屏捕外殼停止屏捕;i.屏捕外殼關(guān)閉定時器或取消設(shè)置的鉤子;j.屏捕外殼通知內(nèi)核捕獲一幅關(guān)鍵幀作為停止幀。
步驟f所述的獲取屏幕圖像數(shù)據(jù)可以采用屏幕分區(qū)或是抓取屏幕重畫區(qū)域的縮小抓圖區(qū)域的方法,屏幕分區(qū)法的步驟包括a.將整個屏幕按行列分成若干小塊;b.將各個小塊的圖像逐個抓取;c.把各個小塊圖像所在的起始坐標及圖片大小也記錄下來;d.把各個小塊圖像及其位置等信息作為獨立的圖像數(shù)據(jù)傳遞下去。抓取屏幕重畫區(qū)域法的步驟包括a.首先將一幅圖像作為當前圖像,并暫存圖元數(shù)據(jù);
b.消息鉤子捕捉到圖像變化的消息時,發(fā)信息給屏捕外殼;c.屏捕外殼通知內(nèi)核通過鉤子函數(shù)僅僅抓取重畫區(qū)域的圖像;d.把重畫區(qū)域的圖像所在的位置及大小記錄下來;e.把重畫區(qū)域的圖像及其位置大小等數(shù)據(jù)傳遞給圖像壓縮模塊;f.在抓取若干幅圖像之后,抓取一幅原始屏幕圖像作為關(guān)鍵幀,以減少失真。
所述屏幕捕捉模塊還連接圖像壓縮模塊,該模塊內(nèi)部工作流程包括a.接收來自屏幕捕捉模塊或者圖像比較模塊發(fā)送過來的圖像數(shù)據(jù);b.查詢上層用戶設(shè)置的壓縮率、壓縮格式等參數(shù);c.按照上述參數(shù)來壓縮所獲得的圖像數(shù)據(jù);d.在經(jīng)過壓縮后的圖像數(shù)據(jù)前增加一個頭信息,頭信息內(nèi)包括壓縮所用的壓縮率和壓縮格式、壓縮后的文件大小等信息;e.把經(jīng)過處理后的圖像數(shù)據(jù)發(fā)送給數(shù)據(jù)處理模塊做進一步的處理。
所述圖像壓縮模塊還連接數(shù)據(jù)處理模塊,所述數(shù)據(jù)處理模塊內(nèi)部的工作流程包括a.數(shù)據(jù)處理模塊接收到從數(shù)據(jù)壓縮模塊或鼠標捕獲模塊傳遞過來的數(shù)據(jù),判斷是圖像數(shù)據(jù),還是鼠標數(shù)據(jù);b.在數(shù)據(jù)前加上一個幀頭,幀頭內(nèi)包括用來標識是圖像幀還是數(shù)據(jù)幀的數(shù)據(jù)類型標識符,用來規(guī)定當前幀播放時間的從開始到當前的時間差,以及其它數(shù)據(jù)信息;c.不斷地接收到數(shù)據(jù),形成數(shù)據(jù)幀序列;d.查詢上層用戶是否需要把所獲得的屏幕圖像數(shù)據(jù)存為文件;e.如果需要存為文件,則把幀序列發(fā)送給文件存儲模塊;f.查詢上層用戶是否需要對被監(jiān)控機器進行遠程監(jiān)控;g.如果需要進行遠程監(jiān)控,則把幀序列發(fā)送給監(jiān)控接口模塊;
所述屏幕捕捉模塊還連接圖像比較模塊,該模塊內(nèi)部工作流程包括a.接收到屏幕捕捉模塊發(fā)送過來的屏幕圖像;b.啟動比較運算線程,把接收到的屏幕圖像與同一個屏幕區(qū)域的前一幅圖像進行比較,選出變化過的圖像;c.通過對像素進行異或運算把圖像中沒有發(fā)生變化的像素顏色變?yōu)?,即黑色,而變化了的像素則以差異值的形式保留下來,這樣可以在后面的壓縮處理中得到更高的壓縮率;d.由于在捕捉屏幕圖像的時候采用了分屏捕捉的方式,捕捉到的許多區(qū)域圖像根本就沒有發(fā)生變化,這樣在進行異或運算后得到的是一幅全黑色的圖像,但在進行壓縮時,這樣的圖像還會占一定的數(shù)據(jù)量,而實際上這幅圖根本就沒必要保留,這時就可以把這幅圖丟棄;e.把經(jīng)過處理后的數(shù)據(jù)所在的內(nèi)存地址作為消息的參數(shù),然后通過消息事件交給圖像壓縮模塊。
所述數(shù)據(jù)處理模塊連接文件存儲模塊、鼠標捕捉模塊和監(jiān)控接口模塊,所述文件存儲模塊內(nèi)部的工作流程包括a.文件存儲模塊接收來自數(shù)據(jù)處理模塊的數(shù)據(jù)幀信息,緩存進一個臨時文件;b.把包括數(shù)據(jù)幀存放在文件內(nèi)的偏移值,幀大小等信息在內(nèi)的數(shù)據(jù)幀信息組成一條幀信息記錄,存入一個臨時的列表內(nèi);c.如果沒有接收到屏捕結(jié)束命令,則繼續(xù)上面的兩步;d.如果接收到上層應用程序的屏捕結(jié)束命令,則把記錄幀信息的臨時列表添加到臨時文件的末尾;e.壓縮數(shù)據(jù)幀及幀信息記錄組成的文件;f.增加一個包括文件大小、幀記錄在文件內(nèi)的偏移量等信息的文件頭到臨時文件,形成所需的屏捕文件;g.把形成的屏捕文件存入上層應用程序指定的地方。
所述監(jiān)控接口模塊包括數(shù)據(jù)接收單元、數(shù)據(jù)處理單元、數(shù)據(jù)發(fā)送單元、網(wǎng)絡連接管理單元,內(nèi)部工作流程包括a.數(shù)據(jù)處理模塊把處理好的數(shù)據(jù)幀信息通過消息的形式發(fā)送給數(shù)據(jù)接收單元;b.數(shù)據(jù)接收單元收到消息后,分析消息參數(shù),獲取數(shù)據(jù)幀信息;c.數(shù)據(jù)處理單元在原有的數(shù)據(jù)幀信息上添加頭信息,包括監(jiān)控機器的IP地址等;d.數(shù)據(jù)發(fā)送單元按照頭信息內(nèi)的IP地址通過網(wǎng)絡連接管理單元連接網(wǎng)絡,把幀數(shù)據(jù)發(fā)送給監(jiān)控機器。
所述鼠標捕捉模塊包括鼠標數(shù)據(jù)捕獲單元、數(shù)據(jù)比較單元、數(shù)據(jù)發(fā)送單元,內(nèi)部工作流程包括a.鼠標數(shù)據(jù)捕獲單元捕獲鼠標的數(shù)據(jù),包括一個時間點上的鼠標形狀、鼠標狀態(tài)、鼠標位置等信息;b.數(shù)據(jù)比較單元把鼠標數(shù)據(jù)捕獲單元獲得的鼠標信息數(shù)據(jù)與上一次獲得的數(shù)據(jù)相比較,如果有變化,則保留下來,如果沒有變化,則舍棄;c.數(shù)據(jù)發(fā)送單元用來通過發(fā)送參數(shù)為鼠標數(shù)據(jù)所在的內(nèi)存地址等信息的消息,把經(jīng)過比較后保留下來的鼠標數(shù)據(jù)發(fā)送給數(shù)據(jù)處理模塊。
所述屏幕捕捉模塊的屏捕外殼按照上層應用程序的需求所設(shè)置的參數(shù)包括a.關(guān)鍵幀間隔(KeyFrameInterval)b.屏捕定時間隔(CaptureInterval)c.是否捕捉屏幕變化區(qū)域(CaptuerChange)d.屏捕通知列隊長度(CaptuerQueueLength)e.屏幕分區(qū)行數(shù)(GridRows)f.屏幕分區(qū)列數(shù)(GridCols)g.顏色位數(shù)(ColorBits)。
所述屏幕捕捉模塊的接口函數(shù)包括a.開始屏捕函數(shù)(StartCapture),功能開始進行屏捕;首先會通知捕獲一幅關(guān)鍵幀作為開始幀,然后打開屏捕定時器,設(shè)置需要的消息鉤子,進入自動屏捕狀態(tài)。
b.停止屏捕函數(shù)(StopCapture),功能停止屏捕;先關(guān)閉屏捕定時器,取消設(shè)置的鉤子,再通知捕獲一幅關(guān)鍵幀作為停止幀。
所述屏幕捕捉模塊的事件包括屏捕事件(OnCapture),由截屏內(nèi)核觸發(fā),把捕獲到的圖像傳輸出來。
與現(xiàn)有技術(shù)相比較,本發(fā)明提供的計算機屏幕捕獲監(jiān)控及記錄方法可以用來捕捉連續(xù)的屏幕圖像,產(chǎn)生的數(shù)據(jù)量非常少,非常適合于網(wǎng)絡傳輸。在處理圖像數(shù)據(jù)后,或把所捕獲到的數(shù)據(jù)幀序列按順序發(fā)送給監(jiān)控機器進行遠程監(jiān)控,或存為文件,供日后播放。本發(fā)明采用模塊結(jié)構(gòu),把不同的功能集成在不同的模塊之內(nèi),便于日后程序升級和維護。本發(fā)明還提供了參數(shù)的設(shè)置,可在多處根據(jù)用戶需求和用戶環(huán)境來選擇不同的監(jiān)控方案,而且,如果日后有新的方案,也可以很快的加入到各個模塊內(nèi),而不需要改動所有的代碼,使得程序在升級、維護和集成方面更加靈活方便。此外,本發(fā)明還提供了接口供集成應用,可以將本發(fā)明的程序集成到需要屏捕監(jiān)控功能的大型軟件內(nèi),可靠性高,便于維護和升級。


圖1是本發(fā)明計算機屏幕捕獲監(jiān)控及記錄方法屏幕捕捉模塊內(nèi)結(jié)構(gòu)方框圖;圖2是本發(fā)明所述方法屏幕捕捉模塊的工作流程圖;圖3是本發(fā)明所述方法各個模塊之間連接方框示意圖;圖4是本發(fā)明所述方法監(jiān)控接口模塊內(nèi)結(jié)構(gòu)方框圖;圖5是本發(fā)明所述方法文件存儲模塊的工作流程圖;圖6是本發(fā)明所述方法數(shù)據(jù)處理模塊的工作流程圖;圖7是本發(fā)明所述方法鼠標捕捉模塊內(nèi)結(jié)構(gòu)方框圖。
具體實施例方式
下面結(jié)合附圖及最佳實施例對本發(fā)明做進一步詳盡的描述。
如圖1、圖2所示一種計算機屏幕捕獲監(jiān)控最佳方法,基于包括硬盤、內(nèi)存、主板、顯示器、鍵盤、鼠標、操作系統(tǒng)以及上層應用程序11所構(gòu)成的計算機系統(tǒng),尤其是,在最佳實施方法中設(shè)置屏幕捕捉模塊10,所述屏幕捕捉模塊10的工作步驟包括a.上層應用程序11利用屏捕外殼12提供的接口15來設(shè)置屏捕參數(shù);b.上層應用程序11調(diào)用StartCapture函數(shù)通知屏捕外殼12開始屏捕;c.屏捕外殼12通知內(nèi)核13捕獲一幅關(guān)鍵幀作為開始幀;d.屏捕外殼12打開定時器14或設(shè)置需要的消息鉤子;e.屏捕外殼12按照上層應用程序11設(shè)置的參數(shù)來控制內(nèi)核13進行屏捕,進入自動屏捕狀態(tài);F.內(nèi)核13在每次收到屏捕外殼12的屏捕通知后,按照屏捕外殼12傳遞進來的屏捕控制參數(shù)來來獲取屏幕圖像數(shù)據(jù);g.內(nèi)核13觸發(fā)OnCapture事件,把轉(zhuǎn)換顏色位后的圖像傳遞到屏幕捕捉模塊10之外;h.屏捕需要結(jié)束時,上層應用程序11調(diào)用StopCapture函數(shù)通知屏捕外殼12停止屏捕;i.屏捕外殼12關(guān)閉定時器14或取消設(shè)置的鉤子;j.屏捕外殼12通知內(nèi)核13捕獲一幅關(guān)鍵幀作為停止幀。
步驟f所述的獲取屏幕圖像數(shù)據(jù)可以采用屏幕分區(qū)或是抓取屏幕重畫區(qū)域的縮小抓圖區(qū)域的方法,屏幕分區(qū)法的步驟包括a.將整個屏幕按行列分成若干小塊;b.將各個小塊的圖像逐個抓??;c.把各個小塊圖像所在的起始坐標及圖片大小也記錄下來;d.把各個小塊圖像及其位置等信息作為獨立的圖像數(shù)據(jù)傳遞下去。抓取屏幕重畫區(qū)域法的步驟包括a.首先將一幅圖像作為當前圖像,并暫存圖元數(shù)據(jù);b.消息鉤子捕捉到圖像變化的消息時,發(fā)信息給屏捕外殼(12);c.屏捕外殼(12)通知內(nèi)核(13)通過鉤子函數(shù)僅僅抓取重畫區(qū)域的圖像;d.把重畫區(qū)域的圖像所在的位置及大小記錄下來;e.把重畫區(qū)域的圖像及其位置大小等數(shù)據(jù)傳遞給圖像壓縮模塊;f.在抓取若干幅圖像之后,抓取一幅原始屏幕圖像作為關(guān)鍵幀,以減少失真。
所述屏幕捕捉模塊10還連接圖像壓縮模塊30,該模塊30內(nèi)部工作流程包括a.接收來自屏幕捕捉模塊10或者圖像比較模塊20發(fā)送過來的圖像數(shù)據(jù);b.查詢上層用戶設(shè)置的壓縮率、壓縮格式等參數(shù);c.按照上述參數(shù)來壓縮所獲得的圖像數(shù)據(jù);d.在經(jīng)過壓縮后的圖像數(shù)據(jù)前增加一個頭信息,頭信息內(nèi)包括壓縮所用的壓縮率和壓縮格式、壓縮后的文件大小等信息;e.把經(jīng)過處理后的圖像數(shù)據(jù)發(fā)送給數(shù)據(jù)處理模塊40做進一步的處理。
如圖6所示所述圖像壓縮模塊30還連接數(shù)據(jù)處理模塊40,所述數(shù)據(jù)處理模塊40內(nèi)部的工作流程包括a.數(shù)據(jù)處理模塊接收到從數(shù)據(jù)壓縮模塊30或鼠標捕獲模塊110傳遞過來的數(shù)據(jù),判斷是圖像數(shù)據(jù),還是鼠標數(shù)據(jù);b.在數(shù)據(jù)前加上一個幀頭,幀頭內(nèi)包括用來標識是圖像幀還是數(shù)據(jù)幀的數(shù)據(jù)類型標識符,用來規(guī)定當前幀播放時間的從開始到當前的時間差,以及其它數(shù)據(jù)信息;c.不斷的接收到數(shù)據(jù),形成數(shù)據(jù)幀序列;d.查詢上層用戶是否需要把所獲得的屏幕圖像數(shù)據(jù)存為文件;e.如果需要存為文件,則把幀序列發(fā)送給文件存儲模塊120;f.查詢上層用戶是否需要對被監(jiān)控機器進行遠程監(jiān)控;
g.如果需要進行遠程監(jiān)控,則把幀序列發(fā)送給監(jiān)控接口模塊130;所述屏幕捕捉模塊10還連接圖像比較模塊20,該模塊20內(nèi)部工作流程包括a.接收到屏幕捕捉模塊10發(fā)送過來的屏幕圖像;b.啟動比較運算線程,把接收到的屏幕圖像與同一個屏幕區(qū)域的前一幅圖像進行比較,選出變化過的圖元;c.通過對像素進行異或運算把圖像中沒有發(fā)生變化的像素顏色變?yōu)?,即黑色,而變化了的像素則以差異值的形式保留下來,這樣可以在后面的壓縮處理中得到更高的壓縮率;d.由于在捕捉屏幕圖像的時候采用了分屏捕捉的方式,捕捉到的許多區(qū)域圖像根本就沒有發(fā)生變化,這樣在進行異或運算后得到的是一幅全黑色的圖像,但在進行壓縮時,這樣的圖像還會占一定的數(shù)據(jù)量,而實際上這幅圖根本就沒必要保留,這時就可以把這幅圖丟棄;e.把經(jīng)過處理后的數(shù)據(jù)所在的內(nèi)存地址作為消息的參數(shù),然后通過消息事件交給圖像壓縮模塊30。
如圖5所示所述數(shù)據(jù)處理模塊40連接文件存儲模塊120、鼠標捕捉模塊110和監(jiān)控接口模塊130,所述文件存儲模塊120內(nèi)部的工作流程包括a.文件存儲模塊(120)接收來自數(shù)據(jù)處理模塊40的數(shù)據(jù)幀信息,緩存進一個臨時文件;b.把包括數(shù)據(jù)幀存放在文件內(nèi)的偏移值,幀大小等信息在內(nèi)的數(shù)據(jù)幀信息組成一條幀信息記錄,存入一個臨時的列表內(nèi);c.如果沒有接收到屏捕結(jié)束命令,則繼續(xù)上面的兩步;d.如果接收到上層應用程序的屏捕結(jié)束命令,則把記錄幀信息的臨時列表添加到臨時文件的末尾;e.壓縮數(shù)據(jù)幀及幀信息記錄組成的文件;f.增加一個包括文件大小、幀記錄在文件內(nèi)的偏移量等信息的文件頭到臨時文件,形成所需的屏捕文件;g.把形成的屏捕文件存入上層應用程序指定的地方。
如圖4所示所述監(jiān)控接口模塊130包括數(shù)據(jù)接收單元131、數(shù)據(jù)處理單元132、數(shù)據(jù)發(fā)送單元133、網(wǎng)絡連接管理單元134,內(nèi)部工作流程包括a.數(shù)據(jù)處理模塊40把處理好的數(shù)據(jù)幀信息通過消息的形式發(fā)送給數(shù)據(jù)接收單元131;b.數(shù)據(jù)接收單元131收到消息后,分析消息參數(shù),獲取數(shù)據(jù)幀信息;c.數(shù)據(jù)處理單元132在原有的數(shù)據(jù)幀信息上添加頭信息,包括監(jiān)控機器200的IP地址等;d.數(shù)據(jù)發(fā)送單元133按照頭信息內(nèi)的IP地址通過網(wǎng)絡連接管理單元134連接網(wǎng)絡190,把幀數(shù)據(jù)發(fā)送給監(jiān)控機器200。
如圖7所示所述鼠標捕捉模塊110包括鼠標數(shù)據(jù)捕獲單元111、數(shù)據(jù)比較單元112、數(shù)據(jù)發(fā)送單元113,內(nèi)部工作流程包括a.鼠標數(shù)據(jù)捕獲單元111捕獲鼠標的數(shù)據(jù),包括一個時間點上的鼠標形狀、鼠標狀態(tài)、鼠標位置等信息;b.數(shù)據(jù)比較單元112把鼠標數(shù)據(jù)捕獲單元111獲得的鼠標信息數(shù)據(jù)與上一次獲得的數(shù)據(jù)相比較,如果有變化,則保留下來,如果沒有變化,則舍棄;c.數(shù)據(jù)發(fā)送單元113用來通過發(fā)送參數(shù)為鼠標數(shù)據(jù)所在的內(nèi)存地址等信息的消息,把經(jīng)過比較后保留下來的鼠標數(shù)據(jù)發(fā)送給數(shù)據(jù)處理模塊40。
所述屏幕捕捉模塊10的屏捕外殼12按照上層應用程序的需求所設(shè)置的參數(shù)包括a.關(guān)鍵幀間隔(KeyFrameInterval)b.屏捕定時間隔(CaptureInterval)c.是否捕捉屏幕變化區(qū)域(CaptuerChange)
d.屏捕通知列隊長度(CaptuerQueueLength)e.屏幕分區(qū)行數(shù)(GridRows)f.屏幕分區(qū)列數(shù)(Grid Cols)g.顏色位數(shù)(ColorBits)。
所述屏幕捕捉模塊10的接口函數(shù)包括a.開始屏捕函數(shù)(StartCapture),功能開始進行屏捕;首先會通知捕獲一幅關(guān)鍵幀作為開始幀,然后打開屏捕定時器,設(shè)置需要的消息鉤子,進入自動屏捕狀態(tài)。
b.停止屏捕函數(shù)(StopCapture),功能停止屏捕;先關(guān)閉屏捕定時器,取消設(shè)置的鉤子,再通知捕獲一幅關(guān)鍵幀作為停止幀。
所述屏幕捕捉模塊10的事件包括屏捕事件(OnCapture),由截屏內(nèi)核觸發(fā),把捕獲到的圖像傳輸出來。
本發(fā)明總的工作原理參照圖1、圖3描述用戶在運行本發(fā)明所述的屏捕程序之前先設(shè)置各個模塊內(nèi)部運行時所需要的參數(shù),如通過屏幕捕捉模塊10提供的接口15設(shè)置屏捕定時間隔CaptureInterval,此參數(shù)為0時,是不使用定時方式,為其他數(shù)字時,是以秒為單位的時間間隔。屏幕分區(qū)行數(shù)GridRows,最小值為1。屏幕分區(qū)列數(shù)GridCols,最小值為1。通過圖像比較模塊20設(shè)置“是否進行圖像比較”、“是否使用差異圖像”等參數(shù)。
上層應用程序11發(fā)送需要開始屏捕的命令給各個模塊,激活各個模塊完成各種準備工作,如建立線程、創(chuàng)建對象、分配內(nèi)存等工作,然后進入等待數(shù)據(jù)狀態(tài)。
屏幕捕捉模塊10中的控制外殼12在接收到開始屏捕的命令后,就根據(jù)用戶設(shè)定的捕獲方式,計算好截圖的區(qū)域,指定屏捕圖像的類型參數(shù)(是否關(guān)鍵幀),生成屏捕通知消息通知內(nèi)核13執(zhí)行抓圖操作。
由于需要捕獲的圖像非常多,如果不進行處理,就會造成需要傳遞和存儲的數(shù)據(jù)量非常大,使得屏捕技術(shù)不能實際應用,就需要采用各種方法盡可能減少數(shù)據(jù)量??s小屏捕抓圖區(qū)域是有效的減少數(shù)據(jù)量的辦法,而且可以提高抓圖的速度。本發(fā)明提供了二種可供選擇的縮小抓圖區(qū)域的辦法1.分屏幕區(qū)域屏幕分區(qū)方式是指把整個屏幕按行列分成多個小塊,小塊的大小形狀通過設(shè)置分區(qū)的行數(shù)和列數(shù)決定,然后依次抓取每一小塊分區(qū)的圖像,從而得到整個屏幕的圖像。雖然分區(qū)并不能減少整體上的數(shù)據(jù)量,但經(jīng)過測試發(fā)現(xiàn),在總的區(qū)域大小相同的情況下,分區(qū)抓圖的整體速度明顯比直接抓大區(qū)域要快得多,而且抓圖造成的屏幕停頓感也小得多,在把整個屏幕分成40個區(qū)時,基本上感覺不到停頓的情況。由于分區(qū)取圖的速度比較快,可以縮短抓圖的時間間隔,提高屏捕圖像的及時性,經(jīng)過測試,在行列設(shè)置合適的情況下,至少可以達到25幀/秒的速度,而且對操作無任何影響。而且分區(qū)后進行圖像比較會更方便,可以只保留發(fā)生了變化的區(qū)域,在傳輸、處理、存儲和顯示上效果都非常好。屏幕區(qū)域的劃分方式由“屏幕分區(qū)行數(shù)”和“屏幕分區(qū)列數(shù)”兩個參數(shù)設(shè)定。
由于最后需要得到的是一連串表示不同時間的屏幕變化的圖像,所以在上層應用程序11通知開始抓屏后,就需要自動去捕獲屏幕圖像,這樣就需要有一個抓圖的時間控制方案,來觸發(fā)屏捕以進行自動屏捕,如果用戶設(shè)置采用此種方法,則觸發(fā)屏捕的方式可以設(shè)置為定時器方式和鼠標、鍵盤動作觸發(fā)方式,用戶通過參數(shù)的設(shè)置可以設(shè)定采用兩種中的任何一種,也可以兩種同時使用。
2.屏幕重畫區(qū)域取屏幕重畫區(qū)域不會產(chǎn)生多余的圖像數(shù)據(jù),非常及時和準確。當上層應用程序設(shè)定的抓圖時間控制方案為根據(jù)屏幕重畫消息抓圖的方式時,屏捕外殼把根據(jù)重畫區(qū)域信息構(gòu)造的屏捕開始的消息發(fā)送給內(nèi)核后,屏捕內(nèi)核根據(jù)消息參數(shù),包括需要捕獲的圖像在屏幕中所處的位置和圖像大小等,來捕獲屏幕重畫區(qū)域。
如果采用此種方式來縮小屏幕區(qū)域,則觸發(fā)屏捕的方式為根據(jù)屏幕重畫消息抓圖的方式。由于計算機屏幕每次變化的區(qū)域一般都比較小,所以根據(jù)Windows的屏幕重畫消息取到屏幕變化的區(qū)域進行抓圖,捕獲的圖像數(shù)據(jù)將小得多,而且能及時準確的反映屏幕的變化。重畫消息是利用消息鉤子捕捉到的,與鼠標、鍵盤觸發(fā)方式的實現(xiàn)機制相同;當捕捉到屏幕重畫消息時,鉤子函數(shù)就會發(fā)送一個消息給屏捕模塊外殼,外殼就可以根據(jù)消息中的重畫區(qū)域信息構(gòu)造屏捕通知消息,由內(nèi)核抓取重畫區(qū)域的圖像。與鼠標、鍵盤觸發(fā)方式相同,屏捕外殼在接收到開始屏捕的命令時設(shè)置鉤子,在接收到停止屏捕的命令后取消鉤子。
屏幕捕捉模塊10中的內(nèi)核13在收到抓圖消息后,就開始啟動線程進行抓圖操作,并把捕獲的圖像存為BMP類型的對象,然后根據(jù)消息內(nèi)的參數(shù)“顏色位”把圖像轉(zhuǎn)換為所需要的顏色位,再把圖像發(fā)送到屏幕捕捉模塊10之外,具體情況為如果用戶認為不需要進行圖像比較處理,則把圖像發(fā)送給圖像壓縮模塊30直接進行壓縮,而如果用戶認為有必要,則把作為關(guān)鍵幀的圖像發(fā)送給圖像壓縮模塊30直接進行壓縮,而把作為差異幀的圖像發(fā)送給圖像比較模塊20進行圖像比較處理。
如果用戶認為有必要進行圖像比較處理,則圖像比較模塊20也會被激活,等待圖像數(shù)據(jù)。在接收到圖像數(shù)據(jù)之后,把捕捉到的屏幕圖像進行比較,選出變化過的圖像,并通過異或運算把圖像中沒有發(fā)生變化的像素顏色清空,使所有沒有變化的部分都轉(zhuǎn)換成黑色,而變化的像素只占小部分,然后把處理后的圖像數(shù)據(jù)通過消息參數(shù)的形式傳遞給圖像壓縮模塊30。
圖像壓縮模塊30在接收到屏幕捕捉模塊10或圖像比較模塊20發(fā)送過來的圖像數(shù)據(jù)后,就按照用戶設(shè)置的壓縮參數(shù),如壓縮率、壓縮類型等,啟動壓縮線程來壓縮圖像,并把壓縮后的圖像數(shù)據(jù)通過消息參數(shù)的形式傳遞給數(shù)據(jù)處理模塊40。
鼠標捕捉模塊110按照上層應用程序11所設(shè)定的觸發(fā)機制自動進行鼠標信息的捕捉,然后把獲得的鼠標信息與上一次的信息做比較,如果沒有改變,則舍棄,如果有改變,則發(fā)送到數(shù)據(jù)處理模塊40。
數(shù)據(jù)處理模塊40在接收到壓縮后的圖像數(shù)據(jù)后,把幀信息與圖像數(shù)據(jù)整合在一起,形成一個幀,包括關(guān)鍵幀和差異幀,另外一方面,如果接收到鼠標捕捉模塊110發(fā)過來的鼠標數(shù)據(jù),則把鼠標數(shù)據(jù)與幀信息整合在一起,形成鼠標幀,然后根據(jù)時間順序把這些幀發(fā)給監(jiān)控接口模塊130或文件存儲模塊120。
監(jiān)控接口模塊130在收到從數(shù)據(jù)處理模塊40發(fā)過來的幀后,增加一個包含消息類型的消息頭信息,然后查找內(nèi)存中的監(jiān)控機器信息記錄表,按照表內(nèi)所記錄的監(jiān)控機器的地址信息,通過網(wǎng)絡通訊技術(shù)(如Socket通訊)把數(shù)據(jù)消息發(fā)送給監(jiān)控機器200,監(jiān)控機器200就可以按照數(shù)據(jù)形成的格式來解析出最終的圖像數(shù)據(jù),顯示在監(jiān)控機器200的屏幕上。
文件存儲模塊120在收到從數(shù)據(jù)處理模塊40發(fā)過來的幀后,即把這些幀緩存進一個臨時文件內(nèi),一直到接收到停止屏捕的命令,然后把這個臨時文件加上文件頭,文件頭內(nèi)包括一些此文件的信息,如文件內(nèi)數(shù)據(jù)的大小等,再把整個文件按照用戶設(shè)定的壓縮格式和壓縮率等參數(shù)把文件壓縮,最后把壓縮后的文件存入上層應用程序指定的路徑。
監(jiān)控接口模塊130如果接收到遠程監(jiān)控機器200的鼠標、鍵盤等控制消息,則在監(jiān)控接口模塊130內(nèi)的數(shù)據(jù)處理單元132內(nèi)把控制數(shù)據(jù)從消息內(nèi)解析出來,然后發(fā)給控制單元135,然后按照控制數(shù)據(jù)來控制被監(jiān)控機器,完成遠程監(jiān)控的功能;實踐證明,本發(fā)明提供的計算機屏幕捕獲監(jiān)控及記錄方法,可以捕捉到連續(xù)的屏幕圖像,而且產(chǎn)生的數(shù)據(jù)量非常少,非常適合于網(wǎng)絡傳輸。在處理圖像數(shù)據(jù)后,或把所捕獲到的數(shù)據(jù)幀序列按順序發(fā)送給監(jiān)控機器進行遠程監(jiān)控,或存為文件,供日后播放。本發(fā)明采用模塊結(jié)構(gòu),把不同的功能集成在不同的模塊之內(nèi),便于日后程序升級和維護。本發(fā)明還提供了參數(shù)的設(shè)置,可在多處根據(jù)用戶需求和用戶環(huán)境來選擇不同的監(jiān)控方案,而且,如果日后有新的方案,也可以很快的加入到各個模塊內(nèi),而不需要改動所有的代碼,使得程序在升級、維護和集成方面更加靈活方便。此外,本發(fā)明還提供了接口供集成應用,可以將本發(fā)明的程序集成到需要屏捕監(jiān)控功能的大型軟件內(nèi),可靠性高,便于維護和升級。
權(quán)利要求
1.一種計算機屏幕捕獲監(jiān)控及記錄方法,基于包括硬盤、內(nèi)存、主板、顯示器、鍵盤、鼠標、操作系統(tǒng)以及上層應用程序(11)所構(gòu)成的微機系統(tǒng),其特征在于設(shè)置屏幕捕捉模塊(10),所述屏幕捕捉模塊(10)的工作步驟包括a.上層應用程序(11)利用屏捕外殼(12)提供的接口(15)來設(shè)置屏捕參數(shù);b.上層應用程序(11)調(diào)用StartCapture函數(shù)通知屏捕外殼(12)開始屏捕;c.屏捕外殼(12)通知內(nèi)核(13)捕獲一幅關(guān)鍵幀作為開始幀;d.屏捕外殼(12)打開定時器(14)或設(shè)置需要的消息鉤子;e.屏捕外殼(12)按照上層應用程序(11)設(shè)置的參數(shù)來控制內(nèi)核(13)進行屏捕,進入自動屏捕狀態(tài);F.內(nèi)核(13)在每次收到屏捕外殼(12)的屏捕通知后,按照屏捕外殼(12)傳遞進來的屏捕控制參數(shù)來獲取屏幕圖像數(shù)據(jù);g.內(nèi)核(13)觸發(fā)OnCapture事件,把圖像傳遞到屏幕捕捉模塊(10)之外;h.屏捕需要結(jié)束時,上層應用程序(11)調(diào)用StopCapture函數(shù)通知屏捕外殼(12)停止屏捕;i.屏捕外殼(12)關(guān)閉定時器(14)或取消設(shè)置的消息鉤子;j.屏捕外殼(12)通知內(nèi)核(13)捕獲一幅關(guān)鍵幀作為停止幀。
2.根據(jù)權(quán)利要求1所述的計算機屏幕捕獲監(jiān)控及記錄方法,其特征在于步驟f所述的獲取屏幕圖像數(shù)據(jù)采用屏幕分區(qū)的縮小抓圖區(qū)方法,步驟包括a.將整個屏幕按行列分成若干小塊;b.將各個小塊的圖像逐個抓?。籧.把各個小塊圖像所在的起始坐標及圖片大小也記錄下來;d.把各個小塊圖像及其位置等信息作為獨立的圖像數(shù)據(jù)傳遞下去。
3.根據(jù)權(quán)利要求1所述的計算機屏幕捕獲監(jiān)控及記錄方法,其特征在于步驟f所述的獲取屏幕圖像數(shù)據(jù)采用抓取屏幕重畫區(qū)的縮小抓圖區(qū)方法,步驟包括a.首先將一幅圖像作為當前圖像,并暫存圖元數(shù)據(jù);b.消息鉤子捕捉到圖像變化的消息時,發(fā)信息給屏捕外殼(12);c.屏捕外殼(12)通知內(nèi)核(13)通過鉤子函數(shù)僅僅抓取重畫區(qū)域的圖像;d.把重畫區(qū)域的圖像所在的位置及大小記錄下來;e.把重畫區(qū)域的圖像及其位置大小等數(shù)據(jù)傳遞給圖像壓縮模塊;f.在抓取若干幅圖像之后,抓取一幅原始屏幕圖像作為關(guān)鍵幀,以減少失真。
4.據(jù)權(quán)利要求1所述的計算機屏幕捕獲監(jiān)控及記錄方法,其特征在于屏幕捕捉模塊(10)還連接圖像壓縮模塊(30),該模塊(30)內(nèi)部工作流程包括a.接收來自屏幕捕捉模塊(10)或者圖像比較模塊(20)發(fā)送過來的圖像數(shù)據(jù);b.查詢上層用戶設(shè)置的壓縮率、壓縮格式等參數(shù);c.按照上述參數(shù)來壓縮所獲得的圖像數(shù)據(jù);d.在經(jīng)過壓縮后的圖像數(shù)據(jù)前增加一個頭信息,頭信息內(nèi)包括壓縮所用的壓縮率和壓縮格式、壓縮后的文件大小等信息;e.把經(jīng)過處理后的圖像數(shù)據(jù)發(fā)送給數(shù)據(jù)處理模塊(40)做進一步的處理。
5.根據(jù)權(quán)利要求4所述的計算機屏幕捕獲監(jiān)控及記錄方法,其特征在于所述圖像壓縮模塊(30)還連接數(shù)據(jù)處理模塊(40),所述數(shù)據(jù)處理模塊(40)內(nèi)部的工作流程包括a.數(shù)據(jù)處理模塊接收到從數(shù)據(jù)壓縮模塊(30)或鼠標捕獲模塊(110)傳遞過來的數(shù)據(jù),判斷是圖像數(shù)據(jù),還是鼠標數(shù)據(jù);b.在數(shù)據(jù)前加上一個幀頭,幀頭內(nèi)包括用來標識是圖像幀還是數(shù)據(jù)幀的數(shù)據(jù)類型標識符,用來規(guī)定當前幀播放時間的從開始到當前的時間差,以及其它數(shù)據(jù)信息;c.不斷的接收到數(shù)據(jù),形成數(shù)據(jù)幀序列;d.查詢上層用戶是否需要把所獲得的屏幕圖像數(shù)據(jù)存為文件;e.如果需要存為文件,則把幀序列發(fā)送給文件存儲模塊(120);f.查詢上層用戶是否需要對被監(jiān)控機器進行遠程監(jiān)控;g.如果需要進行遠程監(jiān)控,則把幀序列發(fā)送給監(jiān)控接口模塊(130)。
6.根據(jù)權(quán)利要求1所述的計算機屏幕捕獲監(jiān)控及記錄方法,其特征在于所述屏幕捕捉模塊(10)還連接圖像比較模塊(20),該模塊(20)內(nèi)部工作流程包括a.接收到屏幕捕捉模塊(10)發(fā)送過來的屏幕圖像;b.啟動比較運算線程,把接收到的屏幕圖像與同一個屏幕區(qū)域的前一幅圖像進行比較,選出變化過的圖元;c.通過對像素進行異或運算把圖像中沒有發(fā)生變化的像素顏色變?yōu)?,即黑色,而變化了的像素則以差異值的形式保留下來,這樣可以在后面的壓縮處理中得到更高的壓縮率;d.由于在捕捉屏幕圖像的時候采用了分屏捕捉的方式,捕捉到的許多區(qū)域圖像根本就沒有發(fā)生變化,這樣在進行異或運算后得到的是一幅全黑色的圖像,但在進行壓縮時,這樣的圖像還會占一定的數(shù)據(jù)量,而實際上這幅圖根本就沒必要保留,這時就可以把這幅圖丟棄;e.把經(jīng)過處理后的數(shù)據(jù)所在的內(nèi)存地址作為消息的參數(shù),然后通過消息事件交給圖像壓縮模塊(30)。
7.根據(jù)權(quán)利要求4所述的計算機屏幕捕獲監(jiān)控及記錄方法,其特征在于所述數(shù)據(jù)處理模塊(40)連接文件存儲模塊(120)、鼠標捕捉模塊(110)和監(jiān)控接口模塊(130),所述文件存儲模塊(120)內(nèi)部的工作流程包括a.文件存儲模塊(120)接收來自數(shù)據(jù)處理模塊(40)的數(shù)據(jù)幀信息,緩存進一個臨時文件;b.把包括數(shù)據(jù)幀存放在文件內(nèi)的偏移值,幀大小等信息在內(nèi)的數(shù)據(jù)幀信息組成一條幀信息記錄,存入一個臨時的列表內(nèi);c.如果沒有接收到屏捕結(jié)束命令,則繼續(xù)上面的兩步;d.如果接收到上層應用程序的屏捕結(jié)束命令,則把記錄幀信息的臨時列表添加到臨時文件的末尾;e.壓縮數(shù)據(jù)幀及幀信息記錄組成的文件;f.增加一個包括文件大小、幀記錄在文件內(nèi)的偏移量等信息的文件頭到臨時文件,形成所需的屏捕文件;g.把形成的屏捕文件存入上層應用程序指定的地方。
8.根據(jù)權(quán)利要求7所述的計算機屏幕捕獲監(jiān)控及記錄方法,其特征在于所述監(jiān)控接口模塊(130)包括數(shù)據(jù)接收單元(131)、數(shù)據(jù)處理單元(132)、數(shù)據(jù)發(fā)送單元(133)、網(wǎng)絡連接管理單元(134),內(nèi)部工作流程包括a.數(shù)據(jù)處理模塊(40)把處理好的數(shù)據(jù)幀信息通過消息的形式發(fā)送給數(shù)據(jù)接收單元(131);b.數(shù)據(jù)接收單元(131)收到消息后,分析消息參數(shù),獲取數(shù)據(jù)幀信息;c.數(shù)據(jù)處理單元(132)在原有的數(shù)據(jù)幀信息上添加頭信息,包括監(jiān)控機器(200)的IP地址等;d.數(shù)據(jù)發(fā)送單元(133)按照頭信息內(nèi)的IP地址通過網(wǎng)絡連接管理單元(134)連接網(wǎng)絡(190),把幀數(shù)據(jù)發(fā)送給監(jiān)控機器(200)。
9.根據(jù)權(quán)利要求7所述的計算機屏幕捕獲監(jiān)控及記錄方法,其特征在于所述鼠標捕捉模塊(110)包括鼠標數(shù)據(jù)捕獲單元(111)、數(shù)據(jù)比較單元(112)、數(shù)據(jù)發(fā)送單元(113),內(nèi)部工作流程包括a.鼠標數(shù)據(jù)捕獲單元(111)捕獲鼠標的數(shù)據(jù),包括一個時間點上的鼠標形狀、鼠標狀態(tài)、鼠標位置等信息;b.數(shù)據(jù)比較單元(112)把鼠標數(shù)據(jù)捕獲單元(111)獲得的鼠標信息數(shù)據(jù)與上一次獲得的數(shù)據(jù)相比較,如果有變化,則保留下來,如果沒有變化,則舍棄;c.數(shù)據(jù)發(fā)送單元(113)用來通過發(fā)送參數(shù)為鼠標數(shù)據(jù)所在的內(nèi)存地址等信息的消息,把經(jīng)過比較后保留下來的鼠標數(shù)據(jù)發(fā)送給數(shù)據(jù)處理模塊(40)。
10.根據(jù)權(quán)利要求1所述的計算機屏幕捕獲監(jiān)控及記錄方法,其特征在于步驟e所述屏幕捕捉模塊(10)的屏捕外殼(12)按照上層應用程序的需求所設(shè)置的參數(shù)包括a.關(guān)鍵幀間隔(KeyFrameInterval)b.屏捕定時間隔(CaptureInterval)c.是否捕捉屏幕變化區(qū)域(CaptuerChange)d.屏捕通知列隊長度(CaptuerQueueLength)e.屏幕分區(qū)行數(shù)(GridRows)f.屏幕分區(qū)列數(shù)(GridCols)g.顏色位數(shù)(ColorBits)所述屏幕捕捉模塊(10)的接口函數(shù)包括a.開始屏捕函數(shù)(StartCapture),功能開始進行屏捕;首先會通知捕獲一幅關(guān)鍵幀作為開始幀,然后打開屏捕定時器,設(shè)置需要的消息鉤子,進入自動屏捕狀態(tài);b.停止屏捕函數(shù)(StopCapture),功能停止屏捕;先關(guān)閉屏捕定時器,取消設(shè)置的鉤子,再通知捕獲一幅關(guān)鍵幀作為停止幀;所述屏幕捕捉模塊(10)的事件包括屏捕事件(OnCapture),由內(nèi)核(13)觸發(fā),把捕獲到的圖像傳輸出來。
全文摘要
一種計算機屏幕捕獲監(jiān)控及記錄方法,基于計算機系統(tǒng),尤其是設(shè)置了屏幕捕捉模塊(10),工作步驟包括上層應用程序(11)利用接口(15)來設(shè)置屏捕參數(shù);屏捕外殼(12)打開定時器(14);內(nèi)核(13)進入自動屏捕狀態(tài)抓取圖像;并采用縮小抓圖區(qū)的辦法減小數(shù)據(jù)量;然后把圖像傳遞到屏幕捕捉模塊(10)之外;屏捕需要結(jié)束時,屏捕外殼(12)關(guān)閉定時器(14)并通知內(nèi)核(13)捕獲一幅關(guān)鍵幀作為停止幀;本發(fā)明通過特有的算法來獲取屏幕圖像,大大減少了圖像所占用的空間,并增快了抓屏速度。
文檔編號G06F3/14GK1588302SQ200410051020
公開日2005年3月2日 申請日期2004年8月5日 優(yōu)先權(quán)日2004年8月5日
發(fā)明者劉敬偉 申請人:深圳市友鄰通訊設(shè)備有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
金堂县| 海城市| 广东省| 临洮县| 东台市| 泉州市| 星子县| 门头沟区| 大新县| 扎兰屯市| 灵武市| 永兴县| 交城县| 丹巴县| 务川| 拉孜县| 故城县| 论坛| 石景山区| 新闻| 且末县| 韩城市| 康定县| 大庆市| 武安市| 乐平市| 青铜峡市| 昆明市| 宽城| 潮州市| 栾城县| 平谷区| 定襄县| 鄂伦春自治旗| 泸西县| 大荔县| 黑水县| 政和县| 繁峙县| 赣州市| 离岛区|