專利名稱:視頻編碼、解碼方法與視頻編碼、解碼裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種視頻圖像壓縮編碼技術(shù),尤其涉及一種視頻編碼、解碼方法與視
頻編碼、解碼裝置。
背景技術(shù):
網(wǎng)絡(luò)技術(shù)和多媒體技術(shù)的發(fā)展促使在互聯(lián)網(wǎng)上出現(xiàn)越來越多的流媒體應(yīng)用。流媒體數(shù)據(jù)在互聯(lián)網(wǎng)中的傳輸比例越來越大,對(duì)互聯(lián)網(wǎng)的傳輸能力帶來了挑戰(zhàn)。同時(shí),在無線通信領(lǐng)域,由于無線鏈路的帶寬低,帶寬被通信覆蓋范圍內(nèi)的通信節(jié)點(diǎn)所共享,因而較難滿足流媒體對(duì)通信帶寬的需求。 一般具有一定圖像質(zhì)量的視頻流往往對(duì)傳輸帶寬有較高要求,通常需要64Kbps以上的帶寬,這一要求仍然超過許多低速鏈路的傳輸能力,例如通用分組無線服務(wù)技術(shù)(General Packet Radio Service ;簡(jiǎn)稱為GPRS)的理論傳輸速率是171. 2Kbps,但目前實(shí)際使用中只能達(dá)到20 35Kbps的速率,無法滿足上述要求。
目前,針對(duì)傳輸帶寬較小的問題,現(xiàn)有一些提高無線鏈路上傳輸性能的方法。例如,在傳輸速度非常低,而比特差錯(cuò)發(fā)生率卻非常高的數(shù)字通信環(huán)境下,通過緩沖可變長度的視頻數(shù)據(jù)使按照國際標(biāo)準(zhǔn)壓縮的視頻位流與傳輸信道的狀態(tài)相適應(yīng),以提高視頻傳輸性能。又例如,在傳輸視頻壓縮數(shù)據(jù)的同時(shí),傳輸與視頻壓縮數(shù)據(jù)相對(duì)應(yīng)的控制碼,通過對(duì)不同種類的畫面數(shù)據(jù)以不同的壓縮格式進(jìn)行壓縮,使得傳輸數(shù)據(jù)量較小且有較好的畫面質(zhì)量。上述方法主要是從視頻數(shù)據(jù)傳輸過程來考慮的,而在流媒體應(yīng)用中,主要是對(duì)視頻數(shù)據(jù)進(jìn)行壓縮,以盡可能高的壓縮比減小數(shù)據(jù)量,以解決傳輸帶寬問題。 目前的視頻壓縮方法主要是從時(shí)間域和空間域兩個(gè)維度上進(jìn)行壓縮。其中,大部分視頻壓縮算法主要是從空間域上對(duì)圖像進(jìn)行壓縮處理,這種方法通過利用空間域上的冗余信息,來提高視頻數(shù)據(jù)的壓縮比,但是未能充分利用時(shí)間域上的信息冗余。因此,為了進(jìn)一步提高無線鏈路上視頻數(shù)據(jù)的壓縮比,有人提出了通過在數(shù)據(jù)發(fā)送端和接收端存儲(chǔ)一定量的數(shù)據(jù)壓縮狀態(tài)信息,利用數(shù)據(jù)流中存在的重復(fù)性減少時(shí)間域上信息冗余的有狀態(tài)壓縮編碼方法。例如,在網(wǎng)絡(luò)層次,RFC 4996定義的傳輸控制協(xié)議/因特網(wǎng)互聯(lián)協(xié)議(Transmission Control Protocol/Internet Protocol ;簡(jiǎn)稱為TCP/IP)分組頭的壓縮方法、RFC 5225定義的實(shí)時(shí)傳送協(xié)議(Real-time TransportProtocol ;簡(jiǎn)稱為RTP)、用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol ;簡(jiǎn)稱為UDP)等協(xié)議分組頭的壓縮方法屬于有狀態(tài)壓縮編碼方法,這些方法壓縮了分組頭中的數(shù)據(jù),可與視頻數(shù)據(jù)的壓縮方法聯(lián)合使用。
但是,現(xiàn)有的有狀態(tài)壓縮編碼方法只是利用了視頻數(shù)據(jù)在短時(shí)間尺度上的相關(guān)性,并未考慮長時(shí)間尺度上的相關(guān)性,例如MPEG-2,因此,有狀態(tài)壓縮編碼方法有待于改進(jìn),以進(jìn)一步提高視頻數(shù)據(jù)的壓縮比,降低視頻數(shù)據(jù)傳輸對(duì)網(wǎng)絡(luò)帶寬的要求,解決在帶寬受限的無線網(wǎng)絡(luò)和互聯(lián)網(wǎng)中傳輸高質(zhì)量的視頻數(shù)據(jù)的問題。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的是提供一種視頻編碼、解碼方法與視頻編碼、解碼裝置,以提高視頻數(shù)據(jù)的壓縮比,降低視頻數(shù)據(jù)傳輸對(duì)網(wǎng)絡(luò)帶寬的要求。 為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供了一種視頻編碼方法,包括 緩存多個(gè)第一關(guān)鍵幀,所述多個(gè)第一關(guān)鍵幀分別對(duì)應(yīng)距離當(dāng)前幀不同時(shí)間段的關(guān)
鍵幀,每個(gè)所述第一關(guān)鍵幀具有一第一索引值; 分別以每個(gè)所述第一關(guān)鍵幀為參考幀,對(duì)原始視頻流進(jìn)行編碼,生成多個(gè)第一編碼視頻幀; 將所述多個(gè)第一編碼視頻幀進(jìn)行比較,獲取輸出視頻幀和輸出索引值,所述輸出視頻幀為壓縮比最大的第一編碼視頻幀,所述輸出索引值為作為所述輸出視頻幀的參考幀的第一關(guān)鍵幀的第一索引值; 輸出所述輸出視頻幀和所述輸出索引值。 為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供了一種視頻解碼方法,包括 接收輸入數(shù)據(jù)幀,所述輸入數(shù)據(jù)幀至少包括輸入視頻幀和輸入索引值; 從預(yù)先緩存的多個(gè)第二關(guān)鍵幀確定解碼所述輸入視頻幀的第二關(guān)鍵幀,所述輸入
索引值與編碼所述輸入視頻幀的第一關(guān)鍵幀和解碼所述輸入視頻幀的第二關(guān)鍵幀存在映
射關(guān)系,所述多個(gè)第二關(guān)鍵幀分別對(duì)應(yīng)距離當(dāng)前幀不同時(shí)間段的關(guān)鍵幀 以確定的第二關(guān)鍵幀為參考幀,對(duì)所述輸入視頻幀進(jìn)行解碼,得到解碼視頻流。 為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供了一種視頻編碼裝置,包括 第一存儲(chǔ)模塊,緩存多個(gè)第一關(guān)鍵幀,所述多個(gè)第一關(guān)鍵幀分別對(duì)應(yīng)距離當(dāng)前幀
不同時(shí)間段的關(guān)鍵幀,每個(gè)所述第一關(guān)鍵幀具有一第一索引值; 編碼生成模塊,用于分別以每個(gè)所述第一關(guān)鍵幀為參考幀,對(duì)原始視頻流進(jìn)行編碼,生成多個(gè)第一編碼視頻幀; 比較獲取模塊,用于將所述多個(gè)第一編碼視頻幀進(jìn)行比較,獲取輸出視頻幀和輸出索引值,所述輸出視頻幀為壓縮比最大的第一編碼視頻幀,所述輸出索引值為作為所述輸出視頻幀的參考幀的第一關(guān)鍵幀的第一索引值; 第一輸出模塊,用于輸出所述輸出視頻幀和所述輸出索引值。 為實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供了一種視頻解碼裝置,包括 第二存儲(chǔ)模塊,用于緩存多個(gè)第二關(guān)鍵幀,所述多個(gè)第二關(guān)鍵幀分別對(duì)應(yīng)距離當(dāng)
前幀不同時(shí)間段的關(guān)鍵幀; 接收模塊,用于接收輸入數(shù)據(jù)幀,所述輸入數(shù)據(jù)幀至少包括輸入視頻幀和輸入索引值; 確定模塊,用于從預(yù)先緩存的所述多個(gè)第二關(guān)鍵幀確定解碼所述輸入視頻幀的第二關(guān)鍵幀,所述輸入索引值與編碼所述輸入視頻幀的第一關(guān)鍵幀和解碼所述輸入視頻幀的第二關(guān)鍵幀存在映射關(guān)系; 解碼輸出模塊,用于以確定的第二關(guān)鍵幀為參考幀,對(duì)所述輸入視頻幀進(jìn)行解碼,得到解碼視頻流。 由上述技術(shù)方案可知,本發(fā)明實(shí)施例提供的視頻編碼、解碼方法與視頻編碼、解碼裝置,通過緩存多個(gè)距離當(dāng)前幀不同時(shí)間段的第一關(guān)鍵幀,充分利用了視頻場(chǎng)景中長時(shí)間尺度上的相關(guān)性,在不降低圖像質(zhì)量的情況下,提高了視頻數(shù)據(jù)的壓縮比,降低了視頻數(shù)據(jù)傳輸對(duì)網(wǎng)絡(luò)帶寬的要求。
圖1為本發(fā)明一實(shí)施例提供的視頻編碼方法的流程 圖2為本發(fā)明一實(shí)施例提供的視頻解碼方法的流程 圖3為本發(fā)明一實(shí)施例提供的視頻編碼裝置的結(jié)構(gòu)示意 圖4為本發(fā)明一實(shí)施例提供的視頻解碼裝置的結(jié)構(gòu)示意 圖5為本發(fā)明一實(shí)施例提供的視頻傳輸系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
下面通過附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。
圖1為本發(fā)明一實(shí)施例提供的視頻編碼方法的流程圖,本實(shí)施例的執(zhí)行主體為視頻編碼裝置,更具體的為視頻編碼裝置中的多個(gè)編碼生成單元,如圖1所示,本實(shí)施例提供的視頻編碼方法包括 步驟101,緩存多個(gè)第一關(guān)鍵幀,多個(gè)第一關(guān)鍵幀分別對(duì)應(yīng)距離當(dāng)前幀不同時(shí)間段的關(guān)鍵幀,每個(gè)第一關(guān)鍵幀具有一第一索引值; 其中,第一索引值用于標(biāo)識(shí)不同的第一關(guān)鍵幀,有效的第一索引值為一個(gè)大于或等于O的整數(shù),例如,可以用編碼生成單元的編號(hào)作為相應(yīng)第一關(guān)鍵幀的第一索引值,每個(gè)編碼生成單元對(duì)應(yīng)一個(gè)第一關(guān)鍵幀; 其中,關(guān)鍵幀主要用于視頻編碼裝置的初始化和信道的獲取,以及節(jié)目的切換和
插入,關(guān)鍵幀的壓縮倍數(shù)相對(duì)較低,是后續(xù)視頻數(shù)據(jù)壓縮的基準(zhǔn)。通過合理緩存多個(gè)距離當(dāng)
前幀不同時(shí)間段的關(guān)鍵幀,可以體現(xiàn)視頻數(shù)據(jù)在長時(shí)間尺度上的相關(guān)性。 步驟102,分別以每個(gè)第一關(guān)鍵幀為參考幀,對(duì)原始視頻流進(jìn)行編碼,生成多個(gè)第
一編碼視頻幀; 具體的,每個(gè)編碼生成單元接收原始視頻流,并基于該編碼生成單元當(dāng)前所對(duì)應(yīng)
的第一關(guān)鍵幀,對(duì)原始視頻流進(jìn)行編碼,生成編碼后的視頻幀,即第一編碼視頻幀,多個(gè)編
碼生成單元并行對(duì)原始視頻流進(jìn)行編碼,得到多個(gè)第一編碼視頻幀。 步驟103,將多個(gè)第一編碼視頻幀進(jìn)行比較,獲取輸出視頻幀和輸出索引值; 其中,輸出視頻幀為壓縮比最大的第一編碼視頻幀,輸出索引值為作為輸出視頻
幀的參考幀的第一關(guān)鍵幀的第一索引值。 步驟104,輸出輸出視頻幀和輸出索引值。 本實(shí)施例提供的視頻編碼方法,通過在視頻編碼裝置中緩存多個(gè)距離當(dāng)前幀不同時(shí)間段的第一關(guān)鍵幀,并基于多個(gè)第一關(guān)鍵幀,同時(shí)對(duì)輸入的原始視頻流進(jìn)行編碼,從編碼結(jié)果中選擇壓縮比最大的作為輸出視頻幀,本實(shí)施例提供的技術(shù)方案充分利用了視頻場(chǎng)景中這種長時(shí)間尺度上的相關(guān)性,在保證圖像質(zhì)量的情況下,提高了視頻數(shù)據(jù)的壓縮比,從而降低了視頻數(shù)據(jù)傳輸對(duì)網(wǎng)絡(luò)帶寬的要求。 下面通過具體的實(shí)施例對(duì)上述實(shí)施例中各個(gè)步驟的具體實(shí)現(xiàn)過程進(jìn)行詳細(xì)的說明。 具體的,步驟101在緩存多個(gè)第一關(guān)鍵幀之前,還包括對(duì)視頻數(shù)據(jù)的采集過程,視頻數(shù)據(jù)可以是通過視頻采集設(shè)備采集的實(shí)時(shí)視頻流,也可以是從視頻文件經(jīng)過解碼得到的視頻流。本實(shí)施例提供一種完整實(shí)現(xiàn)步驟101的方法,具體為 視頻采集設(shè)備,例如攝像頭,對(duì)應(yīng)用場(chǎng)景進(jìn)行采集生成實(shí)時(shí)視頻流,將視頻流送入視頻編碼裝置中的編碼生成單元中,進(jìn)行編碼。由于原始視頻流中傳送的第一個(gè)視頻幀必然是關(guān)鍵幀,因此,第一視頻幀將被視頻編碼裝置存儲(chǔ)起來作為初始的第一關(guān)鍵幀。假如視頻編碼裝置可以存儲(chǔ)N個(gè)關(guān)鍵幀,則原始視頻流中其后的N-l個(gè)關(guān)鍵幀也會(huì)被存儲(chǔ)起來,用于作為后續(xù)的第一關(guān)鍵幀,從而完成對(duì)第一關(guān)鍵幀的初始化,用于對(duì)后續(xù)的原始視頻流進(jìn)行編碼處理。 其中,第一關(guān)鍵幀出現(xiàn)的頻率是由視頻編碼裝置中的編碼生成單元所采用的編碼方法決定的,并且多個(gè)編碼生成單元采用的編碼方法可以相同,也可以不同,可以是現(xiàn)有的各種視頻壓縮編碼方法,也可以開發(fā)新的視頻壓縮編碼方法,只要與解碼裝置采用的解碼方法相對(duì)應(yīng)即可。例如,當(dāng)編碼生成單元采用MPEG-2編碼標(biāo)準(zhǔn)時(shí),則第一關(guān)鍵幀為I幀,視頻編碼裝置存儲(chǔ)N個(gè)I幀,用于對(duì)后續(xù)原始視頻流進(jìn)行編碼,而非第一關(guān)鍵幀為P幀和B幀。在MPEG-2視頻中,一個(gè)圖象組(Group Of Pictures ;簡(jiǎn)稱為G0P)中包含多個(gè)幀,包括I-幀、P-幀和B-幀。其中,第一個(gè)編碼幀為I幀,I幀是只使用本幀內(nèi)的視頻數(shù)據(jù)進(jìn)行編碼的視頻數(shù)據(jù),即只對(duì)本幀內(nèi)的圖象塊進(jìn)行DCT變換、量化和熵編碼等壓縮處理,I-幀采用幀內(nèi)編碼減少了空間域上的冗余;P-幀采用前向估計(jì),B-幀采用雙向估計(jì),需要以一個(gè)I幀和一個(gè)P幀,或者是前后兩個(gè)P幀為參考幀進(jìn)行壓縮編碼,利用相鄰幀之間的相關(guān)性對(duì)圖像進(jìn)行壓縮編碼,減少時(shí)間域上的冗余。在上述技術(shù)方案的基礎(chǔ)上,步驟102,分別以步驟101存儲(chǔ)的N個(gè)第一關(guān)鍵幀中的一個(gè)為參考幀,對(duì)原始視頻流進(jìn)行編碼,生成多個(gè)第一編碼視頻幀,具體實(shí)現(xiàn)過程為 當(dāng)視頻編碼裝置接收到原始視頻流時(shí),分別送入N個(gè)編碼生成單元中,其中,每個(gè)
編碼生成單元對(duì)應(yīng)不同的I幀,即第一關(guān)鍵幀,并基于所對(duì)應(yīng)的I幀對(duì)原始視頻流進(jìn)行編碼
處理,生成第一編碼視頻幀,第一編碼視頻幀的幀類型可能是P幀、B幀或者I幀,具體視視
頻場(chǎng)景的變化和編碼方法而定,N個(gè)編碼生成單元對(duì)應(yīng)生成N個(gè)第一編碼視頻幀 其中,編碼生成單元對(duì)原始視頻流進(jìn)行處理的過程均與MPEG-2編碼標(biāo)準(zhǔn)相同。例
如,對(duì)I幀,基于幀內(nèi)數(shù)據(jù)進(jìn)行編碼處理;對(duì)P幀,以I幀或P幀作為參考幀對(duì)原始視頻流進(jìn)
行壓縮處理;對(duì)B幀,基于一個(gè)I幀和一個(gè)P幀,或者是前后兩個(gè)P幀,對(duì)原始視頻流進(jìn)行壓
縮處理。因此,在編碼端不僅需要緩存I幀,還需要緩存前后兩個(gè)P幀,具體的實(shí)現(xiàn)依賴于
MPEG-2標(biāo)準(zhǔn)的編碼過程。由于是本領(lǐng)域很熟知的技術(shù),因此不再贅述。 基于上述技術(shù)方案,步驟103對(duì)步驟102生成的多個(gè)第一編碼視頻幀進(jìn)行比較,選
擇壓縮比最大的作為輸出視頻幀,具體的 本實(shí)施例選擇第一編碼視頻幀中字節(jié)數(shù)最少的作為輸出視頻幀,同時(shí)將產(chǎn)生輸出視頻幀的編碼生成單元對(duì)應(yīng)的第一關(guān)鍵幀的第一索引值作為與輸出視頻幀對(duì)應(yīng)的輸出索引值。例如,輸出索引值可以是生成輸出視頻幀的編碼生成單元的編號(hào),其中,獲取輸出索引值以便于在視頻解碼端能夠正確解碼輸出視頻幀。 發(fā)明人在實(shí)現(xiàn)本發(fā)明過程中發(fā)現(xiàn),現(xiàn)有技術(shù)中,從時(shí)間域上對(duì)視頻流進(jìn)行壓縮時(shí),一般假定視頻流由連續(xù)多個(gè)視頻片段組成,每個(gè)視頻片段的持續(xù)時(shí)間不長,由時(shí)間上相關(guān)的圖像幀構(gòu)成,因此,現(xiàn)有方法主要是在短時(shí)間尺度上對(duì)視頻流進(jìn)行了視頻壓縮,現(xiàn)有技術(shù)并沒有考慮長時(shí)間尺度上視頻數(shù)據(jù)的相關(guān)性。而在一些圖像變化不劇烈的場(chǎng)景中,例如視頻監(jiān)控、視頻電話、視頻會(huì)議等,視頻流呈現(xiàn)長時(shí)間尺度上的相關(guān)性。而在實(shí)施本發(fā)明的過程中,還發(fā)現(xiàn),對(duì)同樣的原始視頻流編碼生成的第一編碼視頻幀,由于作為壓縮參考幀的第一關(guān)鍵幀不同,第一編碼視頻幀的輸出字節(jié)不同。其中,輸出字節(jié)數(shù)最少的說明壓縮比最大,進(jìn)而說明用于壓縮該原始視頻流的第一關(guān)鍵幀與原始視頻流的相關(guān)性最大,并且具有最大相關(guān)性的第一關(guān)鍵幀距離當(dāng)前幀的時(shí)間段并不確定,充分說明本發(fā)明技術(shù)方案通過利用視頻數(shù)據(jù)在長時(shí)間尺度上的相關(guān)性,在不降低圖像質(zhì)量的情況下,能夠取得更高的視頻壓縮比,降低視頻數(shù)據(jù)傳輸對(duì)網(wǎng)絡(luò)帶寬的要求。 在步驟103實(shí)現(xiàn)的基礎(chǔ)上,通過步驟104將獲取的輸出視頻幀和輸出索引值輸出。具體地,按照與視頻解碼裝置約定的傳輸協(xié)議,例如可以是面向連接的傳輸控制協(xié)議(Transmission Control Protocol ;簡(jiǎn)稱為TCP)、無連接的用戶數(shù)據(jù)報(bào)傳輸協(xié)議(UserDatagram Protocol ;簡(jiǎn)稱為UDP),通過傳輸裝置將輸出視頻幀和輸出索引值發(fā)送給視頻解碼裝置,其中,傳輸裝置可以是無線網(wǎng)絡(luò)通信裝置,例如GPRS傳輸模塊、無線以太網(wǎng)適配器、衛(wèi)星通信模塊以及無線電臺(tái),也可以是有線網(wǎng)絡(luò)通信裝置,如百兆/千兆以太網(wǎng)、電話撥號(hào)通信裝置等。其中,關(guān)鍵幀和非關(guān)鍵幀具有不同的可靠性要求,具體采用哪種傳輸協(xié)議,根據(jù)輸出視頻幀對(duì)可靠性要求的高低而定,例如,I幀可靠性要求最高,P幀次之,B幀最低。當(dāng)對(duì)可靠性要求較高時(shí),可以采用TCP協(xié)議,否則可以采用UDP協(xié)議。而對(duì)于輸出索引值,是視頻解碼裝置解碼的依據(jù),因此,本實(shí)施例中將輸出索引值與輸出視頻幀封裝在一起,同時(shí)傳輸給數(shù)據(jù)目的端。 采用上述技術(shù)方案,可以緩存反映視頻場(chǎng)景中長時(shí)間尺度上相關(guān)性的多個(gè)第一關(guān)
鍵幀,基于多個(gè)第一關(guān)鍵幀同時(shí)對(duì)同一原始視頻流進(jìn)行編碼,從編碼結(jié)果中選擇壓縮比最
大的作為輸出視頻幀,充分利用視頻場(chǎng)景中這種長時(shí)間尺度上的相關(guān)性,提高視頻數(shù)據(jù)的
壓縮比,降低了視頻數(shù)據(jù)傳輸對(duì)網(wǎng)絡(luò)帶寬的要求,同時(shí),上述技術(shù)方案并未限制各個(gè)編碼生
成單元采用的編碼方法,通過采用與視頻環(huán)境相適應(yīng)的編碼方法,可以保證圖像質(zhì)量,因
此,本實(shí)施例提供的視頻編碼方法,在保證圖像質(zhì)量的情況下,提高了視頻數(shù)據(jù)的壓縮比,
實(shí)現(xiàn)了在帶寬受限的無線鏈路和互聯(lián)網(wǎng)鏈路上傳輸高質(zhì)量的視頻數(shù)據(jù)。 基于上述技術(shù)方案,進(jìn)一步的,當(dāng)視頻場(chǎng)景發(fā)生變化時(shí),根據(jù)第一關(guān)鍵幀的定義可
知,輸出視頻幀可能是將在后續(xù)的視頻編碼過程中使用的第一關(guān)鍵幀,即輸出視頻幀的幀
類型是關(guān)鍵幀,本實(shí)施例具體指I幀。若輸出視頻幀的幀類型是關(guān)鍵幀,即I幀時(shí),需要用
該輸出視頻幀替換原有的第一關(guān)鍵幀(I幀)中的一個(gè),以保證用于編碼原始視頻流的第一
關(guān)鍵幀總是距離當(dāng)前幀最近的、相關(guān)性最強(qiáng)的關(guān)鍵幀。具體為,將多個(gè)第一關(guān)鍵幀中不作為
輸出視頻幀的參考幀的其中一個(gè)第一關(guān)鍵幀,用輸出視頻幀替換。本實(shí)施例提供了兩種優(yōu)
選的實(shí)現(xiàn)方法, 一種是基于相似度, 一種是基于使用頻度。 其中,基于相似度的實(shí)現(xiàn)方法具體為除去作為輸出視頻幀的參考幀的第一關(guān)鍵
幀,從剩余的N-l個(gè)第一關(guān)鍵幀(I幀)中選擇相似度與輸出視頻幀最大(或最小)的一
個(gè),作為被輸出視頻幀替換的第一關(guān)鍵幀,其中,相似度定義為兩幅圖像的相似程度,例如,
可以通過Waston距離對(duì)兩幅圖像的相似度進(jìn)行估計(jì)。然后,用輸出視頻幀替換被選擇替換
的第一關(guān)鍵幀,具體的,將輸出視頻幀存儲(chǔ)到被選擇替換的第一關(guān)鍵幀的存儲(chǔ)單元中,同時(shí)
記錄被選擇替換的第一關(guān)鍵幀的第一索引值,并輸出為視頻解碼端的第三索引值。 基于使用頻度的實(shí)現(xiàn)方法具體為除去作為輸出視頻幀的參考幀的第一視頻關(guān)鍵
8幀,從剩余的N-1個(gè)第一關(guān)鍵幀(I幀)中選擇使用頻度最低的一個(gè),作為被輸出視頻幀替換的第一關(guān)鍵幀,其中,將第一時(shí)間內(nèi)以某一個(gè)第一關(guān)鍵幀為參考幀時(shí)產(chǎn)生的輸出視頻幀的個(gè)數(shù),與第一時(shí)間內(nèi)產(chǎn)生的總的輸出視頻幀的個(gè)數(shù)的比值,稱為該第一關(guān)鍵幀的使用頻度,每個(gè)第一關(guān)鍵幀都有自己的使用頻度,其中第一時(shí)間可以是從輸入原始視頻流開始計(jì)時(shí)的一段時(shí)間,也可以是人為設(shè)定的一個(gè)具體時(shí)間段,例如2分鐘,本實(shí)施例并不對(duì)此進(jìn)行限制,使用者可以結(jié)合實(shí)際的視頻場(chǎng)景和具體的編碼方法自行設(shè)置。然后,用輸出視頻幀替換被選擇替換的第一關(guān)鍵幀,具體的,將輸出視頻幀存儲(chǔ)到被輸出視頻幀替換的第一關(guān)鍵幀的存儲(chǔ)單元中,同時(shí)記錄所述被選擇替換的第一關(guān)鍵幀的第一索引值,并輸出為視頻解碼端的第三索引值。 同時(shí),若輸出視頻幀是后續(xù)編碼過程將要使用的第一關(guān)鍵幀,則對(duì)傳輸?shù)目煽啃?br>
要求較高,不容許丟失,因此可以采用TCP協(xié)議進(jìn)行傳輸,同樣,可以采用TCP協(xié)議將被選擇
替換的第一關(guān)鍵幀的第一索引值和輸出視頻幀一起傳輸給數(shù)據(jù)目的端。 當(dāng)輸出視頻幀為后續(xù)編碼過程將要使用的第一關(guān)鍵幀時(shí),采用上述技術(shù)方案,可
以實(shí)現(xiàn)對(duì)視頻編碼裝置中存儲(chǔ)的多個(gè)第一關(guān)鍵幀的更新,使本實(shí)施例緩存的總是與當(dāng)前幀
距離最近的、相關(guān)性最強(qiáng)的最能體現(xiàn)長時(shí)間尺度上的相關(guān)性的第一關(guān)鍵幀,保證本實(shí)施例
提供的視頻編碼方法,充分利用視頻場(chǎng)景中這種長時(shí)間尺度上的相關(guān)性,提高視頻數(shù)據(jù)的
壓縮比,從而實(shí)現(xiàn)了在帶寬受限的無線鏈路和互聯(lián)網(wǎng)鏈路上傳輸高質(zhì)量的視頻數(shù)據(jù)。 同時(shí),發(fā)明人在實(shí)現(xiàn)本發(fā)明技術(shù)方案的過程中發(fā)現(xiàn),本發(fā)明提供的技術(shù)方案與現(xiàn)
有技術(shù)中從空間域上對(duì)圖像進(jìn)行壓縮處理的方法不同,基于空間域的壓縮方法一般是,先
從圖像中提取對(duì)象、將圖像分塊,然后對(duì)對(duì)象或圖像塊分別進(jìn)行壓縮編碼處理,例如,將圖
像劃分為背景區(qū)域和物體區(qū)域,根據(jù)劃分結(jié)果,對(duì)背景區(qū)域和物體區(qū)域分別進(jìn)行不同的壓
縮編碼;或者,在發(fā)送端對(duì)輸入視頻數(shù)據(jù)進(jìn)行預(yù)處理后,將圖像分為前景圖像和背景圖像,
對(duì)前景圖像和背景圖像分別進(jìn)行考慮和調(diào)整準(zhǔn)峰值(Quasi-Peak Value ;簡(jiǎn)稱為QP值),
其中預(yù)處理包括運(yùn)動(dòng)估計(jì)、運(yùn)動(dòng)補(bǔ)償、離散余弦變換(DiscreteCosine Transform ;簡(jiǎn)稱為
DCT變換)、量化以及熵編碼等;又或者,將分塊后圖像進(jìn)行并行編碼,以提高視頻壓縮和解
碼速度。也有方法通過運(yùn)動(dòng)預(yù)測(cè)和補(bǔ)償處理得到原始視頻圖像序列的殘差,將殘差映射到
向量空間,然后通過對(duì)向量進(jìn)行多次降維的方法,以求降低數(shù)據(jù)量。但是,上述方法只是利
用了視頻數(shù)據(jù)在空間域上的冗余信息,并未利用時(shí)間域上的冗余信息,而本發(fā)明的技術(shù)方
案通過緩存多個(gè)距離當(dāng)前幀不同時(shí)間段的關(guān)鍵幀,并結(jié)合現(xiàn)有的編碼方法,不僅保證了圖
像質(zhì)量,充分利用了時(shí)間域上的冗余信息,而且充分利用了長時(shí)間尺度上的相關(guān)性,提高了
視頻數(shù)據(jù)的壓縮比,降低了視頻數(shù)據(jù)傳輸對(duì)帶寬的要求。 圖2為本發(fā)明一實(shí)施例提供的視頻解碼方法的流程圖,本實(shí)施例的執(zhí)行主體是視頻解碼裝置,如圖2所示,本實(shí)施例提供的視頻解碼方法包括 步驟201,接收輸入數(shù)據(jù)幀,輸入數(shù)據(jù)幀至少包括輸入視頻幀和輸入索引值;
其中,輸入索引值用于標(biāo)識(shí)編碼輸入視頻幀的第一關(guān)鍵幀;輸入數(shù)據(jù)幀是由視頻編碼端通過網(wǎng)絡(luò)傳輸裝置傳輸過來的經(jīng)過編碼后的視頻幀。 步驟202,從預(yù)先緩存的多個(gè)第二關(guān)鍵幀確定解碼輸入視頻的第二關(guān)鍵幀;
其中,多個(gè)第二關(guān)鍵幀分別對(duì)應(yīng)距離當(dāng)前幀不同時(shí)間段的關(guān)鍵幀,且多個(gè)第二關(guān)鍵幀與視頻編碼裝置中緩存的多個(gè)第一關(guān)鍵幀相同或者相應(yīng),是進(jìn)行視頻解碼的基礎(chǔ),每個(gè)第二關(guān)鍵幀具有一第二索引值,有效的第二索引值也是大于或者等于零的整數(shù),且第二索引值與視頻編碼端的第一索引值相應(yīng)或者相同。例如,可以是視頻解碼裝置中各個(gè)解碼生成單元的編碼號(hào),也可以就是第一索引值,其中,輸入索引值與編碼輸入視頻幀的第一關(guān)鍵幀和解碼輸入視頻幀的第二關(guān)鍵幀存在映射關(guān)系,即根據(jù)輸入索引值可以找到與編碼輸入視頻幀的第一關(guān)鍵幀相應(yīng)的第二關(guān)鍵幀,用來解碼輸入視頻幀。 步驟203,以確定的第二關(guān)鍵幀為參考幀,對(duì)輸入視頻幀進(jìn)行解碼,得到解碼視頻流。 具體的,視頻解碼裝置中包含多個(gè)解碼生成單元,每個(gè)解碼生成單元對(duì)應(yīng)一個(gè)第二關(guān)鍵幀,并在被選中時(shí),基于對(duì)應(yīng)的第二關(guān)鍵幀對(duì)輸入視頻幀進(jìn)行解碼,生成解碼視頻流。因此,經(jīng)步驟202確定用于解碼輸入視頻幀的第二關(guān)鍵幀,即確定了解碼生成單元,將輸入視頻幀送入該解碼生成單元中,由解碼生成單元基于對(duì)應(yīng)的第二關(guān)鍵幀,通過與視頻編碼端預(yù)先約定的解碼方法對(duì)輸入視頻幀進(jìn)行解碼,其解碼過程是視頻編碼端的編碼過程的逆過程; 解碼后得到的解碼視頻流可以傳送給視頻播放裝置進(jìn)行播放,也可以傳送給數(shù)據(jù)存儲(chǔ)裝置保存,還可以傳送給其他需要該解碼視頻流的裝置。 采用上述技術(shù)方案,通過輸入數(shù)據(jù)幀中的輸入索引值,從緩存的多個(gè)第二關(guān)鍵幀中確定用于解碼輸入視頻幀的第二關(guān)鍵幀,完成對(duì)輸入視頻幀的解碼,本實(shí)施例提供的視頻解碼方法,與本發(fā)明實(shí)施例提供的視頻編碼方法相適應(yīng),在保證解碼后的圖像質(zhì)量的同時(shí),保證了視頻編碼方法充分發(fā)揮其優(yōu)點(diǎn),即通過利用視頻場(chǎng)景中長時(shí)間尺度上的相關(guān)性,在保證了圖像質(zhì)量的同時(shí),提高視頻數(shù)據(jù)壓縮比。 基于上述技術(shù)方案,當(dāng)視頻編碼端的輸出視頻幀是后續(xù)視頻編碼過程中將要使用的一第一關(guān)鍵幀時(shí),對(duì)應(yīng)于本實(shí)施例中的輸入視頻幀是在后續(xù)視頻解碼過程中將要使用的一第二關(guān)鍵幀,則輸入數(shù)據(jù)幀中還包括一第三索引值,用于標(biāo)識(shí)將要被該輸入視頻幀替換的第二關(guān)鍵幀。視頻解碼裝置根據(jù)接收到的第三索引值,從緩存的多個(gè)第二視頻關(guān)鍵幀中確定與第三索引值對(duì)應(yīng)的第二關(guān)鍵幀,將輸入視頻幀存儲(chǔ)到與第三索引值對(duì)應(yīng)的第二關(guān)鍵幀的存儲(chǔ)單元中,用于解碼后續(xù)的輸入視頻幀。 上述技術(shù)方案與本發(fā)明實(shí)施例提供的視頻編碼方法相適應(yīng),通過輸入數(shù)據(jù)幀中的第三索引值,實(shí)現(xiàn)對(duì)第二關(guān)鍵幀的更新,使視頻解碼端緩存的第二關(guān)鍵幀與視頻編碼端緩存的第一關(guān)鍵幀保持同步,保證來自視頻編碼端的視頻壓縮數(shù)據(jù)能夠被正確解碼,通過該視頻解碼方法保證了解碼后的圖像質(zhì)量,同時(shí),為本發(fā)明實(shí)施例提供的視頻編碼方法實(shí)施以及視頻編碼方法優(yōu)勢(shì)的發(fā)揮,打下了基礎(chǔ)。 基于上述技術(shù)方案的描述,下面實(shí)施例對(duì)本發(fā)明提供的視頻編碼方法和視頻解碼方法作進(jìn)一步的詳細(xì)描述。 在以下實(shí)施例中,假設(shè)視頻編碼端緩存的第一關(guān)鍵幀的個(gè)數(shù)為N,對(duì)應(yīng)于視頻解碼端緩存的第二關(guān)鍵幀的個(gè)數(shù)也為N。而多個(gè)第一關(guān)鍵幀和多個(gè)第二關(guān)鍵幀分別對(duì)應(yīng)距離當(dāng)前幀不同時(shí)間段的關(guān)鍵幀,其中,距離當(dāng)前幀的時(shí)間段可以通過各個(gè)關(guān)鍵幀之間的時(shí)間間隔來體現(xiàn),所述時(shí)間間隔可以相同,也可以不同,為便于說明本發(fā)明的技術(shù)方案,以下實(shí)施例以所述時(shí)間間隔相同為例。 步驟301,緩存多個(gè)第一關(guān)鍵幀Ii(i = lAN),且第一關(guān)鍵幀Ii的第一索引值為
10Vi,假設(shè)當(dāng)前幀為1。,則Ii = I。+iX Ati,其中Atji = IAN)表示不同第一關(guān)鍵幀之間的 時(shí)間間隔,可以相同,可以不同。本實(shí)施例以多個(gè)第一關(guān)鍵幀之間的時(shí)間間隔相同為例,則 工i = ^+iX At,其中,令= A = AtN= At,但是本領(lǐng)域技術(shù)人員可以理解,關(guān)鍵幀 之間的時(shí)間間隔與實(shí)際視頻場(chǎng)景的變化和所采用的編碼方法相關(guān)。 步驟302,以第一關(guān)鍵幀Ii為參考幀,對(duì)原始視頻流進(jìn)行編碼,生成第一編碼視頻 幀A ; 步驟303,將多個(gè)第一編碼視頻幀CIi進(jìn)行比較,獲取輸出視頻幀和輸出索引值,本 實(shí)施例假設(shè)壓縮比最大的第一編碼視頻幀為CI3,即以第一關(guān)鍵幀I3為參考幀對(duì)原始視頻 流編碼,生成的第一編碼視頻幀,則輸出視頻幀為Cl3,輸出索引值為V3 ;
步驟305,輸出輸出視頻幀CI3和輸出索引值V3。 具體的,當(dāng)輸出視頻幀Cl3為第一關(guān)鍵幀時(shí),將會(huì)在后續(xù)的編碼過程中用于對(duì)輸入 的原始視頻流進(jìn)行編碼,因此,在步驟303之后,還包括步驟3041,從除去第一關(guān)鍵幀I3外 的N-1個(gè)第一關(guān)鍵幀Ij(j = 1AN, j # 3)中選擇一個(gè),作為被輸出視頻幀Cl3替換的第一 關(guān)鍵幀;其中,選擇被替換的第一關(guān)鍵幀的方法可以采用上述實(shí)施例中提供的任何一種方 法,具體不再贅述,本實(shí)施例假設(shè)被替換的第一關(guān)鍵幀為I7 ; 步驟3042,用輸出視頻幀CI3替換第一關(guān)鍵幀I7,即I7 = CI3,并將第一關(guān)鍵幀I7 的第一索引值V7輸出。其中,通過步驟3041、步驟3042可以使緩存的第一關(guān)鍵幀跟隨視頻 場(chǎng)景進(jìn)行實(shí)時(shí)更新,以便視頻編碼端緩存的第一關(guān)鍵幀時(shí)鐘是與當(dāng)前幀最接近的、相關(guān)性 最大的關(guān)鍵幀,便于本實(shí)施例技術(shù)方案充分發(fā)揮利用長時(shí)間尺度上的相關(guān)性的優(yōu)點(diǎn)。
上述輸出數(shù)據(jù),具體指輸出視頻幀(:13、輸出索引值^和第一索引值^通過數(shù)據(jù)傳 輸網(wǎng)絡(luò)傳送給視頻解碼端。在視頻解碼端,具體的 步驟306,接收輸入數(shù)據(jù)幀,輸入數(shù)據(jù)幀至少包括輸入視頻幀和輸入索引值;
在本實(shí)施例中,輸入數(shù)據(jù)幀為上述輸出數(shù)據(jù),其中,輸入視頻幀即輸出視頻幀Cl3, 輸入索引值即輸出索引值V3。 步驟307,從預(yù)先緩存的多個(gè)第二關(guān)鍵幀二(i = 1AN)確定,與輸入索引值對(duì)應(yīng) 的、用于解碼輸入視頻幀的第二關(guān)鍵幀; 假設(shè)當(dāng)前幀為J。,則二 = J。+i X A t,即多個(gè)第二關(guān)鍵幀分別對(duì)應(yīng)距離當(dāng)前幀不同 時(shí)間段的關(guān)鍵幀,且第二關(guān)鍵幀的第二索引值為Wi,第二關(guān)鍵幀與第一關(guān)鍵幀相應(yīng)或者相 同,本實(shí)施例以相同為例,即Ii = Ji,Vi = Wi。 通過上述分析可知,在本實(shí)施例中,用于解碼輸入視頻幀的第二關(guān)鍵幀為J3。
步驟309,以確定的第二關(guān)鍵幀J3為參考幀,對(duì)輸入視頻幀,即輸出視頻幀CI3進(jìn) 行解碼,得到解碼視頻流。 具體的,由于輸出視頻幀Cl3是后續(xù)視頻編碼過程中將要使用的一第一關(guān)鍵幀,對(duì) 應(yīng)的輸入視頻幀是在后續(xù)視頻解碼過程中將要使用的一第二關(guān)鍵幀,因此,本實(shí)施例在步 驟308、步驟309之間還包括,與步驟3401、步驟3042對(duì)應(yīng)的步驟3081、步驟3082,具體為
步驟3081,根據(jù)輸入數(shù)據(jù)幀中包括的第三索引值,從多個(gè)第二關(guān)鍵幀中確定與第 三索引值對(duì)應(yīng)的第二關(guān)鍵幀; 本實(shí)施例中,第三索引值即被替換的第一關(guān)鍵幀的第一索引值^,與第三索引值 對(duì)應(yīng)的第二關(guān)鍵幀,即具有與第一索引值V7相等的第二索引值W7的第二關(guān)鍵幀J7。
步驟3082,用輸入視頻幀,即輸出視頻幀CI3替換第二關(guān)鍵幀J7。 上述步驟用于實(shí)現(xiàn)視頻解碼端緩存的第二關(guān)鍵幀與視頻編碼端緩存的第一關(guān)鍵
幀保持同步,以保證對(duì)編碼后的視頻數(shù)據(jù)正確解碼。 基于上述技術(shù)方案,視頻編碼端與視頻解碼端在進(jìn)行視頻數(shù)據(jù)傳輸之前,可以進(jìn) 行參數(shù)協(xié)商,例如約定第一視頻關(guān)鍵幀的最大數(shù)目,即N的值,編碼生成單元采用的具體編 碼方法和編碼參數(shù)以及傳輸協(xié)議等。 在本實(shí)施例中,步驟301至步驟305用于實(shí)現(xiàn)本發(fā)明實(shí)施例提供的視頻編碼方法, 步驟306至步驟309用于實(shí)現(xiàn)本發(fā)明實(shí)施例提供的視頻解碼方法,本實(shí)施例將視頻編碼、解 碼方法結(jié)合起來,有利于進(jìn)一步加深對(duì)本發(fā)明的技術(shù)方案的理解。本實(shí)施例提供的技術(shù)方 案,通過緩存多個(gè)距離當(dāng)前幀不同時(shí)間段的關(guān)鍵幀,可以充分利用視頻數(shù)據(jù)中長時(shí)間尺度 上的相關(guān)性,降低時(shí)間域上的冗余度,提高視頻數(shù)據(jù)的壓縮比,降低視頻數(shù)據(jù)傳輸對(duì)帶寬的 要求。同時(shí)本實(shí)施例通過與視頻解碼端進(jìn)行參數(shù)協(xié)商,保證了視頻編碼端和視頻解碼端的 交互性,有利于本實(shí)施例的實(shí)施,從而進(jìn)一步發(fā)揮本實(shí)施例的優(yōu)點(diǎn)。 圖3為本發(fā)明一實(shí)施例提供的視頻編碼裝置的結(jié)構(gòu)示意圖,如圖3所示,本實(shí)施例 提供的視頻編碼裝置包括第一存儲(chǔ)模塊31、編碼生成模塊32、比較獲取模塊33和第一輸 出模塊34。 其中,第一存儲(chǔ)模塊31用于緩存多個(gè)第一關(guān)鍵幀,其中,多個(gè)第一關(guān)鍵幀分別對(duì)
應(yīng)距離當(dāng)前幀不同時(shí)間段的關(guān)鍵幀,每個(gè)第一關(guān)鍵幀具有一第一索引值,具體的,第一索引 值用于標(biāo)識(shí)不同的第一關(guān)鍵幀,有效的第一索引值為一個(gè)大于或等于O的整數(shù),例如,可以 是編碼生成模塊32中的編碼生成單元的編號(hào); 進(jìn)一步,根據(jù)所使用的編碼標(biāo)準(zhǔn)的需求,第一存儲(chǔ)模塊31還可用于存儲(chǔ)編碼視頻 流時(shí)所需的其它視頻幀,例如,當(dāng)采用MPEG-2編碼標(biāo)準(zhǔn)時(shí),要編碼生成B-幀還需要至少一 個(gè)P-幀,因此,第一存儲(chǔ)模塊31中除了存儲(chǔ)有第一關(guān)鍵幀外,還存儲(chǔ)有所需的P-幀,并提 供給編碼生成模塊32中的編碼生成單元,使編碼生成單元對(duì)輸入視頻流進(jìn)行正確編碼。關(guān) 于編碼過程中所需的其它視頻幀也可以單獨(dú)存儲(chǔ),這并不影響本發(fā)明技術(shù)方案的實(shí)施。
編碼生成模塊32包括多個(gè)編碼生成單元,每個(gè)編碼生成單元對(duì)應(yīng)一個(gè)第一關(guān)鍵 值,并基于對(duì)應(yīng)的第一關(guān)鍵值,對(duì)原始視頻流進(jìn)行編碼,生成第一編碼視頻幀。具體的,每個(gè) 編碼生成單元可以存儲(chǔ)有第一關(guān)鍵幀,也可以從第一存儲(chǔ)模塊31中提取所需的第一關(guān)鍵 幀;對(duì)應(yīng)于本實(shí)施例中第一存儲(chǔ)模塊31,可以是設(shè)置于多個(gè)編碼生成單元中的獨(dú)立存儲(chǔ)單 元,也可以是獨(dú)立的一存儲(chǔ)空間,在此只給出兩種具體的實(shí)現(xiàn)方式,本實(shí)施例并不對(duì)此進(jìn)行 限制。 比較獲取模塊33用于將編碼生成模塊32生成的多個(gè)第一編碼視頻幀進(jìn)行比較, 獲取輸出視頻幀和輸出索引值,其中,輸出視頻幀為壓縮比最大的第一編碼視頻幀,輸出索 引值為作為輸出視頻幀的參考幀的第一關(guān)鍵幀的第一索引值。 第一輸出模塊34用于將比較獲取模塊33獲取的輸出視頻幀和輸出索引值輸出, 具體的,視頻編碼裝置可以和視頻解碼裝置預(yù)先約定傳輸協(xié)議,例如可以是TCP協(xié)議、UDP 協(xié)議,通過傳輸裝置將輸出視頻幀和輸出索弓I值發(fā)送給視頻解碼端。 本實(shí)施例提供的視頻編碼裝置可以用于執(zhí)行本發(fā)明實(shí)施例提供的視頻解碼方法, 其實(shí)現(xiàn)過程可以依照視頻解碼方法去實(shí)現(xiàn),在此不再贅述。
12
本實(shí)施例提供的視頻編碼裝置,通過設(shè)置第一存儲(chǔ)模塊存儲(chǔ)多個(gè)距離當(dāng)前幀不同
時(shí)間段的關(guān)鍵幀,多個(gè)編碼生成單元同時(shí)對(duì)原始視頻流進(jìn)行編碼,選擇壓縮比最大的作為 輸出視頻幀,以充分利用視頻場(chǎng)景中長時(shí)間尺度上的相關(guān)性,因此,提高了視頻數(shù)據(jù)的壓縮 比,降低了視頻數(shù)據(jù)傳輸對(duì)網(wǎng)絡(luò)帶寬的要求,同時(shí),上述技術(shù)方案并未限制各個(gè)編碼生成單 元采用的編碼方法,通過采用與視頻環(huán)境相適應(yīng)的編碼方法,可以保證圖像質(zhì)量,因此,本 實(shí)施例提供的視頻編碼裝置,在保證圖像質(zhì)量的情況下,提高了視頻數(shù)據(jù)的壓縮比,實(shí)現(xiàn)了 在帶寬受限的無線鏈路和互聯(lián)網(wǎng)鏈路上傳輸高質(zhì)量的視頻數(shù)據(jù)。 基于上述技術(shù)方案,本實(shí)施例提供的編碼裝置還包括第一選擇替換模塊35和第 二輸出模塊36。 其中,第一選擇替換模塊35用于選擇多個(gè)第一關(guān)鍵幀中不作為輸出視頻幀的參 考幀的其中一個(gè)第一關(guān)鍵幀,用輸出視頻幀替換幀;第二輸出模塊36用于在第一輸出模塊 31輸出輸出視頻幀和輸出索引值的同時(shí),輸出被輸出視頻幀替換的第一關(guān)鍵幀的第一索引 值,以提供給視頻解碼端。 其中,本實(shí)施例中的第二輸出模塊36可以和第一輸出模塊34—體設(shè)置,也可以是 兩個(gè)獨(dú)立的輸出模塊,本實(shí)施例中第一輸出模塊34與第二輸出模塊36為兩個(gè)獨(dú)立設(shè)置的 模塊。 當(dāng)輸出視頻幀為后續(xù)編碼過程將要使用的第一關(guān)鍵幀時(shí),采用上述技術(shù)方案,可 以實(shí)現(xiàn)對(duì)視頻編碼裝置中存儲(chǔ)的多個(gè)第一關(guān)鍵幀的更新,使本實(shí)施例緩存的總是與當(dāng)前幀 最接近的、相關(guān)性最強(qiáng)的性的第一關(guān)鍵幀,保證本實(shí)施例提供的技術(shù)方案充分利用視頻場(chǎng) 景中這種長時(shí)間尺度上的相關(guān)性,提高視頻數(shù)據(jù)的壓縮比。 圖4為本發(fā)明一實(shí)施例提供的視頻解碼裝置的結(jié)構(gòu)示意圖,如圖4所示,本實(shí)施 例提供的視頻解碼裝置包括第二存儲(chǔ)模塊41、接收模塊42、確定模塊43和解碼輸出模塊 44。 其中,第二存儲(chǔ)模塊41用于緩存多個(gè)第二關(guān)鍵幀,多個(gè)第二關(guān)鍵幀分別對(duì)應(yīng)距離 當(dāng)前幀不同時(shí)間段的關(guān)鍵幀,其中,每個(gè)第二關(guān)鍵幀具有一第二索引值;具體的,視頻解碼 裝置緩存的多個(gè)第二關(guān)鍵幀與視頻編碼裝置中緩存的多個(gè)第一關(guān)鍵幀相同或者相應(yīng),是進(jìn) 行視頻解碼的基礎(chǔ)。 接收模塊42用于接收輸入數(shù)據(jù)幀,輸入數(shù)據(jù)幀至少包括輸入視頻幀和輸入索引 值;其中,輸入索引值用于標(biāo)識(shí)編碼輸入視頻幀時(shí)作為參考幀的第一關(guān)鍵幀與解碼輸入視 頻幀的第二關(guān)鍵幀之間的映射關(guān)系,根據(jù)輸入索引值可以確定用于解碼輸入視頻幀的第二 關(guān)鍵幀。接收模塊42將接收到的輸入索引值發(fā)送給確定模塊43,使確定模塊43從第二存 儲(chǔ)模塊41緩存的多個(gè)第二關(guān)鍵幀中選擇解碼輸入視頻幀的第二關(guān)鍵幀,其中,解碼輸入關(guān) 鍵幀的第二關(guān)鍵幀的第二索引值與輸入索引值相應(yīng)或者相同,例如,可以是視頻解碼裝置 中解碼生成單元的編號(hào)。 解碼輸出模塊44以確定模塊43確定的第二關(guān)鍵幀為參考幀,對(duì)輸入視頻幀進(jìn)行 解碼,得到解碼視頻流。其中,解碼過程是視頻編碼端的編碼過程的逆過程,而解碼后得到 的解碼視頻流可以傳送給視頻播放裝置進(jìn)行播放,也可以傳送給數(shù)據(jù)存儲(chǔ)裝置保存,或者 也可以傳送給其他需要該解碼視頻流的裝置。 進(jìn)一步,本實(shí)施提供的視頻解碼裝置還包括一第二選擇替換模塊45,用于根據(jù)輸入數(shù)據(jù)幀包含的第三索引值,用輸入視頻幀替換與第三索引值對(duì)應(yīng)的第二關(guān)鍵幀,用于解 碼后續(xù)的輸入視頻幀。 本實(shí)施例提供的視頻編碼裝置可以用于執(zhí)行本發(fā)明實(shí)施例提供的視頻解碼方法, 其實(shí)現(xiàn)過程可以依照視頻解碼方法去實(shí)現(xiàn),在此不再贅述。 本實(shí)施例提供的視頻解碼裝置可用于執(zhí)行本發(fā)明實(shí)施例提供的視頻解碼方法,采
用本實(shí)施例的技術(shù)方案,通過第二存儲(chǔ)模塊緩存與視頻編碼端相同或者相應(yīng)的多個(gè)第二關(guān) 鍵幀,執(zhí)行與視頻編碼端相反的解碼操作,保證了視頻編碼端可以充分利用視頻場(chǎng)景中長 時(shí)間尺度上的相關(guān)性,達(dá)到提高視頻數(shù)據(jù)壓縮比的目的,同時(shí),由于未對(duì)編碼方法進(jìn)行限 制,視頻解碼端只要按照與視頻編碼端的約定,進(jìn)行相應(yīng)解碼,因此,可以通過采用高標(biāo)準(zhǔn) 的編碼解碼方法保證解碼后的圖像質(zhì)量。 圖5為本發(fā)明一實(shí)施例提供的視頻傳輸系統(tǒng)的結(jié)構(gòu)示意圖,如圖5所示,本實(shí)施例 提供的視頻傳輸系統(tǒng)包括數(shù)據(jù)源端51、數(shù)據(jù)目的端52和數(shù)據(jù)傳輸網(wǎng)絡(luò)53。
在本實(shí)施例中,在數(shù)據(jù)源端和數(shù)據(jù)目的端都存儲(chǔ)了與視頻壓縮相關(guān)的狀態(tài)信息和 視頻關(guān)鍵幀,且數(shù)據(jù)源端和數(shù)據(jù)目的端存儲(chǔ)的視頻關(guān)鍵幀相同。數(shù)據(jù)源端將包括關(guān)鍵幀和 非關(guān)鍵幀的視頻數(shù)據(jù)通過數(shù)據(jù)傳輸網(wǎng)絡(luò)傳送給數(shù)據(jù)目的端,數(shù)據(jù)目的端向數(shù)據(jù)源端返回反 饋信息,以進(jìn)行流控、丟失重傳、差錯(cuò)控制等。其中,數(shù)據(jù)源端主要包括視頻輸入接口、網(wǎng)絡(luò) 傳輸接口 、視頻編碼裝置等部件,采用本發(fā)明實(shí)施例提供的視頻編碼方法對(duì)原始視頻流進(jìn) 行編碼,生成輸出視頻幀。數(shù)據(jù)目的端主要包括網(wǎng)絡(luò)傳輸接口 、視頻輸出接口 、視頻解碼裝 置等部件,采用本發(fā)明實(shí)施例提供的視頻解碼方法對(duì)輸入視頻幀進(jìn)行解碼,生成解碼視頻 流。 更為具體的,本實(shí)施例中數(shù)據(jù)源端和數(shù)據(jù)目的端由兩臺(tái)個(gè)人計(jì)算機(jī)構(gòu)成,兩者通 過局域網(wǎng)連接,其中,局域網(wǎng)的連接設(shè)備為以太網(wǎng)交換機(jī)。作為數(shù)據(jù)源端的計(jì)算機(jī)連接一個(gè) 視頻攝像頭。視頻攝像頭獲取的原始視頻流直接傳送到數(shù)據(jù)源端的計(jì)算機(jī)中。數(shù)據(jù)源端計(jì) 算機(jī)實(shí)現(xiàn)本發(fā)明實(shí)施例提供的視頻編碼方法,產(chǎn)生的輸出視頻幀通過局域網(wǎng)傳送到數(shù)據(jù)目 的端。數(shù)據(jù)目的端計(jì)算機(jī)實(shí)現(xiàn)本發(fā)明實(shí)施例提供的視頻解碼方法,解碼得到的解碼視頻流 直接在計(jì)算機(jī)顯示器上播放。其中,視頻編碼算法采用MPEG-2的編碼算法,解碼算法采用 對(duì)應(yīng)的MPEG-2解碼算法。數(shù)據(jù)通信采用TCP和UDP協(xié)議,其中,使用TCP協(xié)議傳輸關(guān)鍵幀, 使用UDP協(xié)議傳輸非關(guān)鍵幀。 采用本發(fā)明實(shí)施例提供的視頻編碼、解碼方法和視頻編碼、解碼裝置的上述視頻
傳輸系統(tǒng),可以同時(shí)利用長時(shí)間尺度和短時(shí)間尺度上視頻數(shù)據(jù)的相關(guān)性對(duì)視頻數(shù)據(jù)進(jìn)行壓
縮,提高視頻數(shù)據(jù)的壓縮比,在不降低圖像質(zhì)量的情況下,降低視頻數(shù)據(jù)傳輸?shù)膸捯螅?br>
從而可以較好地應(yīng)用于帶寬低、可用帶寬變化較大的無線網(wǎng)絡(luò)或互聯(lián)網(wǎng)環(huán)境中。 最后應(yīng)說明的是以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非對(duì)其進(jìn)行限制,
盡管參照較佳實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解其依
然可以對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,而這些修改或者等同替換亦不能使修
改后的技術(shù)方案脫離本發(fā)明技術(shù)方案的精神和范圍。
權(quán)利要求
一種視頻編碼方法,其特征在于,包括緩存多個(gè)第一關(guān)鍵幀,所述多個(gè)第一關(guān)鍵幀分別對(duì)應(yīng)距離當(dāng)前幀不同時(shí)間段的關(guān)鍵幀,每個(gè)所述第一關(guān)鍵幀具有一第一索引值;分別以每個(gè)所述第一關(guān)鍵幀為參考幀,對(duì)原始視頻流進(jìn)行編碼,生成多個(gè)第一編碼視頻幀;將所述多個(gè)第一編碼視頻幀進(jìn)行比較,獲取輸出視頻幀和輸出索引值,所述輸出視頻幀為壓縮比最大的第一編碼視頻幀,所述輸出索引值為作為所述輸出視頻幀的參考幀的第一關(guān)鍵幀的第一索引值;輸出所述輸出視頻幀和所述輸出索引值。
2. 根據(jù)權(quán)利要求1所述的視頻編碼方法,其特征在于,還包括,當(dāng)所述輸出視頻幀的幀類型為關(guān)鍵幀時(shí),將所述多個(gè)第一關(guān)鍵幀中不作為所述輸出視頻幀的參考幀的其中一個(gè)第一關(guān)鍵幀,用所述輸出視頻幀替換;輸出被替換的第一關(guān)鍵幀的第一索引值。
3. 根據(jù)權(quán)利要求2所述的視頻編碼方法,其特征在于,將所述多個(gè)第一關(guān)鍵幀中不作為所述輸出視頻幀的參考幀的其中一個(gè)第一關(guān)鍵幀,用所述輸出視頻幀替換,具體為從所述輸出視頻幀的參考幀以外的多個(gè)所述第一關(guān)鍵幀中,選擇與所述輸出視頻幀相似度最大或最小的第一關(guān)鍵幀,作為被所述輸出視頻幀替換的第一關(guān)鍵幀。
4. 根據(jù)權(quán)利要求2所述的視頻編碼方法,其特征在于,將所述多個(gè)第一關(guān)鍵幀中不作為所述輸出視頻幀的參考幀的其中一個(gè)第一關(guān)鍵幀,用所述輸出視頻幀替換,具體為從所述輸出視頻幀的參考幀以外的多個(gè)所述第一關(guān)鍵幀中,選擇使用頻度最低的第一關(guān)鍵幀,作為被所述輸出視頻幀替換的第一關(guān)鍵幀;其中,所述第一關(guān)鍵幀的使用頻度為第一時(shí)間內(nèi)以所述第一關(guān)鍵幀為參考幀產(chǎn)生的輸出視頻幀的數(shù)目,和所述第一時(shí)間內(nèi)總輸出視頻幀的數(shù)目的比值。
5. 根據(jù)權(quán)利要求1所述的視頻編碼方法,其特征在于,若所述輸出視頻幀的幀類型為關(guān)鍵幀,所述輸出視頻幀的傳輸遵循面向連接的可靠傳輸協(xié)議;所述輸出索引值的傳輸與所述輸出視頻幀的傳輸同時(shí)進(jìn)行。
6. —種視頻解碼方法,其特征在于,包括接收輸入數(shù)據(jù)幀,所述輸入數(shù)據(jù)幀至少包括輸入視頻幀和輸入索引值;從預(yù)先緩存的多個(gè)第二關(guān)鍵幀確定解碼所述輸入視頻幀的第二關(guān)鍵幀,所述輸入索引值與編碼所述輸入視頻幀的第一關(guān)鍵幀和解碼所述輸入視頻幀的第二關(guān)鍵幀存在映射關(guān)系,所述多個(gè)第二關(guān)鍵幀分別對(duì)應(yīng)距離當(dāng)前幀不同時(shí)間段的關(guān)鍵幀;以確定的第二關(guān)鍵幀為參考幀,對(duì)所述輸入視頻幀進(jìn)行解碼,得到解碼視頻流。
7. 根據(jù)權(quán)利要求6所述的視頻解碼方法,其特征在于,當(dāng)所述輸入視頻幀的幀類型為關(guān)鍵幀時(shí),所述輸入數(shù)據(jù)幀還包括一第三索引值;所述視頻解碼方法還包括用所述輸入視頻幀替換,所述多個(gè)第二關(guān)鍵幀中與所述第三索引值對(duì)應(yīng)的第二關(guān)鍵幀。
8. —種實(shí)現(xiàn)如權(quán)利要求l-5任一項(xiàng)所述的視頻編碼方法的視頻編碼裝置,其特征在于,包括第一存儲(chǔ)模塊,緩存多個(gè)第一關(guān)鍵幀,所述多個(gè)第一關(guān)鍵幀分別對(duì)應(yīng)距離當(dāng)前幀不同時(shí)間段的關(guān)鍵幀,每個(gè)所述第一關(guān)鍵幀具有一第一索引值;編碼生成模塊,用于分別以每個(gè)所述第一關(guān)鍵幀為參考幀,對(duì)原始視頻流進(jìn)行編碼,生成多個(gè)第一編碼視頻幀;比較獲取模塊,用于將所述多個(gè)第一編碼視頻幀進(jìn)行比較,獲取輸出視頻幀和輸出索引值,所述輸出視頻幀為壓縮比最大的第一編碼視頻幀,所述輸出索引值為作為所述輸出視頻幀的參考幀的第一關(guān)鍵幀的第一索引值;第一輸出模塊,用于輸出所述輸出視頻幀和所述輸出索引值。
9. 根據(jù)權(quán)利要求8所述的視頻編碼裝置,其特征在于,還包括第一選擇替換模塊,用于選擇所述多個(gè)第一關(guān)鍵幀中不作為所述輸出視頻幀的參考幀的其中一個(gè)第一關(guān)鍵幀,用所述輸出視頻幀替換;第二輸出模塊,用于輸出被所述輸出視頻幀替換的第一關(guān)鍵幀的第一索引值。
10. —種實(shí)現(xiàn)如權(quán)利要求6或7所述的視頻解碼方法的視頻解碼裝置,其特征在于,包括第二存儲(chǔ)模塊,用于緩存多個(gè)第二關(guān)鍵幀,所述多個(gè)第二關(guān)鍵幀分別對(duì)應(yīng)距離當(dāng)前幀不同時(shí)間段的關(guān)鍵幀;接收模塊,用于接收輸入數(shù)據(jù)幀,所述輸入數(shù)據(jù)幀至少包括輸入視頻幀和輸入索引值;確定模塊,用于從預(yù)先緩存的所述多個(gè)第二關(guān)鍵幀確定解碼所述輸入視頻幀的第二關(guān)鍵幀,所述輸入索引值與編碼所述輸入視頻幀的第一關(guān)鍵幀和解碼所述輸入視頻幀的第二關(guān)鍵幀存在映射關(guān)系;解碼輸出模塊,用于以確定的第二關(guān)鍵幀為參考幀,對(duì)所述輸入視頻幀進(jìn)行解碼,得到解碼視頻流。
全文摘要
本發(fā)明涉及一種視頻編碼、解碼方法與視頻編碼、解碼裝置,視頻編碼方法包括緩存多個(gè)第一關(guān)鍵幀,所述多個(gè)第一關(guān)鍵幀分別對(duì)應(yīng)距離當(dāng)前幀不同時(shí)間段的關(guān)鍵幀,每個(gè)所述第一關(guān)鍵幀具有一第一索引值;分別以每個(gè)所述第一關(guān)鍵幀為參考幀,對(duì)原始視頻流進(jìn)行編碼,生成多個(gè)第一編碼視頻幀;將所述多個(gè)第一編碼視頻幀進(jìn)行比較,獲取輸出視頻幀和輸出索引值;輸出所述輸出視頻幀和所述輸出索引值。本發(fā)明提供的視頻編碼、解碼方法與視頻編碼、解碼裝置,通過緩存多個(gè)第一關(guān)鍵幀,充分利用視頻場(chǎng)景中長時(shí)間尺度上的相關(guān)性,在保證圖像質(zhì)量的情況下,提高了視頻數(shù)據(jù)的壓縮比。
文檔編號(hào)H04N7/26GK101729898SQ20091022520
公開日2010年6月9日 申請(qǐng)日期2009年11月16日 優(yōu)先權(quán)日2009年11月16日
發(fā)明者盧澤新, 吳純青, 孫志剛, 張曉哲, 彭偉, 莫敦運(yùn), 虞萬榮 申請(qǐng)人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)