本發(fā)明涉及圖像視頻處理技術(shù)領(lǐng)域,尤其涉及一種根據(jù)CPU與GPU的使用率對(duì)視頻數(shù)據(jù)進(jìn)行自適應(yīng)解碼的方法。
背景技術(shù):
視頻監(jiān)控是安全防范系統(tǒng)的重要組成部分。傳統(tǒng)的視頻監(jiān)控系統(tǒng)包括前端攝像機(jī)、傳輸線纜、視頻監(jiān)控平臺(tái)。視頻監(jiān)控系統(tǒng)發(fā)展了短短二十幾年時(shí)間,從模擬監(jiān)控到火熱的數(shù)字監(jiān)控再到方興未艾網(wǎng)絡(luò)視頻監(jiān)控,發(fā)生了翻天覆地的變化。
目前視頻監(jiān)控系統(tǒng)要求可以同時(shí)監(jiān)控十幾路以上的視頻,而且對(duì)視頻的清晰度、流暢度要求越來越高,這就對(duì)帶寬、計(jì)算機(jī)性能要求越來越苛刻。而造成這種現(xiàn)象的根本原因是編碼方式和解碼方案。傳統(tǒng)的解碼方案一般采用全軟解(CPU解碼)或全硬解(GPU解碼)。全軟解采用CPU內(nèi)核解碼,對(duì)CPU要求很高,然而CPU能力有限,計(jì)算機(jī)上的其他應(yīng)用也要使用CPU,以至于CPU負(fù)荷太大,容易造成視頻解碼卡頓、延時(shí),無法滿足多路高清視頻監(jiān)控的需求。全硬解采用GPU內(nèi)核解碼,對(duì)顯卡要求很高,成本很昂貴,而且計(jì)算機(jī)上的其他應(yīng)用也會(huì)用到GPU,當(dāng)GPU負(fù)荷太大時(shí)會(huì)造成圖形顯示卡頓、死機(jī)等現(xiàn)象,也無法滿足多路高清視頻監(jiān)控的需求。因此,傳統(tǒng)的解碼方案無論采用全軟解還是全硬解都無法同時(shí)監(jiān)控多路高清視頻。
技術(shù)實(shí)現(xiàn)要素:
鑒于現(xiàn)有技術(shù)中存在的上述缺陷,本發(fā)明所要解決的技術(shù)問題是,提供一種根據(jù)CPU與GPU的使用率對(duì)視頻數(shù)據(jù)進(jìn)行自適應(yīng)解碼的方法,以解決現(xiàn)有技術(shù)采用的全軟解碼或全硬解碼無法同時(shí)監(jiān)控多路高清視頻的缺陷。本發(fā)明是通過如下技術(shù)方案來實(shí)現(xiàn)的:
一種根據(jù)CPU與GPU的使用率對(duì)視頻數(shù)據(jù)進(jìn)行自適應(yīng)解碼的方法,包括:
步驟1:檢測(cè)計(jì)算機(jī)設(shè)備中CPU和GPU的實(shí)時(shí)使用率;
步驟2:根據(jù)所述計(jì)算機(jī)設(shè)備中CPU和GPU的實(shí)時(shí)使用率自適應(yīng)地切換選擇對(duì)應(yīng)的解碼方式對(duì)視頻數(shù)據(jù)進(jìn)行解碼,具體為:
當(dāng)所述GPU的實(shí)時(shí)使用率小于第一閾值時(shí),利用所述GPU通過硬解碼方式對(duì)所述視頻數(shù)據(jù)進(jìn)行解碼;
當(dāng)所述GPU的實(shí)時(shí)使用率不小于所述第一閾值,且所述CPU的實(shí)時(shí)使用率小于第二閾值時(shí),利用所述CPU通過軟解碼方式對(duì)所述視頻數(shù)據(jù)進(jìn)行解碼;
當(dāng)所述GPU的實(shí)時(shí)使用率不小于所述第一閾值,且所述CPU的實(shí)時(shí)使用率不小于所述第二閾值時(shí),暫停對(duì)所述視頻數(shù)據(jù)的解碼。
進(jìn)一步地,所述第一閾值為80%。
進(jìn)一步地,所述第二閾值為80%。
進(jìn)一步地,所述GPU采用Intel Media SDK對(duì)所述視頻數(shù)據(jù)進(jìn)行解碼。
進(jìn)一步地,所述CPU采用ffmpeg、vlc或第三方解碼sdk對(duì)所述視頻數(shù)據(jù)進(jìn)行解碼。
進(jìn)一步地,所述視頻數(shù)據(jù)為H.264編碼格式。
進(jìn)一步地,所述方法還包括:
步驟3:播放解碼后的視頻數(shù)據(jù)。
與現(xiàn)有技術(shù)相比,本發(fā)明根據(jù)CPU與GPU的實(shí)時(shí)使用率自適應(yīng)地切換選擇對(duì)應(yīng)的解碼方式對(duì)視頻數(shù)據(jù)進(jìn)行解碼,不再像傳統(tǒng)技術(shù)般單純采用全軟解或全硬解的解碼方式,既可以滿足行業(yè)需求,又可以從根本上降低CPU、GPU的負(fù)擔(dān)。在計(jì)算機(jī)同等配置下,本發(fā)明可以滿足更高的需求;在滿足同等需求的情況下,本發(fā)明解碼效果更流暢、且不影響計(jì)算機(jī)上的其他應(yīng)用程序,從根本上降低了計(jì)算機(jī)配置成本。
附圖說明
圖1:本發(fā)明實(shí)施例提供的根據(jù)CPU與GPU的使用率對(duì)視頻數(shù)據(jù)進(jìn)行自適應(yīng)解碼的方法流程示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來布置和設(shè)計(jì)。因此,以下對(duì)在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例?;诒景l(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1所示為本發(fā)明實(shí)施例提供的根據(jù)CPU與GPU的使用率對(duì)視頻數(shù)據(jù)進(jìn)行自適應(yīng)解碼的方法流程示意圖。參考圖1,本發(fā)明提供的根據(jù)CPU與GPU的使用率對(duì)視頻數(shù)據(jù)進(jìn)行自適應(yīng)解碼的方法包括:
步驟1:檢測(cè)計(jì)算機(jī)設(shè)備中CPU和GPU的實(shí)時(shí)使用率。計(jì)算機(jī)設(shè)備的CPU和GPU的實(shí)時(shí)使用率反映的計(jì)算機(jī)設(shè)備的CPU和GPU的實(shí)時(shí)使用情況,當(dāng)使用率較高時(shí),說明其負(fù)荷較大。
步驟2:根據(jù)計(jì)算機(jī)設(shè)備中CPU和GPU的實(shí)時(shí)使用率自適應(yīng)地切換選擇對(duì)應(yīng)的解碼方式對(duì)視頻數(shù)據(jù)進(jìn)行解碼,具體為:
當(dāng)GPU的實(shí)時(shí)使用率小于第一閾值時(shí),利用GPU通過硬解碼方式對(duì)視頻數(shù)據(jù)進(jìn)行解碼;
當(dāng)GPU的實(shí)時(shí)使用率不小于第一閾值,且CPU的實(shí)時(shí)使用率小于第二閾值時(shí),利用CPU通過軟解碼方式對(duì)視頻數(shù)據(jù)進(jìn)行解碼;
當(dāng)GPU的實(shí)時(shí)使用率不小于第一閾值,且CPU的實(shí)時(shí)使用率不小于第二閾值時(shí),暫停對(duì)視頻數(shù)據(jù)的解碼。
在視頻解碼中,CPU可對(duì)視頻數(shù)據(jù)進(jìn)行軟解碼,而GPU可對(duì)視頻數(shù)據(jù)進(jìn)行硬解碼。硬解碼就是通過顯卡(GPU)的視頻加速功能對(duì)視頻數(shù)據(jù)進(jìn)行解碼。軟解碼就是粹依靠CPU對(duì)視頻數(shù)據(jù)進(jìn)行解碼。
當(dāng)CPU使用率過高時(shí),說明CPU沒有足夠資源用于對(duì)視頻數(shù)據(jù)進(jìn)行軟解碼,同理,當(dāng)GPU使用率過高時(shí),說明GPU沒有足夠資源用于對(duì)視頻數(shù)據(jù)進(jìn)行硬解碼。因此,選擇軟解碼還是硬解碼方式對(duì)視頻數(shù)據(jù)進(jìn)行解碼要取決于CPU和GPU的實(shí)時(shí)使用率,根據(jù)CPU和GPU的實(shí)時(shí)使用率實(shí)時(shí)、自適應(yīng)地切換適合的解碼方式對(duì)視頻數(shù)據(jù)進(jìn)行解碼。
在對(duì)視頻數(shù)據(jù)進(jìn)行解碼的過程中,可根據(jù)CPU和GPU的實(shí)時(shí)使用率情況,自適應(yīng)地在上述三種解碼方式(為便于描述,將暫停對(duì)視頻數(shù)據(jù)的解碼看作是一種非常特殊的解碼方式)之間切換,CPU和GPU的實(shí)時(shí)使用率符合使用哪一種解碼方式的條件就切換到哪一種解碼方式。
在本實(shí)施例中,第一閾值為80%,第二閾值也為80%。根據(jù)實(shí)際情況,第一閾值和第二閾值也可設(shè)置為其他值。
本實(shí)施例中,如果采用硬解碼方式,GPU可采用Intel Media SDK對(duì)視頻數(shù)據(jù)進(jìn)行解碼,Intel Media SDK具有較強(qiáng)的解碼性能,可大大降低視頻數(shù)據(jù)解碼過程對(duì)CPU的使用。
本實(shí)施例中,CPU采用ffmpeg、vlc或第三方解碼sdk對(duì)視頻數(shù)據(jù)進(jìn)行解碼。
本實(shí)施例中,視頻數(shù)據(jù)為H.264編碼格式。
本實(shí)施例中,方法還包括:
步驟3:播放解碼后的視頻數(shù)據(jù)。
最后應(yīng)說明的是:上述各實(shí)施例僅用于說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或全部技術(shù)特征進(jìn)行等同替換;而這些修改或替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。