亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

軟硬件協(xié)同編碼方法及系統(tǒng)與流程

文檔序號:11657739閱讀:370來源:國知局
軟硬件協(xié)同編碼方法及系統(tǒng)與流程

本發(fā)明涉及視頻編碼領(lǐng)域,具體涉及一種軟硬件協(xié)同編碼方法及系統(tǒng)。



背景技術(shù):

根據(jù)統(tǒng)計,互聯(lián)網(wǎng)流量中,視頻數(shù)據(jù)的流量占據(jù)了大部分網(wǎng)絡(luò)帶寬資源。視頻編碼技術(shù)通過對視頻數(shù)據(jù)進(jìn)行壓縮,達(dá)到節(jié)省網(wǎng)絡(luò)帶寬和存儲空間的目的,具有巨大的經(jīng)濟(jì)效益。由于視頻編碼算法計算量大,通常采用特殊的硬件進(jìn)行編碼。實際應(yīng)用中,單純的硬件編碼器計算效率高,但是編碼效率不高。單純的軟件編碼器經(jīng)過充分的算法優(yōu)化,壓縮效率高,但是消耗cpu資源過多。

目前缺乏一種既能充分利用設(shè)備有限的cpu資源,進(jìn)行高效的視頻編碼,還能消除軟件編碼對cpu資源消耗過多造成的編碼丟幀問題的編碼方法。



技術(shù)實現(xiàn)要素:

針對現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種編碼效率高且能消除編碼卡頓和丟幀的軟硬件協(xié)同編碼方法。

為達(dá)到以上目的,本發(fā)明采取的技術(shù)方案是:

一種軟硬件協(xié)同編碼方法,包括以下步驟:

將原始視頻圖像輸入硬件編碼器進(jìn)行編碼,得到多個由硬件編碼輸出的畫面組gop,同時還將原始視頻圖像輸入到圖像緩存隊列中;

根據(jù)cpu計算能力將所述多個由硬件編碼輸出的gop中的部分gop刪除;

從圖像緩存隊列中取出與被刪除的gop對應(yīng)的原始視頻圖像進(jìn)行軟件編碼;以及

將由硬件編碼輸出的gop和由軟件編碼輸出的gop輸出到編碼圖像隊列。

在上述技術(shù)方案的基礎(chǔ)上,定義初始的軟件編碼gop比例因子確定所述硬件編碼輸出的gop中應(yīng)刪除的gop的數(shù)量。

在上述技術(shù)方案的基礎(chǔ)上,定義軟件編碼gop比例因子的動態(tài)調(diào)整周期,并判斷一個動態(tài)調(diào)整周期是否結(jié)束,若是,根據(jù)cpu實時的計算能力,對軟件編碼gop比例因子進(jìn)行修正,由修正的軟件編碼gop比例因子動態(tài)調(diào)整所述硬件編碼輸出的gop中應(yīng)刪除的gop的數(shù)量,若否,保持原軟件編碼gop比例因子。

在上述技術(shù)方案的基礎(chǔ)上,所述動態(tài)調(diào)整周期表示為在對預(yù)設(shè)數(shù)量的gop所對應(yīng)的原始視頻圖像編碼后才對軟件編碼gop比例因子進(jìn)行修正。

在上述技術(shù)方案的基礎(chǔ)上,所述對軟件編碼gop比例因子進(jìn)行修正的步驟包括:

獲取最近一個刪除的gop所對應(yīng)的原始視頻圖像進(jìn)行軟件編碼時消耗的cpu的時間tr,得到進(jìn)行軟件編碼的最大頻率1/tr;

根據(jù)該gop在軟件編碼時所包含的編碼圖像數(shù)nf、圖像幀率fr和時間間隔tg,將tr轉(zhuǎn)換為標(biāo)準(zhǔn)值tr’=tr*(nf*fr/tg);

綜合考慮cpu計算能力空閑以及預(yù)測偏差,制定安全系數(shù)β進(jìn)行校正,其中0<β<1;

根據(jù)該gop的時間間隔tg、標(biāo)準(zhǔn)值tr’和安全系數(shù)β得到修正后的軟件編碼gop比例因子α=β*(tg/tr’)。

在上述技術(shù)方案的基礎(chǔ)上,根據(jù)初始的軟件編碼gop比例因子或修正的軟件編碼gop比例因子,采用位掩碼區(qū)分表示由硬件編碼輸出的gop和由軟件編碼輸出的gop。

在上述技術(shù)方案的基礎(chǔ)上,所述從圖像緩存隊列中取出與被刪除的gop對應(yīng)的視頻圖像進(jìn)行軟件編碼的步驟包括:

對被刪除的gop,掃描gop內(nèi)的每幀圖像的pts,計算得到最小pts和最大pts;

在圖像緩存隊列中的原始視頻圖像中順序查找最小pts和最大pts對應(yīng)的視頻圖像,將最小pts和最大pts之間的視頻圖像序列進(jìn)行軟件編碼輸出。

在上述技術(shù)方案的基礎(chǔ)上,將所述最小pts對應(yīng)的視頻圖像編碼成idr幀,同時將最大pts之前的視頻圖像從圖像緩存隊列中的原始視頻圖像中刪除。

與此同時,本發(fā)明還提供一種編碼效率高且能消除編碼卡頓和丟幀的軟硬件協(xié)同編碼系統(tǒng)。

為達(dá)到以上目的,本發(fā)明采取的技術(shù)方案是:

一種實現(xiàn)上述軟硬件協(xié)同編碼方法的系統(tǒng),包括:

硬件編碼器,其用于對原始視頻圖像進(jìn)行硬件編碼,并得到由硬件編碼輸出的gop;

軟件編碼決策模塊,其用于判斷所述硬件編碼輸出的gop中應(yīng)刪除的gop的數(shù)量;以及

軟件編碼器,其用于對原始視頻圖像進(jìn)行軟件編碼,并得到由軟件編碼輸出的gop。

在上述技術(shù)方案的基礎(chǔ)上,所述軟件編碼決策模塊還包括動態(tài)調(diào)整模塊,所述動態(tài)調(diào)整模塊用于定義動態(tài)調(diào)整周期,并在動態(tài)調(diào)整周期內(nèi)定義由硬件編碼和軟件編碼輸出的gop總量,所述動態(tài)調(diào)整模塊還用于判斷當(dāng)前已經(jīng)輸出的gop是否超過gop總量,若否,則軟件編碼決策模塊維持原應(yīng)刪除的gop的數(shù)量,若是,則軟件編碼決策模塊修正應(yīng)刪除的gop的數(shù)量。

與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:

本發(fā)明的軟硬件協(xié)同編碼方法采用了軟件編碼和硬件編碼相協(xié)同的方式進(jìn)行編碼,其中軟件編碼時考慮了cpu的計算能力,能夠充分利用設(shè)備有限的cpu資源,消除了軟件編碼對cpu資源消耗過多造成的編碼丟幀問題。通過軟件編碼和硬件編碼相協(xié)同的方式克服了現(xiàn)有技術(shù)中單純的硬件編碼導(dǎo)致編碼效率不高,單純的軟件編碼消耗cpu資源過多的問題。更進(jìn)一步的是,還能根據(jù)cpu實時的計算能力,進(jìn)行動態(tài)調(diào)整,實時調(diào)整硬件編碼和軟件編碼各自所占的比例,具體是通過修正軟件編碼gop比例因子來實現(xiàn)的。從而可以實時避免因cpu計算能力過度消耗,而導(dǎo)致緩存溢出丟幀的現(xiàn)象。此外,為了方便區(qū)分硬件編碼和軟件編碼的比例,還可以采用位掩碼來區(qū)分表示,更為形象化。

附圖說明

圖1為本發(fā)明實施例中軟硬件協(xié)同編碼方法的流程圖;

圖2為本發(fā)明實施例中軟硬件協(xié)同編碼系統(tǒng)的結(jié)構(gòu)框圖。

具體實施方式

以下結(jié)合附圖及實施例對本發(fā)明作進(jìn)一步詳細(xì)說明。

參見圖1所示,本發(fā)明實施例提供一種軟硬件協(xié)同編碼方法,包括以下步驟:

s1.配置硬件編碼器。

在進(jìn)行編碼之前,首先需要配置硬件編碼器,即對硬件編碼器進(jìn)行參數(shù)配置,通常包括原始視頻圖像寬高、顏色格式、gop(groupofpictures,畫面組)時間間隔、幀率、碼率或編碼質(zhì)量級別等進(jìn)行配置。

s2.將原始視頻圖像輸入硬件編碼器進(jìn)行編碼,得到多個由硬件編碼輸出的畫面組gop,同時還將原始視頻圖像輸入到圖像緩存隊列中。

原始視頻圖像輸入硬件編碼器進(jìn)行編碼,編碼后的視頻幀以gop輸出。硬件編碼器的參數(shù)集(如序列參數(shù)集和圖像參數(shù)集)中含有重要的編碼信息,從中可解析出視頻編碼幀的量化參數(shù)。

s3.根據(jù)cpu計算能力將多個由硬件編碼輸出的gop中的部分gop刪除。

硬件編碼輸出的gop一部分直接輸出到編碼圖像隊列,一部分被刪除。而被刪除的這部分gop對應(yīng)的原始視頻圖像將會由軟件編碼器進(jìn)行軟件編碼。具體有多少比例的gop會被刪除,而改由軟件編碼來代替,涉及到軟件編碼gop比例因子的計算。

通過定義初始的軟件編碼gop比例因子可以確定硬件編碼輸出的gop中應(yīng)刪除的gop的數(shù)量,在得知軟件編碼gop比例因子后,即可確定有多少比例的gop所對應(yīng)的原始視頻圖像應(yīng)由軟件編碼器來編碼,從而可以確定硬件編碼輸出的gop中應(yīng)刪除的gop的數(shù)量。

本實施例中為了能夠根據(jù)cpu實時的計算能力做出自適應(yīng)調(diào)整,定義了軟件編碼gop比例因子的動態(tài)調(diào)整周期。在每個動態(tài)調(diào)整周期結(jié)束時,根據(jù)cpu實時的計算能力,對軟件編碼gop比例因子進(jìn)行修正,由修正的軟件編碼gop比例因子動態(tài)調(diào)整所述硬件編碼輸出的gop中應(yīng)刪除的gop的數(shù)量。動態(tài)調(diào)整周期表示的是只有在對預(yù)設(shè)數(shù)量的gop所對應(yīng)的原始視頻圖像編碼后才對軟件編碼gop比例因子進(jìn)行修正,而沒有完成預(yù)設(shè)數(shù)量時將不會對軟件編碼gop比例因子進(jìn)行修正,將會保持原有的軟件編碼gop比例因子。這里對預(yù)設(shè)數(shù)量的gop所對應(yīng)的原始視頻圖像編碼包括硬件編碼和軟件編碼。

其中,對軟件編碼gop比例因子進(jìn)行修正的步驟包括:

(1)獲取最近一個刪除的gop對應(yīng)的原始視頻圖像進(jìn)行軟件編碼消耗的cpu的時間tr,得到進(jìn)行軟件編碼的最大頻率1/tr。

軟件編碼使用cpu資源,需要結(jié)合實際運行cpu的計算能力來確定軟件編碼gop比例因子,這樣既能充分利用cpu的處理能力,又能避免丟幀造成問題。對于最近一個刪除的gop對應(yīng)的原始視頻圖像進(jìn)行軟件編碼消耗的cpu的時間tr,如果超過這一上限頻率進(jìn)行軟件編碼,將導(dǎo)致cpu計算能力過度消耗,最終將導(dǎo)致緩存溢出丟幀。

(2)根據(jù)該gop在軟件編碼時所包含的編碼圖像數(shù)nf、圖像幀率fr和時間間隔tg,將tr轉(zhuǎn)換為標(biāo)準(zhǔn)值tr’=tr*(nf*fr/tg)。

實際編碼中,由于每個gop包含的編碼幀數(shù)可能不完全一致,為此需要將tr轉(zhuǎn)換為標(biāo)準(zhǔn)值tr’。

(3)綜合考慮cpu計算能力空閑以及預(yù)測偏差,制定安全系數(shù)β進(jìn)行校正,其中0<β<1。

考慮到cpu的計算能力應(yīng)該有一部分空閑,以及采用最近一個gop來預(yù)測存在一定偏差,因此需要乘以一個安全系數(shù)β進(jìn)行校正,這里0<β<1,本實施例中的β為0.6。

(4)根據(jù)該gop的時間間隔tg、標(biāo)準(zhǔn)值tr’和安全系數(shù)β得到修正后的軟件編碼gop比例因子α=β*(tg/tr’)。

首先可以定義初始的軟件編碼gop比例因子,比如1/10,然后便可以通過上述步驟來對初始的軟件編碼gop比例因子進(jìn)行修正。這里設(shè)動態(tài)修正周期為t,則在一個動態(tài)修正周期為t內(nèi),軟件編碼占比數(shù)為n=α*t。

更具體地,可以用位掩碼來表示哪些gop所對應(yīng)的原始視頻圖像應(yīng)該采用軟件編碼,哪些gop所對應(yīng)的原始視頻圖像采用硬件編碼。如t=10,α=0.6,n=6,則取10位來存儲標(biāo)記,其中6位標(biāo)記為1,表示采用軟件編碼,4位標(biāo)記為0,表示直接輸出硬編碼的編碼gop,其標(biāo)記掩碼為1111110000。

s4.配置軟件編碼器。

在利用軟件編碼器編碼時,同樣需要對軟件編碼器進(jìn)行配置,軟件編碼器除了硬件編碼器的基本配置參數(shù)外,可進(jìn)行更加具體的配置(如視頻內(nèi)容類別),這些配置可讓軟件編碼器針對應(yīng)用場景進(jìn)行編碼優(yōu)化。原始視頻寬高、顏色格式、gop時間間隔這些參數(shù),軟件編碼器采用與硬件編碼器同樣的配置。如果硬件編碼器采用碼率控制方式,軟件編碼器采用同樣的碼率配置,這樣可以提高畫面質(zhì)量。如果硬件編碼器采用恒定質(zhì)量級別控制方式,軟件編碼器設(shè)置與硬件編碼器同樣的量化參數(shù)。另外,如果實際應(yīng)用環(huán)境中播放器要求同樣的參數(shù)集,可配置軟件編碼器與硬件編碼器同樣的參數(shù)集。

s5.從圖像緩存隊列中取出與被刪除的gop對應(yīng)的原始視頻圖像進(jìn)行軟件編碼。

被決定使用軟件編碼重新編碼的gop,需要在原始視頻圖像隊列中查找對應(yīng)的原始視頻圖像。首先對被刪除的gop,掃描gop內(nèi)的每幀圖像的pts,計算得到最小pts和最大pts,然后在圖像緩存隊列中的原始視頻圖像中順序查找最小pts和最大pts對應(yīng)的視頻圖像,將最小pts和最大pts之間的視頻圖像序列進(jìn)行軟件編碼輸出。本實施例中將最小pts對應(yīng)的視頻圖像編碼成idr幀,同時將最大pts之前的視頻圖像從圖像緩存隊列中的原始視頻圖像中刪除,以釋放內(nèi)存空間。

s6.將由硬件編碼輸出的gop和由軟件編碼輸出的gop輸出到編碼圖像隊列。

此時,便完成了軟件編碼和硬件編碼的協(xié)同編碼。

參見圖2所示,本發(fā)明實施例還提供一種實現(xiàn)上述軟硬件協(xié)同編碼方法的系統(tǒng),其包括硬件編碼器、軟件編碼決策模塊和軟件編碼器。其中硬件編碼器用于對原始視頻圖像進(jìn)行硬件編碼,并得到由硬件編碼輸出的gop。軟件編碼決策模塊用于判斷硬件編碼輸出的gop中應(yīng)刪除的gop的數(shù)量。軟件編碼器用于對原始視頻圖像進(jìn)行軟件編碼,并得到由軟件編碼輸出的gop。

軟件編碼決策模塊還包括動態(tài)調(diào)整模塊,動態(tài)調(diào)整模塊用于定義動態(tài)調(diào)整周期,并在動態(tài)調(diào)整周期內(nèi)定義由硬件編碼和軟件編碼輸出的gop總量,動態(tài)調(diào)整模塊還用于判斷當(dāng)前已經(jīng)輸出的gop是否超過gop總量,若否,則軟件編碼決策模塊維持原應(yīng)刪除的gop的數(shù)量,若是,則軟件編碼決策模塊修正應(yīng)刪除的gop的數(shù)量。

綜上所述,本實施例采用了軟件編碼和硬件編碼相協(xié)同的方式進(jìn)行編碼,其中軟件編碼時考慮了cpu的計算能力,能夠充分利用設(shè)備有限的cpu資源,消除了軟件編碼對cpu資源消耗過多造成的編碼丟幀問題。通過軟件編碼和硬件編碼相協(xié)同的方式克服了現(xiàn)有技術(shù)中單純的硬件編碼導(dǎo)致編碼效率不高,單純的軟件編碼消耗cpu資源過多的問題。

更進(jìn)一步的是,本實施例還能根據(jù)cpu實時的計算能力,進(jìn)行動態(tài)調(diào)整,實時調(diào)整硬件編碼和軟件編碼各自所占的比例,具體是通過修正軟件編碼gop比例因子來實現(xiàn)的。從而可以實時避免因cpu計算能力過度消耗,而導(dǎo)致緩存溢出丟幀的現(xiàn)象。此外,為了方便區(qū)分硬件編碼和軟件編碼的比例,還可以采用位掩碼來區(qū)分表示,更為形象化。

本發(fā)明不局限于上述實施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù)范圍之內(nèi)。本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1