本發(fā)明涉及視頻處理技術(shù)領(lǐng)域,特別涉及一種視頻編碼方法及裝置、存儲介質(zhì)。
背景技術(shù):
h.264是國際標準化組織(英文:internationalorganizationforstandardization;簡稱:iso)和國際電信聯(lián)盟(英文:internationaltelecomunion;簡稱:itu)共同提出的繼mpeg4之后的新一代數(shù)字視頻壓縮格式。h.264編碼標準是由itu-t視頻編碼專家組(英文:videocodingexpertsgroup;簡稱:vceg)和iso/iec動態(tài)圖像專家組(英文:movingpicturesexpertsgroup;簡稱:mpeg)聯(lián)合組成的聯(lián)合視頻組(英文:jointvideoteam;簡稱:jvt)提出的高度壓縮數(shù)字視頻編碼標準,這個標準通常被稱為h.264/avc標準。
由于終端中的編碼芯片的兼容性參差不齊,采用h.264編碼方法進行視頻編碼時,常常對分辨率有一定的尺寸要求。例如,大多數(shù)安卓終端的編碼芯片要求視頻的寬度必須符合16像素對齊的要求(也即是進行視頻編碼后的視頻的寬度為16個像素的整數(shù)倍),則編碼芯片可以支持分辨率為368×640的視頻編碼。因此,一般會采用分辨率為368×640的視頻編碼方式對視頻進行編碼。
但是,由于終端在顯示視頻的圖像時,也有相應(yīng)的寬長比的要求,例如要求終端顯示的圖像的寬長比為9∶16,當解碼并播放基于分辨率為368×640進行編碼得到的視頻時,為了保證該寬長比,需要對解碼后的視頻中每一幀圖像的尺寸進行壓縮,容易出現(xiàn)圖像變形的現(xiàn)象,導致終端上圖像的顯示效果較差。
技術(shù)實現(xiàn)要素:
為了解決相關(guān)技術(shù)中為了保證寬長比,需要對解碼后的視頻中每一幀圖像的尺寸進行壓縮,容易出現(xiàn)圖像變形的現(xiàn)象,導致終端上圖像的顯示效果較差的問題,本發(fā)明實施例提供了一種視頻編碼方法及裝置、存儲介質(zhì)。所述技術(shù)方案如下:
第一方面,提供了一種視頻編碼方法,用于編碼端,所述方法包括:
根據(jù)待編碼視頻的初始分辨率確定所述待編碼視頻的目標分辨率,所述目標分辨率為所述編碼端所支持的可編碼的分辨率,所述目標分辨率大于所述初始分辨率;
為所述待編碼視頻中的每一幀圖像添加無效像素,使添加無效像素后的圖像的分辨率等于所述目標分辨率;
在對所述添加無效像素后的圖像進行視頻編碼得到碼流后,在所述碼流中添加裁切信息,所述裁切信息用于指示所述每一幀圖像中無效像素的位置。
可選的,所述編碼端支持的分辨率為寬度為x像素對齊、長度為y像素對齊的分辨率,x和y均為大于0的整數(shù),
所述根據(jù)待編碼視頻的初始分辨率確定所述待編碼視頻的目標分辨率,包括:
獲取所述待編碼視頻的初始分辨率,所述初始分辨率為w×h,其中,w為所述待編碼視頻的寬度方向的像素數(shù)量,h為所述待編碼視頻的長度方向的像素數(shù)量;
根據(jù)分辨率計算公式計算所述待編碼視頻的目標分辨率,所述目標分辨率為w’×h’,所述分辨率計算公式為:
w’=((w+x-1)/x)*x,h’=((h+y-1)/y)*y。
可選的,所述在對所述添加無效像素后的圖像進行視頻編碼得到碼流后,在所述碼流中添加裁切信息,包括:
提取所述碼流中的第一序列參數(shù)集;
在對所述第一序列參數(shù)集進行解碼得到的序列參數(shù)信息中的預設(shè)信息塊中添加裁切信息;
對添加裁切信息后的序列參數(shù)信息進行編碼得到第二序列參數(shù)集;
將所述碼流中的第一序列參數(shù)集替換為所述第二序列參數(shù)集。
可選的,所述在對所述添加無效像素后的圖像進行視頻編碼得到碼流后,在所述碼流中添加裁切信息,包括:
截取所述碼流中的第一序列參數(shù)集;
對所述第一序列參數(shù)集進行解碼得到的序列參數(shù)信息中的預設(shè)信息塊中添加裁切信息;
對添加裁切信息后的序列參數(shù)信息進行編碼得到第二序列參數(shù)集;
將所述第二序列參數(shù)集添加至所述碼流中。
可選的,所述為所述待編碼視頻中的每一幀圖像添加無效像素,包括:
在所述待編碼視頻中的每一幀圖像的右側(cè)增加(w’-w)列無效像素;
在所述待編碼視頻中的每一幀圖像的下方增加(h’-h)行無效像素。
可選的,所述為所述待編碼視頻中的每一幀圖像添加無效像素,包括:
為所述待編碼視頻中的每一幀圖像添加任意顏色的無效像素。
可選的,顯示分辨率的寬度方向的像素數(shù)量和長度方向的像素數(shù)量的比例為m:n,所述顯示分辨率為終端支持顯示的圖像的分辨率,m和n均為大于0的整數(shù),
所述w為m的整數(shù)倍,所述h為n的整數(shù)倍,且所述w∶h=m∶n。
第二方面,提供了一種視頻解碼方法,用于解碼端,所述方法包括:
獲取攜帶有裁切信息的碼流,所述碼流是編碼端為待編碼視頻中的每一幀圖像添加無效像素后,對添加無效像素后的圖像進行視頻編碼得到的,所述裁切信息用于指示所述每一幀圖像中無效像素的位置;
對所述碼流進行解碼得到待處理視頻和所述裁切信息;
根據(jù)所述裁切信息,對所述待處理視頻中的每一幀圖像中的所述無效像素進行裁切,以得到目標視頻。
可選的,所述對所述碼流進行解碼得到待處理視頻和所述裁切信息,包括:
對所述碼流進行解碼得到待處理視頻和序列參數(shù)信息;
從所述序列參數(shù)信息的預設(shè)信息塊中提取所述裁切信息。
第三方面,提供了一種視頻編碼裝置,用于編碼端,所述裝置包括:
確定模塊,用于根據(jù)待編碼視頻的初始分辨率確定所述待編碼視頻的目標分辨率,所述目標分辨率為所述編碼端所支持的可編碼的分辨率,所述目標分辨率大于所述初始分辨率;
第一添加模塊,用于為所述待編碼視頻中的每一幀圖像添加無效像素,使添加無效像素后的圖像的分辨率等于所述目標分辨率;
第二添加模塊,用于在對所述添加無效像素后的圖像進行視頻編碼得到碼流后,在所述碼流中添加裁切信息,所述裁切信息用于指示所述每一幀圖像中無效像素的位置。
可選的,所述編碼端支持的分辨率為寬度為x像素對齊、長度為y像素對齊的分辨率,x和y均為大于0的整數(shù),
所述確定模塊,用于:
獲取所述待編碼視頻的初始分辨率,所述初始分辨率為w×h,其中,w為所述待編碼視頻的寬度方向的像素數(shù)量,h為所述待編碼視頻的長度方向的像素數(shù)量;
根據(jù)分辨率計算公式計算所述待編碼視頻的目標分辨率,所述目標分辨率為w’×h’,所述分辨率計算公式為:
w’=((w+x-1)/x)*x,h’=((h+y-1)/y)*y。
可選的,所述第二添加模塊,用于:
提取所述碼流中的第一序列參數(shù)集;
在對所述第一序列參數(shù)集進行解碼得到的序列參數(shù)信息中的預設(shè)信息塊中添加裁切信息;
對添加裁切信息后的序列參數(shù)信息進行編碼得到第二序列參數(shù)集;
將所述碼流中的第一序列參數(shù)集替換為所述第二序列參數(shù)集。
可選的,所述第二添加模塊,用于:
截取所述碼流中的第一序列參數(shù)集;
對所述第一序列參數(shù)集進行解碼得到的序列參數(shù)信息中的預設(shè)信息塊中添加裁切信息;
對添加裁切信息后的序列參數(shù)信息進行編碼得到第二序列參數(shù)集;
將所述第二序列參數(shù)集添加至所述碼流中。
可選的,所述第一添加模塊,用于:
在所述待編碼視頻中的每一幀圖像的右側(cè)增加(w’-w)列無效像素;
在所述待編碼視頻中的每一幀圖像的下方增加(h’-h)行無效像素。
可選的,所述第一添加模塊,用于:
為所述待編碼視頻中的每一幀圖像添加任意顏色的無效像素。
可選的,顯示分辨率的寬度方向的像素數(shù)量和長度方向的像素數(shù)量的比例為m:n,所述顯示分辨率為終端支持顯示的圖像的分辨率,m和n均為大于0的整數(shù),
所述w為m的整數(shù)倍,所述h為n的整數(shù)倍,且所述w:h=m:n。
第四方面,提供了一種視頻解碼裝置,用于解碼端,所述裝置包括:
獲取模塊,用于獲取攜帶有裁切信息的碼流,所述碼流是編碼端為待編碼視頻中的每一幀圖像添加無效像素后,對添加無效像素后的圖像進行視頻編碼得到的,所述裁切信息用于指示所述每一幀圖像中無效像素的位置;
解碼模塊,用于對所述碼流進行解碼得到待處理視頻和所述裁切信息;
裁切模塊,用于根據(jù)所述裁切信息,對所述待處理視頻中的每一幀圖像中的所述無效像素進行裁切,以得到目標視頻。
可選的,所述解碼模塊,用于:
對所述碼流進行解碼得到待處理視頻和序列參數(shù)信息;
從所述序列參數(shù)信息的預設(shè)信息塊中提取所述裁切信息。
第五方面,提供了一種視頻編碼裝置,包括:
處理器;
用于存儲所述處理器的可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:
根據(jù)待編碼視頻的初始分辨率確定所述待編碼視頻的目標分辨率,所述目標分辨率為編碼端所支持的可編碼的分辨率,所述目標分辨率大于所述初始分辨率;
為所述待編碼視頻中的每一幀圖像添加無效像素,使添加無效像素后的圖像的分辨率等于所述目標分辨率;
在對所述添加無效像素后的圖像進行視頻編碼得到碼流后,在所述碼流中添加裁切信息,所述裁切信息用于指示所述每一幀圖像中無效像素的位置。
第六方面,提供了一種視頻解碼裝置,包括:
處理器;
用于存儲所述處理器的可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:
獲取攜帶有裁切信息的碼流,所述碼流是編碼端為待編碼視頻中的每一幀圖像添加無效像素后,對添加無效像素后的圖像進行視頻編碼得到的,所述裁切信息用于指示所述每一幀圖像中無效像素的位置;
對所述碼流進行解碼得到待處理視頻和所述裁切信息;
根據(jù)所述裁切信息,對所述待處理視頻中的每一幀圖像中的所述無效像素進行裁切,以得到目標視頻。
第七方面,提供了一種存儲介質(zhì),當所述存儲介質(zhì)中的指令由處理器執(zhí)行時,所述處理器能夠執(zhí)行第一方面任一所述的視頻編碼方法。
第八方面,提供了一種存儲介質(zhì),當所述存儲介質(zhì)中的指令由處理器執(zhí)行時,所述處理器能夠執(zhí)行第二方面任一所述的視頻解碼方法。
本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
本發(fā)明實施例提供的視頻編碼方法及裝置、存儲介質(zhì),編碼端可以根據(jù)待編碼視頻的初始分辨率確定編碼端所支持的可編碼的目標分辨率,并為待編碼視頻中的每一幀圖像添加無效像素,使編碼端能夠?qū)μ砑訜o效像素后的圖像進行視頻編碼,得到碼流后,再在碼流中添加用于指示每一幀圖像中無效像素的位置的裁切信息,在解碼端對碼流進行解碼時,可以根據(jù)裁切信息輸出裁切后的圖像,使得輸出圖像的分辨率還原至初始分辨率,無需對解碼后的視頻中的每一幀圖像的尺寸進行壓縮,不會出現(xiàn)圖像變形的現(xiàn)象,保證了圖像在終端上的顯示效果。
附圖說明
圖1是本發(fā)明實施例提供的一種視頻編碼方法的流程圖;
圖2是本發(fā)明實施例提供的一種視頻解碼方法的流程圖;
圖3-1是本發(fā)明實施例提供的一種視頻編解碼方法的流程圖;
圖3-2是本發(fā)明實施例提供的一種添加無效信息的示意圖;
圖3-3是本發(fā)明實施例提供的一種在第一碼流中添加裁切信息的方法流程圖;
圖3-4是本發(fā)明實施例提供的另一種在第一碼流中添加裁切信息的方法流程圖;
圖3-5是相關(guān)技術(shù)中的一種在終端上顯示圖像的示意圖;
圖3-6是本發(fā)明實施例提供的一種在終端上顯示圖像的示意圖;
圖4是本發(fā)明實施例提供的一種視頻編碼裝置的結(jié)構(gòu)示意圖;
圖5是本發(fā)明實施例提供的一種視頻解碼裝置的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
本發(fā)明實施例提供的視頻編碼、解碼方法應(yīng)用于視頻處理系統(tǒng),該視頻處理系統(tǒng)包括編碼端和至少一個解碼端。
其中,該編碼端和解碼端均可以位于終端上,終端可以為智能手機、電腦、多媒體播放器、電子閱讀器、可穿戴式設(shè)備等,編碼端和解碼端可以通過終端的操作系統(tǒng)實現(xiàn)其功能,或者通過客戶端實現(xiàn)其功能。
示例的,當某一直播平臺的主播在視頻直播時,編碼端位于用于主播進行視頻直播的主播終端,該主播終端通過視頻編碼動作生成一定清晰度的視頻對應(yīng)的碼流,該主播終端或者用于觀看直播的觀眾終端上的的解碼器(該解碼器位于操作系統(tǒng)或客戶端中)可以實現(xiàn)解碼端的功能,該解碼端通過對碼流解碼,可以在該終端上播放該一定清晰度的視頻。
需要說明的是,本發(fā)明實施例提供的視頻編碼、解碼方法可以應(yīng)用于對h.264/avc標準的改進。
圖1是本發(fā)明實施例提供的一種視頻編碼方法的流程圖,可以用于視頻處理系統(tǒng)中的編碼端,如圖1所示,該方法可以包括:
步驟101、根據(jù)待編碼視頻的初始分辨率確定待編碼視頻的目標分辨率,該目標分辨率為編碼端所支持的可編碼的分辨率,目標分辨率大于初始分辨率。
步驟102、為待編碼視頻中的每一幀圖像添加無效像素,使添加無效像素后的圖像的分辨率等于目標分辨率。
步驟103、在對添加無效像素后的圖像進行視頻編碼得到碼流后,在碼流中添加裁切信息,該裁切信息用于指示每一幀圖像中無效像素的位置。
綜上所述,本發(fā)明實施例提供的視頻編碼方法,可以根據(jù)待編碼視頻的初始分辨率確定編碼端所支持的可編碼的目標分辨率,并為待編碼視頻中的每一幀圖像添加無效像素,使編碼端能夠?qū)μ砑訜o效像素后的圖像進行視頻編碼,得到碼流后,再在碼流中添加用于指示每一幀圖像中無效像素的位置的裁切信息,在解碼端對碼流進行解碼時,可以根據(jù)裁切信息輸出裁切后的圖像,使得輸出圖像的分辨率還原至初始分辨率,無需對解碼后的視頻中的每一幀圖像的尺寸進行壓縮,不會出現(xiàn)圖像變形的現(xiàn)象,保證了圖像在終端上的顯示效果。
圖2是本發(fā)明實施例提供的一種視頻解碼方法的流程圖,可以用于視頻處理系統(tǒng)的解碼端,如圖2所示,該方法可以包括:
步驟201、獲取攜帶有裁切信息的碼流,該碼流是編碼端為待編碼視頻中的每一幀圖像添加無效像素后,對添加無效像素后的圖像進行視頻編碼得到的,裁切信息用于指示每一幀圖像中無效像素的位置。
步驟202、對碼流進行解碼得到待處理視頻和裁切信息。
步驟203、根據(jù)裁切信息,對待處理視頻中的每一幀圖像中的無效像素進行裁切,以得到目標視頻。
其中,添加無效像素后的圖像的分辨率等于目標分辨率,該目標分辨率為編碼端所支持的可編碼的分辨率,目標分辨率大于待編碼視頻的初始分辨率。
綜上所述,本發(fā)明實施例提供的視頻解碼方法,解碼端可以獲取攜帶有裁切信息的碼流,并對該碼流進行解碼得到待處理視頻和裁切信息,再根據(jù)裁切信息,對待處理視頻中的每一幀圖像中的無效像素進行裁切,使輸出的目標視頻中的每一幀圖像的分辨率等于待編碼視頻中的每一幀圖像的分辨率,無需對解碼后的視頻中的每一幀圖像的尺寸進行壓縮,不會出現(xiàn)圖像變形的現(xiàn)象,保證了圖像在終端上的顯示效果。
圖3-1是本發(fā)明實施例提供的一種視頻編解碼方法的流程圖,可以應(yīng)用于視頻處理系統(tǒng),如圖3-1所示,該方法可以包括:
步驟301、編碼端根據(jù)待編碼視頻的初始分辨率確定待編碼視頻的目標分辨率,該目標分辨率為編碼端所支持的可編碼的分辨率,目標分辨率大于初始分辨率。
假設(shè)編碼端支持的分辨率為寬度為x像素對齊、長度為y像素對齊的分辨率,也即是目標分辨率的寬度方向的像素數(shù)量為x的整數(shù)倍,長度方向的像素數(shù)量為y的整數(shù)倍,其中,x和y均為大于0的整數(shù)。
相應(yīng)的,根據(jù)待編碼視頻的初始分辨率確定待編碼視頻的目標分辨率的方法可以包括:
s11、獲取待編碼視頻的初始分辨率,該初始分辨率為w×h,其中,w為待編碼視頻的寬度方向的像素數(shù)量,h為待編碼視頻的長度方向的像素數(shù)量。
示例的,假設(shè)顯示分辨率的寬度方向的像素數(shù)量和長度方向的像素數(shù)量的比例為m:n,m和n均為大于0的整數(shù),該顯示分辨率為終端支持顯示的圖像的分辨率,也即是,終端顯示的圖像的分辨率為顯示分辨率時,終端可以在顯示界面上完整地顯示該圖像,無需對圖像進行裁切或壓縮,w為m的整數(shù)倍,h為n的整數(shù)倍,且w∶h=m∶n。
例如,終端支持顯示的圖像的分辨率的寬度方向的像素數(shù)量和長度方向的像素數(shù)量的比例為9∶16,當終端需要播放中等清晰度的視頻時,編碼端獲取的待編碼視頻的初始分辨率可以為360×640。
s12、根據(jù)分辨率計算公式計算待編碼視頻的目標分辨率,該目標分辨率為w’×h’,分辨率計算公式為:
w’=((w+x-1)/x)*x,h’=((h+y-1)/y)*y。
采用上述分辨率計算公式計算出待編碼視頻的目標分辨率大于或等于初始分辨率,且該目標分辨率為編碼端支持的分辨率中最接近初始分辨率的分辨率。
以s11中的例子進行說明,假設(shè)編碼端支持的分辨率為寬度為16像素對齊、長度為16像素對齊的分辨率,則分辨率計算公式可以為:
w’=((360+15)/16)*16,h’=((640+15)/16)*16。
根據(jù)二進制算法可以計算得出w’=368,h’=640,因此確定目標分辨率為368×640。
步驟302、編碼端為待編碼視頻中的每一幀圖像添加無效像素,使添加無效像素后的圖像的分辨率等于目標分辨率。
例如,可以在待編碼視頻中的每一幀圖像的右側(cè)增加(w’-w)列無效像素;在待編碼視頻中的每一幀圖像的下方增加(h’-h)行無效像素。本發(fā)明實施例對在待編碼視頻中的每一幀圖像中增加無效像素的位置不做限定。
以步驟301中的例子為例,待編碼視頻的初始分辨率為360×640,目標分標率為368×640,則可以在待編碼視頻中的每一幀圖像的右側(cè)增加8列無效像素,如圖3-2所示,待編碼視頻中的圖像的像素區(qū)域為h,增加的無效像素所在的區(qū)域為w。
可選的,為待編碼視頻中的每一幀圖像添加的無效像素可以為任意顏色的無效像素,也可以是空白像素,目的是使添加無效像素后的圖像的分辨率滿足編碼端編碼的要求,因此本發(fā)明實施例對添加的無效像素的顏色不做限定。
本發(fā)明實施例中,假設(shè)對添加無效像素后的圖像進行視頻編碼得到的碼流為第一碼流,在碼流中添加裁切信息,也即是在第一碼流中添加裁切信息,添加裁切信息后的碼流為第二碼流,具體解釋可以參考下述步驟303至步驟307。
步驟303、編碼端對添加無效像素后的圖像進行視頻編碼得到第一碼流。
對圖像進行視頻編碼得到第一碼流的具體方法可以參考現(xiàn)有的方法,本發(fā)明實施例在此不做贅述。
步驟304、編碼端在第一碼流中添加裁切信息得到第二碼流,該裁切信息用于指示每一幀圖像中無效像素的位置。
可選的,編碼端在第一碼流中添加裁切信息的方法可以有多種,本發(fā)明實施例以以下兩種方法為例進行說明,包括:
第一種在第一碼流中添加裁切信息的方法,如圖3-3所示,包括:
步驟41a、提取第一碼流中的第一序列參數(shù)集。
編碼端編碼得到的碼流中包括第一序列參數(shù)集(英文:sequenceparameterset;簡稱:sps),第一序列參數(shù)集中包括有添加無效像素后的圖像對應(yīng)的圖像參數(shù)信息,該圖像參數(shù)信息包括圖像的長度和圖像的寬度。
在采用h.264編碼標準時,碼流中包括sps、圖像參數(shù)集(英文:pictureparameterset;簡稱:pps)和關(guān)鍵幀(關(guān)鍵幀對應(yīng)圖像內(nèi)容信息),序列參數(shù)集位于每一個關(guān)鍵幀之前,序列參數(shù)集包括圖像格式信息、編碼參數(shù)信息和圖像參數(shù)信息等,例如編碼參數(shù)信息可以位于序列參數(shù)集的crop信息塊中,該crop信息塊用于指示解碼端在輸出圖像時對該圖像進行裁切的裁切位置。
需要說明的是,提取第一碼流中的第一序列參數(shù)集后,碼流中仍保存有該第一序列參數(shù)集。
步驟42a、在對第一序列參數(shù)集進行解碼得到的序列參數(shù)信息中的預設(shè)信息塊中添加裁切信息。
編碼端在提取第一碼流中的第一序列參數(shù)集后,通過解碼器對第一序列參數(shù)集進行解碼,得到序列參數(shù)信息,并在序列參數(shù)信息中的預設(shè)信息塊(例如crop信息塊)中添加裁切信息,例如可以參考步驟302中的例子,該裁切信息用于指示無效像素的位置為第361至368列,也即是圖3-2中區(qū)域w中的像素為無效像素。
步驟43a、對添加裁切信息后的序列參數(shù)信息進行編碼得到第二序列參數(shù)集。
其中,第二序列參數(shù)集中包括有添加無效像素后的圖像對應(yīng)的圖像參數(shù)信息,以及用于指示每一幀圖像中的無效像素的位置的裁切信息。
步驟44a、將碼流中的第一序列參數(shù)集替換為第二序列參數(shù)集。
由于對序列參數(shù)信息的編碼獨立于對每一幀圖像的內(nèi)容的編碼,因此將碼流中的第一序列參數(shù)集替換為第二序列參數(shù)集,也即是更新了碼流中的序列參數(shù)集,對圖3-2所示的區(qū)域h中的像素不會產(chǎn)生影響,也即是對待編碼視頻中的每一幀圖像的內(nèi)容不會產(chǎn)生影響。
第二種在第一碼流中添加裁切信息的方法,如圖3-4所示,包括:
步驟41b、截取碼流中的第一序列參數(shù)集。
需要說明的是,截取第一碼流中的第一序列參數(shù)集后,碼流中不存在該第一序列參數(shù)集。
步驟42b、對第一序列參數(shù)集進行解碼得到的序列參數(shù)信息中的預設(shè)信息塊中添加裁切信息。
步驟43b、對添加裁切信息后的序列參數(shù)信息進行編碼得到第二序列參數(shù)集;
步驟44b、將第二序列參數(shù)集添加至碼流中。
需要說明的是,可以將第二序列參數(shù)集添加至原第一序列參數(shù)集所在的位置。
步驟41b至步驟44b的具體解釋可以參考上述41a至步驟44a,本發(fā)明實施例在此不做贅述。
步驟305、編碼端向解碼端發(fā)送第二碼流,該第二碼流中攜帶有裁切信息。
可選的,編碼端可以通過實時傳輸協(xié)議(英文:real-timetransportprotocol;簡稱:rtp)方式向解碼端傳輸?shù)诙a流,具體傳輸方式可以參考現(xiàn)有技術(shù),本發(fā)明實施例對碼流的傳輸方式不做限定。
步驟306、解碼端對攜帶有裁切信息的第二碼流進行解碼,得到待處理視頻和裁切信息。
可選的,解碼端對攜帶有裁切信息的第二碼流進行解碼,得到待處理視頻和裁切信息的方法可以包括:
s61、對第二碼流進行解碼得到待處理視頻和序列參數(shù)信息。
其中,對第二序列參數(shù)集解碼得到序列參數(shù)信息,對每一幀圖像的內(nèi)容對應(yīng)的碼流進行解碼得到待處理視頻。
s62、從序列參數(shù)信息的預設(shè)信息塊中提取裁切信息。
步驟307、解碼端根據(jù)該裁切信息,對待處理視頻中的每一幀圖像中的無效像素進行裁切,得到目標視頻。
可選的,解碼端可以根據(jù)裁切信息指示的每一幀圖像中無效像素的位置對該無效信息進行裁切,最終得到的目標視頻的分辨率等于初始分辨率,因此終端可以在顯示界面上完整地播放該目標視頻中的每一幀圖像。
示例的,采用相關(guān)技術(shù)中的編解碼方法,例如終端的顯示分辨率為360×640,編碼端編碼的視頻的分辨率為368×640,解碼端輸出的視頻在終端上進行顯示時,需要對視頻中的每一幀圖像進行橫向壓縮,終端上顯示的圖像會變形,導致顯示的圖像失真;或者,解碼端輸出的視頻在終端上進行顯示時,需要對視頻中的每一幀圖像進行裁切,如圖3-5所示,終端上顯示的圖像會不完整,與圖3-6相比,圖3-6中的虛線框中的區(qū)域q在圖3-5中顯示時被裁切,導致圖像的顯示效果較差。而采用本發(fā)明實施例提供的視頻編解碼方法,通過在待編碼視頻中添加無效像素,使編碼端編碼的視頻的分辨率為368×640,解碼端在輸出視頻時,根據(jù)碼流的序列參數(shù)集中的裁切信息將編碼端添加的無效像素進行裁切,輸出的視頻的分辨率為終端的顯示分辨率360×640,圖3-6為本發(fā)明實施例提供的一種在終端上顯示圖像的示意圖,如圖3-6所示,該視頻中的每一幀圖像可以在終端的顯示界面上完整地顯示,保證了終端上圖像的顯示效果。
需要說明的是,本發(fā)明實施例提供的視頻編解碼方法步驟的先后順序可以進行適當調(diào)整,步驟也可以根據(jù)情況進行相應(yīng)增減,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本公開揭露的技術(shù)范圍內(nèi),可輕易想到變化的方法,都應(yīng)涵蓋在本公開的保護范圍之內(nèi),因此不再贅述。
綜上所述,本發(fā)明實施例提供的視頻編解碼方法,可以先為待編碼視頻中的每一幀圖像添加無效像素,使編碼端能夠?qū)μ砑訜o效像素后的圖像進行視頻編碼,對碼流中的序列參數(shù)集重新進行編碼時,在序列參數(shù)集中編入裁切信息,解碼端在對碼流解碼時,根據(jù)序列參數(shù)集中的裁切信息裁切無效像素,得到目標視頻,該目標視頻的分辨率可以為任意分辨率,解決了相關(guān)技術(shù)中由于編碼端的兼容性問題導致的可進行視頻編碼的分辨率受到限制的問題,實現(xiàn)了任意分辨率的視頻在進行視頻編碼后可以在終端上以該任意分辨率進行播放,解碼端也無需對解碼后的視頻中的每一幀圖像的尺寸進行壓縮,不會出現(xiàn)圖像變形的現(xiàn)象,保證了視頻中的每一幀圖像在終端上的顯示效果。
本發(fā)明實施例提供了一種視頻編碼裝置400,用于編碼端,如圖4所示,該裝置400可以包括:
確定模塊401,用于根據(jù)待編碼視頻的初始分辨率確定待編碼視頻的目標分辨率,該目標分辨率為編碼端所支持的可編碼的分辨率,該目標分辨率大于初始分辨率。
第一添加模塊402,用于為待編碼視頻中的每一幀圖像添加無效像素,使添加無效像素后的圖像的分辨率等于目標分辨率。
第二添加模塊403,用于在對添加無效像素后的圖像進行視頻編碼得到碼流后,在碼流中添加裁切信息,該裁切信息用于指示每一幀圖像中無效像素的位置。
綜上所述,本發(fā)明實施例提供的視頻編碼裝置,可以通過確定模塊根據(jù)待編碼視頻的初始分辨率確定編碼端所支持的可編碼的目標分辨率,并通過第一添加模塊為待編碼視頻中的每一幀圖像添加無效像素,使編碼端能夠?qū)μ砑訜o效像素后的圖像進行視頻編碼,得到碼流后,再通過第二添加模塊在碼流中添加用于指示每一幀圖像中無效像素的位置的裁切信息,在解碼端對碼流進行解碼時,可以根據(jù)裁切信息輸出裁切后的圖像,使得輸出圖像的分辨率還原至初始分辨率,無需對解碼后的視頻中的每一幀圖像的尺寸進行壓縮,不會出現(xiàn)圖像變形的現(xiàn)象,保證了圖像在終端上的顯示效果。
其中,編碼端支持的分辨率為寬度為x像素對齊、長度為y像素對齊的分辨率,x和y均為大于0的整數(shù),
相應(yīng)的,確定模塊可以用于:
獲取待編碼視頻的初始分辨率,該初始分辨率為w×h,其中,w為待編碼視頻的寬度方向的像素數(shù)量,h為待編碼視頻的長度方向的像素數(shù)量;再根據(jù)分辨率計算公式計算待編碼視頻的目標分辨率,該目標分辨率為w’×h’,分辨率計算公式為:
w’=((w+x-1)/x)*x,h’=((h+y-1)/y)*y。
可選的,第二添加模塊可以用于:
提取碼流中的第一序列參數(shù)集;在對第一序列參數(shù)集進行解碼得到的序列參數(shù)信息中的預設(shè)信息塊中添加裁切信息;對添加裁切信息后的序列參數(shù)信息進行編碼得到第二序列參數(shù)集;將碼流中的第一序列參數(shù)集替換為第二序列參數(shù)集。
可選的,第二添加模塊還可以用于:
截取碼流中的第一序列參數(shù)集;對第一序列參數(shù)集進行解碼得到的序列參數(shù)信息中的預設(shè)信息塊中添加裁切信息;對添加裁切信息后的序列參數(shù)信息進行編碼得到第二序列參數(shù)集;將第二序列參數(shù)集添加至碼流中。
其中,第一添加模塊可以用于:
在待編碼視頻中的每一幀圖像的右側(cè)增加(w’-w)列無效像素;在待編碼視頻中的每一幀圖像的下方增加(h’-h)行無效像素。
第一添加模塊還可以用于:
為待編碼視頻中的每一幀圖像添加任意顏色的無效像素。
需要說明的是,顯示分辨率的寬度方向的像素數(shù)量和長度方向的像素數(shù)量的比例為m∶n,該顯示分辨率為終端支持顯示的圖像的分辨率,m和n均為大于0的整數(shù),w為m的整數(shù)倍,h為n的整數(shù)倍,且w∶h=m∶n。
綜上所述,本發(fā)明實施例提供的視頻編碼裝置,可以通過確定模塊根據(jù)待編碼視頻的初始分辨率確定編碼端所支持的可編碼的目標分辨率,并通過第一添加模塊為待編碼視頻中的每一幀圖像添加無效像素,使編碼端能夠?qū)μ砑訜o效像素后的圖像進行視頻編碼,得到碼流后,再通過第二添加模塊在碼流中添加用于指示每一幀圖像中無效像素的位置的裁切信息,在解碼端對碼流進行解碼時,可以根據(jù)裁切信息輸出裁切后的圖像,使得輸出圖像的分辨率還原至初始分辨率,無需對解碼后的視頻中的每一幀圖像的尺寸進行壓縮,不會出現(xiàn)圖像變形的現(xiàn)象,保證了圖像在終端上的顯示效果。
本發(fā)明實施例提供了一種視頻解碼裝置500,用于解碼端,如圖5所示,該裝置500可以包括:
獲取模塊501,用于獲取攜帶有裁切信息的碼流,該碼流是編碼端為待編碼視頻中的每一幀圖像添加無效像素后,對添加無效像素后的圖像進行視頻編碼得到的,該裁切信息用于指示每一幀圖像中無效像素的位置。
解碼模塊502,用于對碼流進行解碼得到待處理視頻和裁切信息。
裁切模塊503,用于根據(jù)裁切信息,對待處理視頻中的每一幀圖像中的無效像素進行裁切,以得到目標視頻。
其中,解碼模塊可以用于:
對碼流進行解碼得到待處理視頻和序列參數(shù)信息;從序列參數(shù)信息的預設(shè)信息塊中提取裁切信息。
綜上所述,本發(fā)明實施例提供的視頻解碼裝置,解碼端可以通過獲取模塊獲取攜帶有裁切信息的碼流,并通過解碼模塊對該碼流進行解碼得到待處理視頻和裁切信息,再通過裁切模塊根據(jù)裁切信息,對待處理視頻中的每一幀圖像中的無效像素進行裁切,使輸出的目標視頻中的每一幀圖像的分辨率等于待編碼視頻中的每一幀圖像的分辨率,無需對解碼后的視頻中的每一幀圖像的尺寸進行壓縮,不會出現(xiàn)圖像變形的現(xiàn)象,保證了圖像在終端上的顯示效果。
關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。
本發(fā)明實施例提供了一種視頻編碼裝置,包括:
處理器;
用于存儲所述處理器的可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:
根據(jù)待編碼視頻的初始分辨率確定所述待編碼視頻的目標分辨率,所述目標分辨率為編碼端所支持的可編碼的分辨率,所述目標分辨率大于所述初始分辨率;
為所述待編碼視頻中的每一幀圖像添加無效像素,使添加無效像素后的圖像的分辨率等于所述目標分辨率;
在對所述添加無效像素后的圖像進行視頻編碼得到碼流后,在所述碼流中添加裁切信息,所述裁切信息用于指示所述每一幀圖像中無效像素的位置。
本發(fā)明實施例提供了一種視頻解碼裝置,包括:
處理器;
用于存儲所述處理器的可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:
獲取攜帶有裁切信息的碼流,所述碼流是編碼端為待編碼視頻中的每一幀圖像添加無效像素后,對添加無效像素后的圖像進行視頻編碼得到的,所述裁切信息用于指示所述每一幀圖像中無效像素的位置;
對所述碼流進行解碼得到待處理視頻和所述裁切信息;
根據(jù)所述裁切信息,對所述待處理視頻中的每一幀圖像中的所述無效像素進行裁切,以得到目標視頻。
本發(fā)明實施例提供了一種存儲介質(zhì),當所述存儲介質(zhì)中的指令由處理器執(zhí)行時,所述處理器能夠執(zhí)行上述實施例涉及的視頻編碼方法,示例的,該方法可以包括:
根據(jù)待編碼視頻的初始分辨率確定所述待編碼視頻的目標分辨率,所述目標分辨率為編碼端所支持的可編碼的分辨率,所述目標分辨率大于所述初始分辨率;
為所述待編碼視頻中的每一幀圖像添加無效像素,使添加無效像素后的圖像的分辨率等于所述目標分辨率;
在對所述添加無效像素后的圖像進行視頻編碼得到碼流后,在所述碼流中添加裁切信息,所述裁切信息用于指示所述每一幀圖像中無效像素的位置。
本發(fā)明實施例提供了一種存儲介質(zhì),當所述存儲介質(zhì)中的指令由處理器執(zhí)行時,所述處理器能夠執(zhí)行上述實施例涉及的視頻解碼方法,示例的,該方法可以包括:
獲取攜帶有裁切信息的碼流,所述碼流是編碼端為待編碼視頻中的每一幀圖像添加無效像素后,對添加無效像素后的圖像進行視頻編碼得到的,所述裁切信息用于指示所述每一幀圖像中無效像素的位置;
對所述碼流進行解碼得到待處理視頻和所述裁切信息;
根據(jù)所述裁切信息,對所述待處理視頻中的每一幀圖像中的所述無效像素進行裁切,以得到目標視頻。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。
以上所述僅為本發(fā)明的可選實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。