本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種視頻編碼方法和裝置、視頻解碼方法和裝置。
背景技術(shù):
隨著數(shù)字媒體技術(shù)和計(jì)算機(jī)技術(shù)的發(fā)展,視頻應(yīng)用于各個(gè)領(lǐng)域,如移動通信、網(wǎng)絡(luò)監(jiān)控、網(wǎng)絡(luò)電視等。隨著硬件性能和屏幕分辨率的提高,用戶對高清視頻的需求日益強(qiáng)烈。
在移動帶寬有限的條件下,現(xiàn)有的編碼器對視頻幀采用相同分辨率進(jìn)行編碼,可能出現(xiàn)某些場景視頻質(zhì)量差的問題,如在750kbps時(shí),對于運(yùn)動劇烈的場景,采用高分辨率編碼主觀質(zhì)量低,分析h.264\h.265\ios等編碼器都存在相似問題。
技術(shù)實(shí)現(xiàn)要素:
基于此,有必要針對上述技術(shù)問題,提供一種視頻編碼方法和裝置、視頻解碼方法和裝置,能夠針對不同場景,自適應(yīng)的選擇合適的分辨率進(jìn)行編碼,以提高帶寬有限條件下的視頻質(zhì)量。
一種視頻編碼方法,所述方法包括:
獲取待編碼視頻幀,根據(jù)所述待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息從可選編碼模式中確定當(dāng)前編碼模式,所述可選編碼模式包括全分辨率模式和下采樣模式;
將所述待編碼視頻幀根據(jù)當(dāng)前編碼模式處理得到當(dāng)前編碼視頻幀,當(dāng)所述當(dāng)前編碼模式為下采樣模式時(shí),對所述待編碼視頻幀進(jìn)行下采樣得到當(dāng)前編碼視頻幀,當(dāng)所述當(dāng)前編碼模式為全分辨率模式時(shí),將所述待編碼視頻幀確定為當(dāng)前編碼視頻幀;
當(dāng)所述當(dāng)前編碼視頻幀為幀間編碼幀時(shí),獲取所述當(dāng)前編碼視頻幀對應(yīng)的當(dāng)前參考幀,根據(jù)所述當(dāng)前參考幀與當(dāng)前編碼視頻幀的分辨率大小得到對應(yīng)的處理參考幀,具體為:判斷所述當(dāng)前參考幀是否與當(dāng)前編碼視頻幀分辨率相同,如果是,則直接將所述當(dāng)前參考幀確定為處理參考幀,否則,對所述當(dāng)前參考幀根據(jù)預(yù)設(shè)采樣規(guī)則進(jìn)行采樣得到對應(yīng)的處理參考幀;
根據(jù)所述處理參考幀對所述當(dāng)前編碼視頻幀進(jìn)行編碼得到第一編碼數(shù)據(jù),所述第一編碼數(shù)據(jù)中攜帶當(dāng)前編碼模式信息。
一種視頻編碼裝置,所述裝置包括:
編碼模式確定模塊,用于獲取待編碼視頻幀,根據(jù)所述待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息從可選編碼模式中確定當(dāng)前編碼模式,所述可選編碼模式包括全分辨率模式和下采樣模式;
前處理模塊,用于將所述待編碼視頻幀根據(jù)當(dāng)前編碼模式處理得到當(dāng)前編碼視頻幀,當(dāng)所述當(dāng)前編碼模式為下采樣模式時(shí),對所述待編碼視頻幀進(jìn)行下采樣得到當(dāng)前編碼視頻幀,當(dāng)所述當(dāng)前編碼模式為全分辨率模式時(shí),將所述待編碼視頻幀確定為當(dāng)前編碼視頻幀;
編碼處理參考幀確定模塊,用于當(dāng)所述當(dāng)前編碼視頻幀為幀間編碼幀時(shí),獲取所述當(dāng)前編碼視頻幀對應(yīng)的當(dāng)前參考幀,根據(jù)所述當(dāng)前參考幀與當(dāng)前編碼視頻幀的分辨率大小得到對應(yīng)的處理參考幀,具體為:判斷所述當(dāng)前參考幀是否與當(dāng)前編碼視頻幀分辨率相同,如果是,則直接將所述當(dāng)前參考幀確定為處理參考幀,否則,對所述當(dāng)前參考幀根據(jù)預(yù)設(shè)采樣規(guī)則進(jìn)行采樣得到對應(yīng)的處理參考幀;
幀間編碼模塊,用于根據(jù)所述處理參考幀對所述當(dāng)前編碼視頻幀進(jìn)行編碼得到第一編碼數(shù)據(jù),所述第一編碼數(shù)據(jù)中攜帶當(dāng)前編碼模式信息。
上述視頻編碼方法和裝置,通過獲取待編碼視頻幀,根據(jù)待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息從可選編碼模式中確定當(dāng)前編碼模式,可選編碼模式包括全分辨率模式和下采樣模式,將待編碼視頻幀根據(jù)當(dāng)前編碼模式處理得到當(dāng)前編碼視頻幀,當(dāng)當(dāng)前編碼模式為下采樣模式時(shí),對待編碼視頻幀進(jìn)行下采樣得到當(dāng)前編碼視頻幀,當(dāng)當(dāng)前編碼模式為全分辨率模式時(shí),將待編碼視頻幀確定為當(dāng)前編碼視頻幀,當(dāng)所述當(dāng)前編碼視頻幀為幀間編碼幀時(shí),獲取當(dāng)前編碼視頻幀對應(yīng)的當(dāng)前參考幀,根據(jù)當(dāng)前參考幀與當(dāng)前編碼視頻幀的分辨率大小得到對應(yīng)的處理參考幀,具體為:判斷當(dāng)前參考幀是否與當(dāng)前編碼視頻幀分辨率相同,如果是,則直接將當(dāng)前參考幀確定為處理參考幀,否則,對所述當(dāng)前參考幀根據(jù)預(yù)設(shè)采樣規(guī)則進(jìn)行采樣得到對應(yīng)的處理參考幀;根據(jù)處理參考幀對當(dāng)前編碼視頻幀進(jìn)行編碼得到第一編碼數(shù)據(jù),第一編碼數(shù)據(jù)中攜帶當(dāng)前編碼模式信息,根據(jù)待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息可自適應(yīng)的確定待編碼視頻幀的編碼模式,從而能夠針對不同場景,自適應(yīng)的選擇合適的分辨率進(jìn)行編碼,通過下采樣編碼自適應(yīng)的減小空域信息,從而能夠針對不同場景,以提高帶寬有限條件下的視頻質(zhì)量,且根據(jù)當(dāng)前參考幀與當(dāng)前編碼視頻幀分辨率的大小,調(diào)整當(dāng)前參考幀分辨率,即使當(dāng)前參考幀與當(dāng)前編碼視頻幀分辨率不同,也可作為參考幀,提高了參考幀的使用效率,從而可提高幀間預(yù)測的準(zhǔn)確度,減小預(yù)測殘差,提高編碼圖像的質(zhì)量。
一種視頻解碼方法,所述方法包括:
獲取編碼數(shù)據(jù),所述編碼數(shù)據(jù)對應(yīng)的每個(gè)編碼視頻幀攜帶當(dāng)前編碼模式信息;
根據(jù)所述當(dāng)前編碼模式信息確定當(dāng)前解碼視頻幀對應(yīng)的當(dāng)前解碼模式;
當(dāng)所述當(dāng)前解碼視頻幀為幀間編碼幀時(shí),獲取所述當(dāng)前解碼視頻幀對應(yīng)的當(dāng)前參考幀,根據(jù)所述當(dāng)前參考幀與當(dāng)前解碼視頻幀的分辨率大小得到處理參考幀,具體為:判斷所述當(dāng)前參考幀是否與當(dāng)前解碼視頻幀分辨率相同,如果是,則直接將所述當(dāng)前參考幀確定為處理參考幀,否則,對所述當(dāng)前參考幀根據(jù)預(yù)設(shè)采樣規(guī)則進(jìn)行采樣得到對應(yīng)的處理參考幀;
根據(jù)所述處理參考幀對當(dāng)前解碼視頻幀進(jìn)行解碼得到重建視頻幀;
將所述重建視頻幀根據(jù)所述當(dāng)前解碼模式處理得到解碼視頻幀,如果所述當(dāng)前解碼模式為下采樣模式,則對所述重建視頻幀進(jìn)行上采樣得到解碼視頻幀,如果所述當(dāng)前編碼模式信息為全采樣模式,則將所述重建視頻幀確定為解碼視頻幀。
一種視頻解碼裝置,所述裝置包括:
解碼模式確定模塊,用于獲取編碼數(shù)據(jù),所述編碼數(shù)據(jù)對應(yīng)的每個(gè)編碼視頻幀攜帶當(dāng)前編碼模式信息,根據(jù)所述當(dāng)前編碼模式信息確定當(dāng)前解碼視頻幀對應(yīng)的當(dāng)前解碼模式;
解碼處理參考幀確定模塊,用于當(dāng)所述當(dāng)前解碼視頻幀為幀間編碼幀時(shí),獲取所述當(dāng)前解碼視頻幀對應(yīng)的當(dāng)前參考幀,根據(jù)所述當(dāng)前參考幀與當(dāng)前解碼視頻幀的分辨率大小得到處理參考幀,具體為:判斷所述當(dāng)前參考幀是否與當(dāng)前解碼視頻幀分辨率相同,如果是,則直接將所述當(dāng)前參考幀確定為處理參考幀,否則,對所述當(dāng)前參考幀根據(jù)預(yù)設(shè)采樣規(guī)則進(jìn)行采樣得到對應(yīng)的處理參考幀;
重建模塊,用于根據(jù)所述處理參考幀對當(dāng)前解碼視頻幀進(jìn)行解碼得到重建視頻幀;
解碼視頻幀確定模塊,用于將所述重建視頻幀根據(jù)所述當(dāng)前解碼模式處理得到解碼視頻幀,如果所述當(dāng)前解碼模式為下采樣模式,則對所述重建視頻幀進(jìn)行上采樣得到解碼視頻幀,如果所述當(dāng)前編碼模式信息為全采樣模式,則將所述重建視頻幀確定為解碼視頻幀。
上述視頻解碼方法和裝置,通過獲取編碼數(shù)據(jù),編碼數(shù)據(jù)對應(yīng)的每個(gè)編碼視頻幀攜帶當(dāng)前編碼模式信息,根據(jù)當(dāng)前編碼模式信息確定當(dāng)前解碼視頻幀對應(yīng)的當(dāng)前解碼模式,當(dāng)所述當(dāng)前解碼視頻幀為幀間編碼幀時(shí),獲取當(dāng)前解碼視頻幀對應(yīng)的當(dāng)前參考幀,根據(jù)當(dāng)前參考幀與當(dāng)前解碼視頻幀的分辨率大小得到處理參考幀,具體為:判斷當(dāng)前參考幀是否與當(dāng)前解碼視頻幀分辨率相同,如果是,則直接將當(dāng)前參考幀確定為處理參考幀,否則,對當(dāng)前參考幀根據(jù)預(yù)設(shè)采樣規(guī)則進(jìn)行采樣得到對應(yīng)的處理參考幀,根據(jù)處理參考幀對當(dāng)前解碼視頻幀進(jìn)行解碼得到重建視頻幀,將重建視頻幀根據(jù)當(dāng)前解碼模式處理得到解碼視頻幀,如果當(dāng)前解碼模式為下采樣模式,則對重建視頻幀進(jìn)行上采樣得到解碼視頻幀,如果當(dāng)前編碼模式信息為全采樣模式,則將重建視頻幀確定為解碼視頻幀,針對采用自適應(yīng)變化模式編碼的碼流,可自適應(yīng)調(diào)整參考幀分辨率,進(jìn)行解碼,自適應(yīng)變化模式編碼的碼流是針對不同場景選擇合適的分辨率進(jìn)行編碼的碼流,從而提供對高質(zhì)量圖像質(zhì)量碼流的解碼支持。
附圖說明
圖1為一個(gè)實(shí)施例中視頻編碼方法和視頻解碼方法的應(yīng)用環(huán)境圖;
圖2為一個(gè)實(shí)施例中圖1中終端的內(nèi)部結(jié)構(gòu)圖;
圖3為一個(gè)實(shí)施例中圖1中服務(wù)器的內(nèi)部結(jié)構(gòu)圖;
圖4為一個(gè)實(shí)施例中視頻編碼方法的流程圖;
圖5為一個(gè)實(shí)施例中根據(jù)量化參數(shù)確定當(dāng)前編碼模式的流程圖;
圖6為一個(gè)實(shí)施例中根據(jù)碼率確定當(dāng)前編碼模式的流程圖;
圖7為一個(gè)實(shí)施例中根據(jù)圖像特征信息確定當(dāng)前編碼模式的流程圖;
圖8為另一個(gè)實(shí)施例中確定當(dāng)前編碼模式的流程圖;
圖9為再一個(gè)實(shí)施例中確定當(dāng)前編碼模式的流程圖;
圖10為一個(gè)實(shí)施例中視頻解碼方法的流程圖;
圖11為一個(gè)實(shí)施例中編解碼框架示意圖;
圖12為一個(gè)實(shí)施例中下采樣模式編碼流程示意圖;
圖13為一個(gè)實(shí)施例中視頻編碼裝置的結(jié)構(gòu)框圖;
圖14為一個(gè)實(shí)施例中編碼模式確定模塊的結(jié)構(gòu)框圖;
圖15為另一個(gè)實(shí)施例中視頻編碼裝置的結(jié)構(gòu)框圖;
圖16為一個(gè)實(shí)施例中編碼處理參考幀確定模塊的結(jié)構(gòu)框圖;
圖17為一個(gè)實(shí)施例中視頻解碼裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
圖1為一個(gè)實(shí)施例中視頻編碼方法、視頻解碼方法運(yùn)行的應(yīng)用環(huán)境圖。如圖1所示,該應(yīng)用環(huán)境包括終端110和服務(wù)器120,其中終端110、服務(wù)器120通過網(wǎng)絡(luò)進(jìn)行通信。
終端110,可為智能手機(jī)、平板電腦、筆記本電腦、臺式計(jì)算機(jī)等,但并不局限于此。視頻編碼方法、視頻解碼方法可以在終端110或服務(wù)器120中完成,終端110可將待編碼視頻幀采用視頻編碼方法進(jìn)行自適應(yīng)分辨率編碼后發(fā)送至服務(wù)器120,也可從服務(wù)器120接收自適應(yīng)分辨率的編碼數(shù)據(jù)并采用視頻解碼方法進(jìn)行解碼后生成解碼視頻幀。服務(wù)器120可以對碼流存儲時(shí)進(jìn)行轉(zhuǎn)碼,此時(shí)視頻編碼方法在服務(wù)器完成,如果服務(wù)器120需要對碼流進(jìn)行解碼,則視頻解碼方法在服務(wù)器完成。
在一個(gè)實(shí)施例中,圖1中的終端110的內(nèi)部結(jié)構(gòu)如圖2所示,該終端110包括通過系統(tǒng)總線連接的處理器、圖形處理單元、存儲介質(zhì)、內(nèi)存、網(wǎng)絡(luò)接口、顯示屏幕和輸入設(shè)備。其中,終端110的存儲介質(zhì)存儲有操作系統(tǒng),還包括視頻編碼裝置和/或視頻解碼裝置,該裝置用于實(shí)現(xiàn)一種適用于終端的視頻編碼方法和/或視頻解碼方法。該處理器用于提供計(jì)算和控制能力,支撐整個(gè)終端110的運(yùn)行。終端110中的圖形處理單元用于至少提供顯示界面的繪制能力,內(nèi)存為存儲介質(zhì)中的視頻編碼裝置和/或視頻解碼裝置的運(yùn)行提供環(huán)境,網(wǎng)絡(luò)接口用于與服務(wù)器120進(jìn)行網(wǎng)絡(luò)通信。顯示屏幕用于顯示應(yīng)用界面等,如解碼視頻,輸入設(shè)備用于接收用戶輸入的命令或數(shù)據(jù)等。對于帶觸摸屏的終端110,顯示屏幕和輸入設(shè)備可為觸摸屏。圖2中示出的結(jié)構(gòu),僅僅是與本申請方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對本申請方案所應(yīng)用于其上的終端的限定,具體的終端或服務(wù)器可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。
在一個(gè)實(shí)施例中,圖1中的服務(wù)器120的內(nèi)部結(jié)構(gòu)如圖3所示,該服務(wù)器120包括通過系統(tǒng)總線連接的處理器、存儲介質(zhì)、內(nèi)存和網(wǎng)絡(luò)接口。其中,該服務(wù)器120的存儲介質(zhì)存儲有操作系統(tǒng)、數(shù)據(jù)庫、視頻編碼裝置和/或視頻解碼裝置,數(shù)據(jù)庫用于存儲數(shù)據(jù),視頻編碼裝置和/或視頻解碼裝置用于實(shí)現(xiàn)一種適用于服務(wù)器120的視頻編碼方法和/或視頻解碼方法。該服務(wù)器120的處理器用于提供計(jì)算和控制能力,支撐整個(gè)服務(wù)器120的運(yùn)行。該服務(wù)器120的內(nèi)存為存儲介質(zhì)中的視頻編碼裝置和/或視頻解碼裝置的運(yùn)行提供環(huán)境。該服務(wù)器120的網(wǎng)絡(luò)接口用于與外部的終端110通過網(wǎng)絡(luò)連接通信。圖2和圖3中示出的結(jié)構(gòu),僅僅是與本申請方案相關(guān)的部分結(jié)構(gòu)的框圖,并不構(gòu)成對本申請方案所應(yīng)用于其上的終端的限定,具體的終端或服務(wù)器可以包括比圖中所示更多或更少的部件,或者組合某些部件,或者具有不同的部件布置。
在一個(gè)實(shí)施例中,如圖4所示,提供了一種視頻編碼方法,以應(yīng)用于上述應(yīng)用環(huán)境中的終端或服務(wù)器來舉例說明,包括以下步驟:
步驟s210,獲取待編碼視頻幀,根據(jù)待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息從可選編碼模式中確定當(dāng)前編碼模式,可選編碼模式包括全分辨率模式和下采樣模式。
具體的,待編碼視頻幀可以是實(shí)時(shí)采集的視頻幀,用于即時(shí)通信,也可以是存儲的視頻對應(yīng)的視頻幀。視頻的當(dāng)前編碼信息是指視頻在編碼時(shí)得到的視頻壓縮參數(shù)信息,如幀預(yù)測類型、運(yùn)動向量、量化參數(shù)、視頻來源、碼率、幀率、分辨率等。其中幀預(yù)測類型包括幀內(nèi)預(yù)測,如i幀,前向幀間預(yù)測,如p幀,雙向幀間預(yù)測,如b幀。圖像特征信息是指與圖像內(nèi)容相關(guān)的信息,包括圖像運(yùn)動信息、圖像紋理信息,如邊緣等。根據(jù)當(dāng)前編碼信息和/或圖像特征信息確定待編碼視頻幀對應(yīng)的當(dāng)前編碼模式,可為全采樣模式或下采樣模式。下采樣模式是指對待編碼視頻幀進(jìn)行下采樣后再進(jìn)行編碼,下采樣的算法可根據(jù)需要自定義,包括垂直下采樣、水平下采樣、垂直和水平下采樣,可采用直接平均、濾波器、bicubicinterpolation雙三次插值、bilinearinterpolation雙線性插值等算法進(jìn)行下采樣,全采樣模式是指直接對待編碼視頻幀進(jìn)行編碼。
當(dāng)前編碼信息和/或圖像特征信息反映了視頻幀對應(yīng)的場景、細(xì)節(jié)復(fù)雜度、運(yùn)動劇烈程度等,如通過運(yùn)動向量、量化參數(shù)、碼率等可判斷運(yùn)動場景,量化參數(shù)大則一般運(yùn)動劇烈,運(yùn)動向量大則代表圖像場景是大運(yùn)動場景。還可根據(jù)已編碼i幀與p幀或已編碼i幀與b幀的碼率比值判斷,如果比值超過第一預(yù)設(shè)閾值,則判斷為靜止圖像,如果比值小于第二預(yù)設(shè)閾值,則可判斷為運(yùn)動劇烈圖像?;蛑苯痈鶕?jù)圖像內(nèi)容跟蹤目標(biāo)對象,根據(jù)目標(biāo)對象的運(yùn)動速度確定是否為大運(yùn)動場景。碼率一定時(shí)能表達(dá)的信息量一定,對于運(yùn)動劇烈的場景,時(shí)間域信息量大,相應(yīng)的可用于表達(dá)空間域信息的碼率就少,因此采用低分辨率能達(dá)到較好的圖像質(zhì)量效果,更傾向于選擇下采樣模式進(jìn)行編碼。
通過幀預(yù)測類型可確定畫面切換場景,也可根據(jù)幀預(yù)測類型對其它幀的影響確定傾向于的編碼模式。如i幀一般為首幀或存在畫面切換,i幀的質(zhì)量影響了后續(xù)p幀或b幀的質(zhì)量,所以幀內(nèi)預(yù)測幀相比于幀間預(yù)測幀更傾向于選擇全分辨率編碼,以保證圖像質(zhì)量。因?yàn)閜幀可作為b幀的參考幀,p幀圖像質(zhì)量影響了后續(xù)b幀的圖像質(zhì)量,所以如果采用p幀編碼則相比于采用b幀編碼更傾向于選擇全分辨率編碼。
通過圖像特征信息,如圖像紋理信息確定待編碼視頻幀的紋理復(fù)雜度,如果紋理復(fù)雜,包含的細(xì)節(jié)多,則圖像空域信息多,如果進(jìn)行下采樣,可能由于下采樣損失較多細(xì)節(jié)信息,影響視頻質(zhì)量,所以紋理復(fù)雜的待編碼視頻幀相比于紋理簡單的待編碼視頻幀更傾向于選擇全分辨率編碼。
根據(jù)以上的各種編碼模式選擇規(guī)則,可根據(jù)當(dāng)前編碼信息和/或圖像特征信息中的一種或多種信息,從可選編碼模式中確定當(dāng)前編碼模式,當(dāng)考慮多種信息時(shí),可將多種信息進(jìn)行綜合加權(quán),并結(jié)合每種信息對應(yīng)的編碼模式選擇規(guī)則確定最終的當(dāng)前編碼模式。
步驟s220,將待編碼視頻幀根據(jù)當(dāng)前編碼模式處理得到當(dāng)前編碼視頻幀,當(dāng)所述當(dāng)前編碼模式為下采樣模式時(shí),對待編碼視頻幀進(jìn)行下采樣得到當(dāng)前編碼視頻幀,當(dāng)所述當(dāng)前編碼模式為全采樣模式時(shí),將待編碼視頻幀確定為當(dāng)前編碼視頻幀。
具體的,下采樣的算法可根據(jù)需要自定義,包括垂直下采樣、水平下采樣、垂直和水平下采樣。具體方向上進(jìn)行的采樣的參數(shù)可根據(jù)需要自定義,在一個(gè)具體的實(shí)施例中,對待編碼視頻幀進(jìn)行水平1/2下采樣,采樣后圖像的寬度為原始視頻幀的一半,對待編碼視頻幀進(jìn)行垂直1/2下采樣,采樣后圖像的高度為原始視頻幀的一半。如果當(dāng)前編碼模式為全采樣模式,則不需要對待編碼視頻幀進(jìn)行采樣,直接作為當(dāng)前編碼視頻幀。如果下采樣得到的圖像寬度、高度不是最大編碼塊的整倍數(shù),則需要將圖像進(jìn)行像素?cái)U(kuò)展為最大編碼塊的整倍數(shù)。
步驟s230,當(dāng)所述當(dāng)前編碼視頻幀為幀間編碼幀時(shí),獲取當(dāng)前編碼視頻幀對應(yīng)的當(dāng)前參考幀,根據(jù)所述當(dāng)前參考幀與當(dāng)前編碼視頻幀的分辨率大小得到對應(yīng)的處理參考幀,具體為:判斷當(dāng)前參考幀是否與當(dāng)前編碼視頻幀分辨率相同,如果是,則直接將當(dāng)前參考幀確定為處理參考幀,否則進(jìn)入步驟s240。
具體的,當(dāng)前編碼視頻幀對應(yīng)的當(dāng)前參考幀根據(jù)幀間預(yù)測類型的不同,可為前向參考幀或雙向參考幀,其中參考幀的個(gè)數(shù)可為一個(gè)或多個(gè)。當(dāng)前參考幀如果與當(dāng)前編碼視頻幀分辨率相同,則可直接將當(dāng)前參考幀確定為處理參考幀。
在一個(gè)實(shí)施例中,當(dāng)所述當(dāng)前編碼視頻幀為幀內(nèi)編碼幀時(shí),直接進(jìn)行幀內(nèi)編碼等得到第二編碼數(shù)據(jù),所述第二編碼數(shù)據(jù)中攜帶當(dāng)前編碼模式信息。
具體的,當(dāng)前編碼視頻幀進(jìn)行幀內(nèi)預(yù)測得到幀內(nèi)預(yù)測殘差,并對幀內(nèi)預(yù)測殘差進(jìn)行變換、量化、熵編碼等得到第二編碼數(shù)據(jù)。編碼過程中為了提高預(yù)測模式選擇速度,可以采用快速模式選擇算法,為了達(dá)到目標(biāo)碼率,根據(jù)碼率控制算法設(shè)定量化參數(shù)。編碼后得到第二編碼數(shù)據(jù),第二編碼數(shù)據(jù)中攜帶當(dāng)前編碼模式信息,即在碼流中還加入標(biāo)志位,標(biāo)志位描述當(dāng)前編碼視頻幀采用全分辨率編碼還是下采樣編碼。幀內(nèi)編碼幀也可為下采樣編碼模式,可有效避免i幀碼率過大導(dǎo)致的丟包問題。
步驟s240,對當(dāng)前參考幀根據(jù)預(yù)設(shè)采樣規(guī)則進(jìn)行采樣得到對應(yīng)的處理參考幀。
具體的,預(yù)設(shè)采樣規(guī)則可根據(jù)需要自定義,可與當(dāng)前編碼視頻幀的分辨率、參考幀與當(dāng)前編碼視頻幀的距離相關(guān)。如當(dāng)當(dāng)前參考幀與當(dāng)前編碼視頻幀的距離d超過預(yù)設(shè)閾值時(shí),采用1/m下采樣,否則采用1/n下采樣,其中m<n。因?yàn)榫嚯x較遠(yuǎn)的當(dāng)前參考幀可能參考價(jià)值小于距離較近的當(dāng)前參考幀,從而對于距離較遠(yuǎn)的當(dāng)前參考幀即使與當(dāng)前編碼視頻幀的分辨率不同,也可不對其進(jìn)行采樣,或使得其采樣后的分辨率變化較小,從而加快采樣速度,進(jìn)而提高整個(gè)編碼速度。在一個(gè)實(shí)施例中m的值隨著距離d變化,進(jìn)一步提高采樣參數(shù)的靈活性。
步驟s250,根據(jù)處理參考幀對當(dāng)前編碼視頻幀進(jìn)行編碼得到第一編碼數(shù)據(jù),所述第一編碼數(shù)據(jù)中攜帶當(dāng)前編碼模式信息。
具體的,通過處理參考幀進(jìn)行預(yù)測得到預(yù)測殘差,并對預(yù)測殘差進(jìn)行變換、量化、熵編碼等得到編碼數(shù)據(jù)。編碼過程中為了提高預(yù)測模式選擇速度,可以采用快速模式選擇算法,為了達(dá)到目標(biāo)碼率,根據(jù)碼率控制算法設(shè)定量化參數(shù)。編碼后得到編碼數(shù)據(jù),編碼數(shù)據(jù)中攜帶當(dāng)前編碼模式信息,即在碼流中還加入標(biāo)志位,標(biāo)志位描述當(dāng)前編碼視頻幀采用全分辨率編碼還是下采樣編碼。
在一個(gè)實(shí)施例中,如果當(dāng)前參考幀與當(dāng)前編碼視頻幀分辨率不相同,則對當(dāng)前參考幀進(jìn)行采樣得到與當(dāng)前編碼視頻幀分辨率相同的處理參考幀,其中對當(dāng)前參考幀進(jìn)行采樣包括上采樣和下采樣,如果當(dāng)前參考幀的分辨率大于當(dāng)前編碼視頻幀分辨率,則對當(dāng)前參考幀進(jìn)行下采樣得到處理參考幀,如果當(dāng)前參考幀的分辨率小于當(dāng)前編碼視頻幀分辨率,則對當(dāng)前參考幀進(jìn)行上采樣得到處理參考幀。在一個(gè)實(shí)施例中如果當(dāng)前參考幀的個(gè)數(shù)為多個(gè),則分別對每個(gè)當(dāng)前參考幀根據(jù)當(dāng)前參考幀分辨率與當(dāng)前編碼視頻幀分辨率進(jìn)行采樣得到與當(dāng)前編碼視頻幀分辨率相同的處理參考幀。
具體的,處理參考幀分辨率與當(dāng)前編碼視頻幀分辨率相同,可一定程度上提高處理參考幀與當(dāng)前編碼視頻幀的圖像匹配度,從而提高幀間預(yù)測的準(zhǔn)確度,減小預(yù)測殘差,提高編碼圖像的質(zhì)量。
在一個(gè)實(shí)施例中對當(dāng)前參考幀進(jìn)行采樣的采樣算法與步驟s220中對待編碼視頻幀進(jìn)行下采樣得到當(dāng)前編碼視頻幀的采樣算法匹配,即如果對當(dāng)前參考幀進(jìn)行下采樣,則下采樣算法與步驟s220中對待編碼視頻幀進(jìn)行下采樣得到當(dāng)前編碼視頻幀的下采樣算法相同。如果對當(dāng)前參考幀進(jìn)行上采樣,則上采樣算法與步驟s220中對待編碼視頻幀進(jìn)行下采樣得到當(dāng)前編碼視頻幀的下采樣算法為匹配的相反的采樣算法。
具體的,對當(dāng)前參考幀進(jìn)行采樣的采樣算法與對待編碼視頻幀進(jìn)行下采樣得到當(dāng)前編碼視頻幀的采樣算法匹配,可進(jìn)一步提高當(dāng)前參考幀與當(dāng)前編碼視頻幀的圖像匹配度,進(jìn)一步提高幀間預(yù)測的準(zhǔn)確度,減小預(yù)測殘差,提高編碼圖像的質(zhì)量。
本實(shí)施例中,通過獲取待編碼視頻幀,根據(jù)待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息從可選編碼模式中確定當(dāng)前編碼模式,可選編碼模式包括全分辨率模式和下采樣模式,將待編碼視頻幀根據(jù)當(dāng)前編碼模式處理得到當(dāng)前編碼視頻幀,當(dāng)當(dāng)前編碼模式為下采樣模式時(shí),對待編碼視頻幀進(jìn)行下采樣得到當(dāng)前編碼視頻幀,當(dāng)當(dāng)前編碼模式為全分辨率模式時(shí),將待編碼視頻幀確定為當(dāng)前編碼視頻幀,當(dāng)所述當(dāng)前編碼視頻幀為幀間編碼幀時(shí),獲取當(dāng)前編碼視頻幀對應(yīng)的當(dāng)前參考幀,根據(jù)當(dāng)前參考幀與當(dāng)前編碼視頻幀的分辨率大小得到對應(yīng)的處理參考幀,具體為:判斷當(dāng)前參考幀是否與當(dāng)前編碼視頻幀分辨率相同,如果是,則直接將當(dāng)前參考幀確定為處理參考幀,否則,對所述當(dāng)前參考幀根據(jù)預(yù)設(shè)采樣規(guī)則進(jìn)行采樣得到對應(yīng)的處理參考幀;根據(jù)處理參考幀對當(dāng)前編碼視頻幀進(jìn)行編碼得到第一編碼數(shù)據(jù),第一編碼數(shù)據(jù)中攜帶當(dāng)前編碼模式信息,根據(jù)待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息可自適應(yīng)的確定待編碼視頻幀的編碼模式,從而能夠針對不同場景,自適應(yīng)的選擇合適的分辨率進(jìn)行編碼,通過下采樣編碼自適應(yīng)的減小空域信息,從而能夠針對不同場景,以提高帶寬有限條件下的視頻質(zhì)量,且根據(jù)當(dāng)前參考幀與當(dāng)前編碼視頻幀分辨率的大小,調(diào)整當(dāng)前參考幀分辨率,即使當(dāng)前參考幀與當(dāng)前編碼視頻幀分辨率不同,也可作為參考幀,提高了參考幀的使用效率,從而可提高幀間預(yù)測的準(zhǔn)確度,減小預(yù)測殘差,提高編碼圖像的質(zhì)量。
在一個(gè)實(shí)施例中,當(dāng)前編碼信息包括量化參數(shù)信息,如圖5所示,步驟s210中根據(jù)待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息從可選編碼模式中確定當(dāng)前編碼模式的步驟包括:
步驟s211,獲取待編碼視頻幀對應(yīng)的當(dāng)前量化參數(shù)。
具體的,對于碼率沒有嚴(yán)格要求的場景,可在編碼前為每個(gè)待編碼視頻幀分配粗粒度的量化參數(shù),如一幀對應(yīng)一個(gè)量化參數(shù),對于此種情況,可方便快速的獲取當(dāng)前量化參數(shù),或一幀分為不同的條帶slice,每個(gè)條帶對應(yīng)一個(gè)量化參數(shù),對于此種情況,可根據(jù)各個(gè)條帶對應(yīng)的量化參數(shù)計(jì)算當(dāng)前量化參數(shù),如將各個(gè)條帶對應(yīng)的量化參數(shù)的均值或中值作為當(dāng)前量化參數(shù)。對于對碼率有嚴(yán)格要求的場景,在編碼時(shí)為每個(gè)待編碼視頻幀以宏塊為單位分配細(xì)粒度的量化參數(shù),每個(gè)對應(yīng)的量化參數(shù)可在基準(zhǔn)量化參數(shù)的附近進(jìn)行調(diào)整,或?qū)⒒鶞?zhǔn)量化參數(shù)作為當(dāng)前量化參數(shù)或計(jì)算各個(gè)宏塊對應(yīng)的均值或中值作為當(dāng)前量化參數(shù)。
步驟s212,獲取待編碼視頻幀的幀預(yù)測類型,獲取與幀預(yù)測類型對應(yīng)的量化參數(shù)閾值,如果當(dāng)前量化參數(shù)大于量化參數(shù)閾值,則確定當(dāng)前編碼模式為下采樣模式,否則確定當(dāng)前編碼模式為全分辨率模式。
具體的,根據(jù)編碼模式確定規(guī)則,一般幀內(nèi)預(yù)測幀相比于幀間預(yù)測幀更傾向于選擇全分辨率編碼,p幀編碼則相比于采用b幀編碼更傾向于選擇全分辨率編碼,所以設(shè)置i幀量化參數(shù)閾值大于或等于p幀量化參數(shù)閾值,p幀量化參數(shù)閾值大于或等于b幀量化參數(shù)閾值,只有當(dāng)前量化參數(shù)大于量化參數(shù)閾值,才確定當(dāng)前編碼模式為下采樣模式,否則確定當(dāng)前編碼模式為全分辨率模式。當(dāng)前量化參數(shù)越大一般運(yùn)動越劇烈,對于運(yùn)動劇烈的場景更傾向于選擇下采樣模式進(jìn)行編碼。
本實(shí)施例中,將不同幀預(yù)測類型與量化參數(shù)通過不同的量化參數(shù)閾值進(jìn)行結(jié)合來確定待編碼視頻幀的當(dāng)前編碼模式,能提高當(dāng)前編碼模式確定的準(zhǔn)確性。
在一個(gè)實(shí)施例中,當(dāng)前編碼信息包括碼率信息,如圖6所示,步驟s210中根據(jù)待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息從可選編碼模式中確定當(dāng)前編碼模式的步驟包括:
步驟s213,獲取待編碼視頻幀對應(yīng)的當(dāng)前目標(biāo)碼率。
具體的,對于碼率有嚴(yán)格要求的場景,可根據(jù)碼流的目標(biāo)碼率計(jì)算分配每一幀對應(yīng)的幀目標(biāo)碼率,且每一幀對應(yīng)的幀目標(biāo)碼率可根據(jù)歷史實(shí)際編碼碼率進(jìn)行調(diào)節(jié),可通過碼率分配算法計(jì)算得到待編碼視頻幀對應(yīng)的當(dāng)前目標(biāo)碼率。
步驟s214,獲取待編碼視頻幀的幀預(yù)測類型,獲取與幀預(yù)測類型對應(yīng)的碼率閾值,如果當(dāng)前目標(biāo)碼率大于碼率閾值,則確定當(dāng)前編碼模式為下采樣模式,否則確定當(dāng)前編碼模式為全分辨率模式。
具體的,根據(jù)編碼模式確定規(guī)則,一般幀內(nèi)預(yù)測幀相比于幀間預(yù)測幀更傾向于選擇全分辨率編碼,且i幀只采用幀內(nèi)編碼,一般碼率較大且分配的目標(biāo)碼率也較大,p幀編碼相比于采用b幀編碼更傾向于選擇全分辨率編碼,且p幀和b幀由于可參考其它幀進(jìn)行編碼,一般相比于幀內(nèi)預(yù)測幀分配較少的目標(biāo)碼率。所以設(shè)置i幀碼率閾值大于p幀碼率閾值,p幀碼率閾值大于或等于b幀碼率閾值。如果當(dāng)前目標(biāo)碼率大于碼率閾值,則確定當(dāng)前編碼模式為全分辨率模式,否則確定當(dāng)前編碼模式為下采樣模式。目標(biāo)碼率大且超過預(yù)設(shè)閾值,代表具有較多的圖像細(xì)節(jié),選擇全分辨率模式進(jìn)行編碼可保留圖像細(xì)節(jié),保證圖像質(zhì)量。
本實(shí)施例中,將不同幀預(yù)測類型與碼率通過不同的碼率閾值進(jìn)行結(jié)合來確定待編碼視頻幀的當(dāng)前編碼模式,能提高當(dāng)前編碼模式確定的準(zhǔn)確性。
在一個(gè)實(shí)施例中,圖像特征信息包括運(yùn)動特征信息和紋理信息,如圖7所示,步驟s210中根據(jù)待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息從可選編碼模式中確定當(dāng)前編碼模式的步驟包括:
步驟s215,根據(jù)運(yùn)動特征信息確定運(yùn)動度,根據(jù)紋理信息確定紋理復(fù)雜度。
具體的,可根據(jù)圖像內(nèi)容提取運(yùn)動特征信息,如通過物體跟蹤算法等,運(yùn)動度代表了圖像運(yùn)動的劇烈程度,可通過不同的特征來衡量,如運(yùn)動速度等。可以計(jì)算像素梯度得到圖像細(xì)節(jié)紋理信息,從而確定圖像的紋理復(fù)雜度,
步驟s216,如果運(yùn)動度超過運(yùn)動預(yù)設(shè)閾值或紋理復(fù)雜度超過紋理預(yù)設(shè)閾值,則確定當(dāng)前編碼模式為下采樣模式,否則確定當(dāng)前編碼模式為全分辨率模式。
具體的,根據(jù)編碼模式確定規(guī)則,對于運(yùn)動劇烈的場景更傾向于選擇下采樣模式進(jìn)行編碼,紋理復(fù)雜的待編碼視頻幀相比于紋理簡單的待編碼視頻幀更傾向于選擇全分辨率編碼,所以如果運(yùn)動度超過運(yùn)動預(yù)設(shè)閾值或紋理復(fù)雜度超過紋理預(yù)設(shè)閾值,則確定當(dāng)前編碼模式為下采樣模式,否則確定當(dāng)前編碼模式為全分辨率模式。
本實(shí)施例中,直接根據(jù)圖像內(nèi)容信息就可確定當(dāng)前編碼模式,不依賴于編碼過程,可在編碼前分析圖像提取圖像特征得到各個(gè)視頻幀對應(yīng)的編碼模式。
在一個(gè)實(shí)施例中,如圖8所示,步驟s210中根據(jù)待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息從可選編碼模式中確定當(dāng)前編碼模式的步驟包括:
步驟s217,獲取待編碼視頻幀的幀預(yù)測類型,如果為幀內(nèi)預(yù)測幀,則確定所述當(dāng)前編碼模式為全分辨率模式。
步驟s218,如果為雙向幀間預(yù)測幀,則確定當(dāng)前編碼模式為下采樣模式。
步驟s219,如果為前向幀間預(yù)測幀,則根據(jù)量化參數(shù)信息、碼率信息、圖像特征信息中的至少一種信息確定當(dāng)前編碼模式。
具體的,根據(jù)幀預(yù)測類型,如果為幀內(nèi)預(yù)測幀,則確定當(dāng)前編碼模式為全分辨率模式,保證i幀的編碼質(zhì)量,如果是雙向幀間預(yù)測幀,則確定當(dāng)前編碼模式為下采樣模式,只有待編碼視頻幀為前向幀間預(yù)測幀,才根據(jù)量化參數(shù)信息、碼率信息、圖像特征信息中的至少一種信息確定當(dāng)前編碼模式,可對特定的幀預(yù)測類型快速確定當(dāng)前編碼模式,從而加快了編碼效率。
在一個(gè)實(shí)施例中,當(dāng)前編碼信息包括量化參數(shù)信息、碼率信息和幀預(yù)測類型,圖像特征信息包括運(yùn)動特征信息和紋理信息,如圖9所示,步驟s210中根據(jù)待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息從可選編碼模式中確定當(dāng)前編碼模式的步驟包括:
步驟s2101,獲取預(yù)設(shè)條件與編碼模式的對應(yīng)關(guān)系表格,預(yù)設(shè)條件包括量化參數(shù)、碼率、幀預(yù)測類型、運(yùn)動度和紋理復(fù)雜度中的至少兩項(xiàng)條件。
具體的,對應(yīng)關(guān)系表格列舉了不同預(yù)設(shè)條件下對應(yīng)的編碼模式,且至少根據(jù)2個(gè)預(yù)設(shè)條件確定編碼模式,預(yù)設(shè)條件可根據(jù)需要自定義,如量化參數(shù)大于第一預(yù)設(shè)閾值,碼率大于第二預(yù)設(shè)閾值等。將多個(gè)預(yù)設(shè)條件相結(jié)合通過表格可快速確定編碼模式。
步驟s2102,從當(dāng)前編碼信息、圖像特征信息中獲取至少兩種信息與對應(yīng)關(guān)系表格中對應(yīng)的預(yù)設(shè)條件相匹配確定目標(biāo)編碼模式作為當(dāng)前編碼模式。
具體的,從當(dāng)前編碼信息、圖像特征信息中獲取至少兩種信息,可為當(dāng)前編碼信息中的至少兩種信息,如碼率、幀預(yù)測類型,可為圖像特征信息中的至少兩種信息,如紋理信息、運(yùn)動速度,可為當(dāng)前編碼信息與圖像特征信息組合形成的至少兩種信息,如碼率和紋理信息。通過查表,根據(jù)信息滿足的預(yù)設(shè)條件確定對應(yīng)目標(biāo)編碼模式作為當(dāng)前編碼模式。在通過兩種或多種信息確定當(dāng)前編碼模式時(shí),可通過查表快速得到當(dāng)前編碼模式,簡單方便。
在一個(gè)實(shí)施例中,如圖10所示,提供了一種視頻解碼方法,以應(yīng)用于上述應(yīng)用環(huán)境中的終端或服務(wù)器來舉例說明,包括以下步驟:
步驟s310,獲取編碼數(shù)據(jù),編碼數(shù)據(jù)對應(yīng)的每個(gè)編碼視頻幀攜帶當(dāng)前編碼模式信息,根據(jù)當(dāng)前編碼模式信息確定當(dāng)前解碼視頻幀對應(yīng)的當(dāng)前解碼模式。
具體的,可通過獲取碼流中預(yù)設(shè)位置對應(yīng)的標(biāo)志位,通過標(biāo)志位得到當(dāng)前編碼模式信息,從而判斷當(dāng)前解碼模式是全分辨率模式還是下采樣模式。當(dāng)前解碼模式與當(dāng)前編碼模式相同。
步驟s320,當(dāng)所述當(dāng)前解碼視頻幀為幀間編碼幀時(shí),獲取當(dāng)前解碼視頻幀對應(yīng)的當(dāng)前參考幀,根據(jù)當(dāng)前參考幀與當(dāng)前解碼視頻幀的分辨率大小得到處理參考幀,具體為:判斷當(dāng)前參考幀是否與當(dāng)前解碼視頻幀分辨率相同,如果是,則直接將當(dāng)前參考幀確定為處理參考幀,否則進(jìn)入步驟s330。
具體的,當(dāng)前解碼視頻幀對應(yīng)的當(dāng)前參考幀根據(jù)幀間預(yù)測類型的不同,可為前向參考幀或雙向參考幀,其中參考幀的個(gè)數(shù)可為一個(gè)或多個(gè)。當(dāng)前參考幀如果與當(dāng)前解碼視頻幀分辨率相同,則可直接將當(dāng)前參考幀確定為處理參考幀。
在一個(gè)實(shí)施例中,如果當(dāng)前解碼視頻幀為幀內(nèi)編碼幀,則直接進(jìn)行解碼得到重建視頻幀。
步驟s330,對當(dāng)前參考幀根據(jù)預(yù)設(shè)采樣規(guī)則進(jìn)行采樣得到對應(yīng)的處理參考幀。
具體的,解碼時(shí)采用的預(yù)設(shè)采樣規(guī)則與編碼時(shí)采用的預(yù)設(shè)采樣規(guī)則相同,可與當(dāng)前編碼視頻幀的分辨率、當(dāng)前參考幀與當(dāng)前編碼視頻幀的距離相關(guān)。如當(dāng)當(dāng)前參考幀與當(dāng)前編碼視頻幀的距離d超過預(yù)設(shè)閾值時(shí),采用1/m下采樣,否則采用1/n下采樣,其中m<n。因?yàn)榫嚯x較遠(yuǎn)的參考幀可能參考價(jià)值小于距離較近的參考幀,從而對于距離較遠(yuǎn)的當(dāng)前參考幀即使與當(dāng)前編碼視頻幀的分辨率不同,也可不對其進(jìn)行采樣或使得其采樣后的分辨率變化較小,從而解碼時(shí)采用相同的方法可加快采樣速度,進(jìn)而提高整個(gè)解碼速度。在一個(gè)實(shí)施例中m的值隨著距離d變化,進(jìn)一步提高采樣參數(shù)的靈活性。在一個(gè)實(shí)施例中,如果當(dāng)前參考幀與當(dāng)前解碼視頻幀分辨率不相同,則對當(dāng)前參考幀進(jìn)行采樣得到與當(dāng)前解碼視頻幀分辨率相同的處理參考幀,其中對當(dāng)前參考幀進(jìn)行采樣包括上采樣和下采樣,如果當(dāng)前參考幀的分辨率大于當(dāng)前解碼視頻幀分辨率,則對當(dāng)前參考幀進(jìn)行下采樣得到處理參考幀,如果當(dāng)前參考幀的分辨率小于當(dāng)前編碼視頻幀分辨率,則對當(dāng)前參考幀進(jìn)行上采樣得到處理參考幀。在一個(gè)實(shí)施例中如果當(dāng)前參考幀的個(gè)數(shù)為多個(gè),則分別對每個(gè)當(dāng)前參考幀根據(jù)參考幀分辨率與當(dāng)前解碼視頻幀分辨率進(jìn)行采樣得到與當(dāng)前解碼視頻幀分辨率相同的處理參考幀。
在一個(gè)實(shí)施例中對當(dāng)前參考幀進(jìn)行采樣的采樣算法與步驟s340中對重建視頻幀進(jìn)行下采樣得到解碼視頻幀的采樣算法匹配,即如果對參考幀進(jìn)行下采樣,則下采樣算法與步驟s340中對重建視頻幀進(jìn)行下采樣得到解碼視頻幀的下采樣算法相同。如果對參考幀進(jìn)行上采樣,則上采樣算法與步驟s340中對重建視頻幀進(jìn)行下采樣得到解碼視頻幀的下采樣算法為匹配的相反的采樣算法。
步驟s340,根據(jù)處理參考幀對當(dāng)前解碼視頻幀進(jìn)行解碼得到重建視頻幀。
具體的,對預(yù)測殘差進(jìn)行解碼并與處理參考幀的對應(yīng)預(yù)測像素疊加得到重建視頻幀。
步驟s350,將重建視頻幀根據(jù)當(dāng)前解碼模式處理得到解碼視頻幀,如果當(dāng)前解碼模式為下采樣模式,則對重建視頻幀進(jìn)行上采樣得到解碼視頻幀,如果當(dāng)前編碼模式信息為全采樣模式,則將重建視頻幀確定為解碼視頻幀。
具體的,對重建視頻幀進(jìn)行上采樣的算法與編碼端對待編碼視頻幀進(jìn)行下采樣得到當(dāng)前編碼視頻幀的算法為匹配的相反的采樣算法。
本實(shí)施例中,通過獲取編碼數(shù)據(jù),編碼數(shù)據(jù)對應(yīng)的每個(gè)編碼視頻幀攜帶當(dāng)前編碼模式信息,根據(jù)當(dāng)前編碼模式信息確定當(dāng)前解碼視頻幀對應(yīng)的當(dāng)前解碼模式,當(dāng)所述當(dāng)前解碼視頻幀為幀間編碼幀時(shí),獲取當(dāng)前解碼視頻幀對應(yīng)的當(dāng)前參考幀,根據(jù)當(dāng)前參考幀與當(dāng)前解碼視頻幀的分辨率大小得到處理參考幀,具體為:判斷當(dāng)前參考幀是否與當(dāng)前解碼視頻幀分辨率相同,如果是,則直接將當(dāng)前參考幀確定為處理參考幀,否則,對當(dāng)前參考幀根據(jù)預(yù)設(shè)采樣規(guī)則進(jìn)行采樣得到對應(yīng)的處理參考幀,根據(jù)處理參考幀對當(dāng)前解碼視頻幀進(jìn)行解碼得到重建視頻幀,將重建視頻幀根據(jù)當(dāng)前解碼模式處理得到解碼視頻幀,如果當(dāng)前解碼模式為下采樣模式,則對重建視頻幀進(jìn)行上采樣得到解碼視頻幀,如果當(dāng)前編碼模式信息為全采樣模式,則將重建視頻幀確定為解碼視頻幀,針對采用自適應(yīng)變化模式編碼的碼流,可自適應(yīng)調(diào)整參考幀分辨率,進(jìn)行解碼,自適應(yīng)變化模式編碼的碼流是針對不同場景選擇合適的分辨率進(jìn)行編碼的碼流,從而提供對高質(zhì)量圖像質(zhì)量碼流的解碼支持。
如圖11所示,為一個(gè)具體的實(shí)施例中,視頻編碼方法與視頻解碼方法應(yīng)用的編解碼框架圖,對輸入編解碼框架的待編碼視頻幀先進(jìn)入分辨率選擇模塊410,根據(jù)所述待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息從可選編碼模式中確定當(dāng)前編碼模式,如果是全分辨率模式,則進(jìn)入全分辨率編碼模塊420,對當(dāng)前待編碼視頻幀進(jìn)行全分辨率編碼并輸出編碼碼流。如果是下采樣模式,則進(jìn)入下采樣編碼模塊430,對當(dāng)前待編碼視頻幀進(jìn)行下采樣得到當(dāng)前編碼視頻幀,對當(dāng)前編碼視頻幀進(jìn)行編碼并輸出編碼碼流。將編碼碼流輸入混合分辨率解碼模塊440,進(jìn)行解碼后得到重建視頻幀,如果是下采樣模式,則對重建視頻幀進(jìn)行上采樣得到解碼視頻幀,否則,直接輸出解碼視頻幀。
下采樣編碼模塊430在進(jìn)行編碼時(shí)的具體流程,如圖12所示,先判斷是否為幀內(nèi)編碼幀,如果是,則直接進(jìn)行幀內(nèi)預(yù)測得到預(yù)測殘差,并進(jìn)行變換、量化、熵編碼等得到編碼數(shù)據(jù)。如果不是幀內(nèi)編碼幀,則判斷參考幀是否與當(dāng)前編碼視頻幀分辨率相同,如果是,則進(jìn)行幀內(nèi)或幀間預(yù)測得到預(yù)測殘差,并進(jìn)行變換、量化、熵編碼等得到編碼數(shù)據(jù)。如果參考幀與當(dāng)前編碼視頻幀分辨率不同,則對參考幀根據(jù)預(yù)設(shè)采樣規(guī)則進(jìn)行采樣得到當(dāng)前編碼視頻幀對應(yīng)的處理參考幀,再進(jìn)行幀內(nèi)或幀間預(yù)測得到預(yù)測殘差,并進(jìn)行變換、量化、熵編碼等得到編碼數(shù)據(jù)。編碼過程中為了提高預(yù)測模式選擇速度,可以采用快速模式選擇算法,為了達(dá)到目標(biāo)碼率,根據(jù)碼率控制算法設(shè)定量化參數(shù)。
在一個(gè)實(shí)施例中,如圖13所示,提供了一種視頻編碼裝置,包括:
編碼模式確定模塊510,用于獲取待編碼視頻幀,根據(jù)待編碼視頻幀的當(dāng)前編碼信息和/或圖像特征信息從可選編碼模式中確定當(dāng)前編碼模式,可選編碼模式包括全分辨率模式和下采樣模式。
前處理模塊520,用于將所述待編碼視頻幀根據(jù)當(dāng)前編碼模式處理得到當(dāng)前編碼視頻幀,當(dāng)所述當(dāng)前編碼模式為下采樣模式時(shí),對所述待編碼視頻幀進(jìn)行下采樣得到當(dāng)前編碼視頻幀,當(dāng)所述當(dāng)前編碼模式為全分辨率模式時(shí),將所述待編碼視頻幀確定為當(dāng)前編碼視頻幀。
編碼處理參考幀確定模塊530,用于當(dāng)所述當(dāng)前編碼視頻幀為幀間編碼幀時(shí),獲取所述當(dāng)前編碼視頻幀對應(yīng)的當(dāng)前參考幀,根據(jù)所述當(dāng)前參考幀與當(dāng)前編碼視頻幀的分辨率大小得到對應(yīng)的處理參考幀,具體包括:判斷當(dāng)前參考幀是否與當(dāng)前編碼視頻幀分辨率相同,如果是,則直接將當(dāng)前參考幀確定為處理參考幀,否則,對當(dāng)前參考幀根據(jù)預(yù)設(shè)采樣規(guī)則進(jìn)行采樣得到對應(yīng)的處理參考幀。
幀間編碼模塊540,用于根據(jù)處理參考幀對所述當(dāng)前編碼視頻幀進(jìn)行編碼得到第一編碼數(shù)據(jù),第一編碼數(shù)據(jù)中攜帶當(dāng)前編碼模式信息。
在一個(gè)實(shí)施例中,當(dāng)前編碼信息包括量化參數(shù)信息,編碼模式確定模塊510還用于獲取待編碼視頻幀對應(yīng)的當(dāng)前量化參數(shù),獲取待編碼視頻幀的幀預(yù)測類型,獲取與幀預(yù)測類型對應(yīng)的量化參數(shù)閾值,如果當(dāng)前量化參數(shù)大于量化參數(shù)閾值,則確定當(dāng)前編碼模式為下采樣模式,否則確定當(dāng)前編碼模式為全分辨率模式。
在一個(gè)實(shí)施例中,當(dāng)前編碼信息包括碼率信息,編碼模式確定模塊510還用于獲取待編碼視頻幀對應(yīng)的當(dāng)前目標(biāo)碼率,獲取待編碼視頻幀的幀預(yù)測類型,獲取與幀預(yù)測類型對應(yīng)的碼率閾值,如果當(dāng)前目標(biāo)碼率大于所述碼率閾值,則確定當(dāng)前編碼模式為下采樣模式,否則確定當(dāng)前編碼模式為全分辨率模式。
在一個(gè)實(shí)施例中,圖像特征信息包括運(yùn)動特征信息和紋理信息,編碼模式確定模塊510還用于根據(jù)運(yùn)動特征信息確定運(yùn)動度,根據(jù)紋理信息確定紋理復(fù)雜度,如果運(yùn)動度超過運(yùn)動預(yù)設(shè)閾值或紋理復(fù)雜度超過紋理預(yù)設(shè)閾值,則確定當(dāng)前編碼模式為下采樣模式,否則確定當(dāng)前編碼模式為全分辨率模式。
在一個(gè)實(shí)施例中,如圖14所示,編碼模式確定模塊510包括:
編碼模式快速確定單元511,用于獲取所述待編碼視頻幀的幀預(yù)測類型,如果為幀內(nèi)預(yù)測幀,則確定所述當(dāng)前編碼模式為全分辨率模式,如果為雙向幀間預(yù)測幀,則確定所述當(dāng)前編碼模式為下采樣模式;
編碼模式精細(xì)確定單元512,用于如果為前向幀間預(yù)測幀,則根據(jù)量化參數(shù)信息、碼率信息、圖像特征信息中的至少一種信息確定當(dāng)前編碼模式。
在一個(gè)實(shí)施例中,如圖15所示,裝置還包括:
幀內(nèi)編碼模塊550,用于當(dāng)所述當(dāng)前編碼視頻幀為幀內(nèi)編碼幀時(shí),直接進(jìn)行幀內(nèi)編碼得到第二編碼數(shù)據(jù),所述第二編碼數(shù)據(jù)中攜帶當(dāng)前編碼模式信息。
在一個(gè)實(shí)施例中,如圖16所示,編碼處理參考幀確定模塊530包括:
第一采樣單元531,用于如果當(dāng)前參考幀的分辨率大于當(dāng)前編碼視頻幀分辨率,則對當(dāng)前參考幀進(jìn)行下采樣得到與當(dāng)前編碼視頻幀分辨率相同的處理參考幀。
第二采樣單元532,用于如果當(dāng)前參考幀的分辨率小于當(dāng)前編碼視頻幀分辨率,則對當(dāng)前參考幀進(jìn)行上采樣得到與當(dāng)前編碼視頻幀分辨率相同的處理參考幀。
在一個(gè)實(shí)施例上,如圖17所示,提供了一種視頻解碼裝置,包括:
解碼模式確定模塊610,用于獲取編碼數(shù)據(jù),編碼數(shù)據(jù)對應(yīng)的每個(gè)編碼視頻幀攜帶當(dāng)前編碼模式信息,根據(jù)當(dāng)前編碼模式信息確定當(dāng)前解碼視頻幀對應(yīng)的當(dāng)前解碼模式。
解碼處理參考幀確定模塊620,用于當(dāng)所述當(dāng)前解碼視頻幀為幀間編碼幀時(shí),獲取當(dāng)前解碼視頻幀對應(yīng)的當(dāng)前參考幀,根據(jù)當(dāng)前參考幀與當(dāng)前解碼視頻幀的分辨率大小得到處理參考幀,具體為:判斷當(dāng)前參考幀是否與當(dāng)前解碼視頻幀分辨率相同,如果是,則直接將當(dāng)前參考幀確定為處理參考幀,否則,對當(dāng)前參考幀根據(jù)預(yù)設(shè)采樣規(guī)則進(jìn)行采樣得到對應(yīng)的處理參考幀。
重建模塊630,用于根據(jù)處理參考幀對當(dāng)前解碼視頻幀進(jìn)行解碼得到重建視頻幀。
解碼視頻幀確定模塊640,用于將重建視頻幀根據(jù)當(dāng)前解碼模式處理得到解碼視頻幀,如果當(dāng)前解碼模式為下采樣模式,則對重建視頻幀進(jìn)行上采樣得到解碼視頻幀,如果當(dāng)前編碼模式信息為全采樣模式,則將重建視頻幀確定為解碼視頻幀。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述程序可存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中,如本發(fā)明實(shí)施例中,該程序可存儲于計(jì)算機(jī)系統(tǒng)的存儲介質(zhì)中,并被該計(jì)算機(jī)系統(tǒng)中的至少一個(gè)處理器執(zhí)行,以實(shí)現(xiàn)包括如上述各方法的實(shí)施例的流程。其中,所述存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(read-onlymemory,rom)或隨機(jī)存儲記憶體(randomaccessmemory,ram)等。
以上所述實(shí)施例的各技術(shù)特征可以進(jìn)行任意的組合,為使描述簡潔,未對上述實(shí)施例中的各個(gè)技術(shù)特征所有可能的組合都進(jìn)行描述,然而,只要這些技術(shù)特征的組合不存在矛盾,都應(yīng)當(dāng)認(rèn)為是本說明書記載的范圍。
以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并不能因此而理解為對發(fā)明專利范圍的限制。應(yīng)當(dāng)指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保護(hù)范圍。因此,本發(fā)明專利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。