專利名稱:有實(shí)時(shí)碼率控制的媒體流編碼方法及其系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字圖像處理領(lǐng)域,特別涉及一種數(shù)字圖像的碼率控制技術(shù)。
背景技術(shù):
視頻壓縮中的碼率控制,一般是通過幀級(jí)或宏塊級(jí)的碼率控制算法調(diào)整量化參數(shù)(quantization parameter,簡稱“QP”)進(jìn)而控制編碼碼率的大小,實(shí)現(xiàn)編碼比特?cái)?shù)和分配的編碼比特?cái)?shù)相一致。在一些對編碼器輸出碼率嚴(yán)格要求恒定的應(yīng)用中,如果輸入圖像的場景變化劇烈或圖像輸入噪聲突然變大,單獨(dú)調(diào)整量化參數(shù)是不能及時(shí)、有效地對編碼輸出碼率進(jìn)行控制的,會(huì)造成碼流緩沖區(qū)溢出或者有效數(shù)據(jù)被覆蓋。一般的處理方法是編碼器自適應(yīng)的跳 幀,通過降低幀率來降低編碼碼率。但在同時(shí)進(jìn)行音視頻編碼的產(chǎn)品和應(yīng)用中,跳幀會(huì)造成音視頻解碼播放不同步的問題。專利申請?zhí)枮?00680013747. 4的中國專利所公布的為用于速率受控視頻編碼的自適應(yīng)跳幀技術(shù)中,根據(jù)圖像的量化參數(shù)和運(yùn)動(dòng)矢量信息來選擇哪些編碼幀可以直接跳過。目前,跳過一幀的做法就是不對這一幀編碼,或者即使已進(jìn)行了編碼也會(huì)丟棄這一幀。本發(fā)明的發(fā)明人發(fā)現(xiàn),這種以丟棄的方式進(jìn)行跳幀的做法會(huì)導(dǎo)致視頻和音頻不同步。因?yàn)橐曨l中少了一巾貞,但這一巾貞對應(yīng)的音頻信號(hào)還在。除了上述問題,200680013747. 4進(jìn)一步的問題是,這個(gè)技術(shù)需要計(jì)算每巾貞圖像全部宏塊的運(yùn)動(dòng)矢量信息,并在多個(gè)預(yù)選幀內(nèi)進(jìn)行排序,選擇出跳過編碼的幀。這導(dǎo)致運(yùn)算資源消耗量大,無法用于實(shí)時(shí)性要求高的設(shè)備和應(yīng)用中。專利申請?zhí)枮?00910050424.8的中國專利所公布的一種適用于實(shí)時(shí)應(yīng)用的
H.264碼率控制方法中,根據(jù)緩沖區(qū)的飽和度來判斷當(dāng)前編碼幀是否進(jìn)行跳幀操作。這個(gè)技術(shù)最大的問題是出于低延時(shí)和成本的考慮,編碼器的碼流緩沖區(qū)的大小是有嚴(yán)格限制的。一旦在緩沖區(qū)的飽和度較低的情況下,發(fā)生場景切換或者圖像運(yùn)動(dòng)劇烈情況,而編碼的量化參數(shù)沒有及時(shí)加大,編碼比特?cái)?shù)會(huì)增加很多,把緩沖區(qū)的飽和度急劇抬升,在接下來的編碼過程中,為了降低緩沖區(qū)的飽和度,會(huì)發(fā)生連續(xù)跳幀的問題。這會(huì)造成圖像解碼播放卡頓的問題。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種有實(shí)時(shí)碼率控制的媒體流編碼方法及其系統(tǒng),可以避免編碼跳幀造成的視音頻數(shù)據(jù)解碼播放不同步的問題。為解決上述技術(shù)問題,本發(fā)明的實(shí)施方式公開了一種有實(shí)時(shí)碼率控制的媒體流編碼方法,包括以下步驟對媒體流進(jìn)行編碼時(shí),如果判定當(dāng)前編碼幀需要進(jìn)行跳幀處理,則生成一個(gè)特殊幀(本發(fā)明中又稱為S幀)作為該當(dāng)前編碼幀的編碼結(jié)果插入到媒體流中,其中,該特殊幀中的所有宏塊都按照跳過的宏塊模式進(jìn)行編碼。本發(fā)明的實(shí)施方式還公開了一種有實(shí)時(shí)碼率控制的媒體流編碼系統(tǒng),包括判斷單元,用于對媒體流進(jìn)行編碼時(shí)判定當(dāng)前編碼幀是否需要進(jìn)行跳幀處理;編碼單元,用于判斷單元判定當(dāng)前編碼幀需要進(jìn)行跳幀處理時(shí),生成一個(gè)特殊幀作為該當(dāng)前編碼幀的編碼結(jié)果插入到媒體流中,其中,該特殊幀中的所有宏塊都按照跳過的宏塊模式進(jìn)行編碼。本發(fā)明實(shí)施方式與現(xiàn)有技術(shù)相比,主要區(qū)別及其效果在于跳幀處理時(shí)生成一個(gè)特殊幀作為該當(dāng)前編碼幀的編碼結(jié)果插入到媒體流中進(jìn)行編碼,無需用戶動(dòng)態(tài)的調(diào)整編碼幀率設(shè)置,沒有減少實(shí)際編碼幀數(shù),可以避免編碼跳幀造成 的視音頻數(shù)據(jù)解碼播放不同步的問題。特殊幀只需要熵編碼環(huán)節(jié)進(jìn)行簡單操作即可,不需要其它宏塊編碼操作,因此計(jì)算資源消耗很少,即使編碼后進(jìn)行特殊幀編碼操作,對設(shè)備的性能影響也很小。進(jìn)一步地,控制連續(xù)特殊幀操作的數(shù)目,在不同的量化參數(shù)空間,采用不同的最大連續(xù)特殊幀數(shù)目閾值,有效解決圖像解碼播放的卡頓現(xiàn)象。進(jìn)一步地,控制幀編碼比特?cái)?shù)最大使用閾值,在不同的量化參數(shù)空間,選取不同的經(jīng)驗(yàn)系數(shù)。盡可能的在小量化參數(shù)空間不進(jìn)行編碼后特殊幀操作,盡可能的保留圖像序列的有效信息。進(jìn)一步地,若當(dāng)前編碼P幀采用特殊幀模式進(jìn)行編碼,在對實(shí)時(shí)碼率控制所使用的算法的虛擬緩沖區(qū)進(jìn)行更新時(shí),不使用實(shí)際特殊幀的編碼比特?cái)?shù),利用目標(biāo)編碼比特?cái)?shù)target_frame_size進(jìn)行更新,可以避免緩沖區(qū)飽和度突然降低,從而減小下一編碼巾貞的量
化參數(shù)。進(jìn)一步地,如果當(dāng)前P幀采用的是編碼后特殊幀操作,則在下一編碼P幀量化參數(shù)的計(jì)算在正常處理的基礎(chǔ)上加上一個(gè)經(jīng)驗(yàn)系數(shù)(對于札264是加5),可以解決場景切換或圖像劇烈運(yùn)動(dòng)等情況下,量化參數(shù)選擇調(diào)整不夠迅速的問題。
圖I是本發(fā)明第一實(shí)施方式中一種有實(shí)時(shí)碼率控制的媒體流編碼方法的流程示意圖;圖2是本發(fā)明第二實(shí)施方式中一種有實(shí)時(shí)碼率控制的媒體流編碼方法的流程示意圖;圖3是本發(fā)明第四實(shí)施方式中一種有實(shí)時(shí)碼率控制的媒體流編碼系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式在以下的敘述中,為了使讀者更好地理解本申請而提出了許多技術(shù)細(xì)節(jié)。但是,本領(lǐng)域的普通技術(shù)人員可以理解,即使沒有這些技術(shù)細(xì)節(jié)和基于以下各實(shí)施方式的種種變化和修改,也可以實(shí)現(xiàn)本申請各權(quán)利要求所要求保護(hù)的技術(shù)方案。為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明的實(shí)施方式作進(jìn)一步地詳細(xì)描述。
本發(fā)明第一實(shí)施方式涉及一種有實(shí)時(shí)碼率控制的媒體流編碼方法。圖I是該有實(shí)時(shí)碼率控制的媒體流編碼方法的流程示意圖。在步驟101中,判斷當(dāng)前編碼幀是否需要進(jìn)行跳幀處理,若是,則進(jìn)入步驟102 ;否則進(jìn)入步驟103。在現(xiàn)有技術(shù)中,跳幀處理是指跳過指定的幀,直接放棄這一幀,在輸出的媒體流中這一幀空缺?,F(xiàn)有技術(shù)中已經(jīng)有不少判斷是否需要進(jìn)行跳幀處理的判斷方法,例如根據(jù)圖像的量化參數(shù)和運(yùn)動(dòng)矢量信息來選擇哪些編碼幀可以直接跳過,或者根據(jù)緩沖區(qū)的飽和度來判斷當(dāng)前編碼幀是否進(jìn)行跳幀操作等等。在步驟102中,生成一個(gè)特殊幀(本申請中簡稱為“S幀”)作為該當(dāng)前編碼幀的編碼結(jié)果插入到媒體流中,其中,該特殊幀中的所有宏塊都按照跳過的宏塊模式進(jìn)行編碼。此后回到步驟101,對下一幀進(jìn)行判斷。
跳過的宏塊(skipped macroblock)是除“跳過”指示外,無其它編碼數(shù)據(jù)的宏塊,是一種特殊的宏塊幀間編碼模式,宏塊的紋理信息和運(yùn)動(dòng)矢量信息都不進(jìn)行編碼操作,解碼器會(huì)根據(jù)參考幀和其它周圍的宏塊解碼信息完成跳過宏塊的解碼操作。在需要跳幀時(shí),不是對當(dāng)前幀不進(jìn)行編碼操作,而是對當(dāng)前幀宏塊編碼類型全部按照跳過的宏塊模式進(jìn)行編碼,這樣在媒體流中沒有幀的缺失,跳幀處理不會(huì)減少實(shí)際編碼幀數(shù),解碼端不需要為視頻幀率調(diào)整做額外的工作以解決視音頻數(shù)據(jù)解碼播放不同步的問題。因?yàn)槿堪凑仗^的宏塊模式進(jìn)行編碼的幀結(jié)構(gòu)簡單,只需要很小的運(yùn)算資源即可完成,完全可以滿足實(shí)時(shí)碼率控制的要求,特別適合運(yùn)算能力不強(qiáng)的移動(dòng)終端。在步驟103中,對當(dāng)前編碼幀進(jìn)行正常編碼,將編碼結(jié)果插入到媒體流中。此后回到步驟101,對下一幀進(jìn)行判斷。跳幀處理時(shí)生成一個(gè)特殊幀作為該當(dāng)前編碼幀的編碼結(jié)果插入到媒體流中進(jìn)行編碼,無需用戶動(dòng)態(tài)的調(diào)整編碼幀率設(shè)置,沒有減少實(shí)際編碼幀數(shù),可以避免編碼跳幀造成的視音頻數(shù)據(jù)解碼播放不同步的問題。1080p分辨率的高清圖像,H264編碼一般碼率最低設(shè)置為4Mbps (—秒鐘編碼器編碼數(shù)據(jù)的比特?cái)?shù)),25幀/秒,I幀間隔設(shè)置為25,平均一個(gè)幀的編碼字節(jié)數(shù)目大概是20,00字節(jié)的樣子。采用S幀模式編碼,只需要32個(gè)字節(jié)即可。所以可以有效地降低編碼比特?cái)?shù)。本發(fā)明第二實(shí)施方式涉及一種有實(shí)時(shí)碼率控制的媒體流編碼方法。圖2是該有實(shí)時(shí)碼率控制的媒體流編碼方法的流程示意圖。第二實(shí)施方式在第一實(shí)施方式的基礎(chǔ)上進(jìn)行了改進(jìn),主要改進(jìn)之處在于在編碼前先進(jìn)行是否要跳幀處理的判斷,如果不需要跳幀,則在正常編碼后再進(jìn)行是否要跳幀處理的判斷。通過編碼前的判斷,可以有效地減少不必要的編碼運(yùn)算量,通過編碼后的判斷,可以有效防止緩沖區(qū)溢出等問題,兩重跳幀判斷的設(shè)置,可以保證在占用較少資源的前提下避免圖像的卡頓。具體地說在步驟201中,判斷當(dāng)前編碼幀及其最近連續(xù)幀的參數(shù)是否滿足第一條件,如果是則判定為當(dāng)前編碼幀需要進(jìn)行跳幀處理,進(jìn)入步驟205,否則進(jìn)入步驟202。在本發(fā)明的一個(gè)優(yōu)選例中,第一條件是以下條件的組合當(dāng)前編碼幀為P幀;
當(dāng)前編碼巾貞所使用的量化系數(shù)(QP_current)大于量化系數(shù)的門限(QP_th); 當(dāng)前編碼幀的最近連續(xù)幀所使用的量化系數(shù)均值(QP_avg)大于預(yù)定門限(指定門限優(yōu)選值是QP_th - 2);平均的巾貞編碼比特?cái)?shù)(avg_frame_size)大于目標(biāo)編碼比特?cái)?shù)(target_frame_size);目標(biāo)編碼比特?cái)?shù)是現(xiàn)有技術(shù)中的一個(gè)概念,是每一幀編碼后比特?cái)?shù)的目標(biāo)值,換句話說是要求編碼系統(tǒng)將每一幀編碼后應(yīng)當(dāng)達(dá)到的比特?cái)?shù)。已連續(xù)跳過的巾貞數(shù)(Skip_cnt)小于連續(xù)跳過的巾貞數(shù)閾值(Skip_frame_max)。當(dāng)然,可以理解,在本發(fā)明的其它實(shí)例中,這些特定條件的組合并不是必須的,例如,最后一個(gè)條件“當(dāng)前連續(xù)跳過的幀數(shù)小于連續(xù)跳過的幀數(shù)閾值”可以沒有。第一條件只是在編碼前判斷是否要跳幀處理的條件,對于不同的場景可以有不同的具體條件,并不限于上述例子?!ぴ诓襟E202中,對當(dāng)前編碼幀正常編碼。此后進(jìn)入步驟203,判斷當(dāng)前正常編碼幀及其最近連續(xù)幀的參數(shù)是否滿足第二條件,如果是則進(jìn)入步驟204,否則進(jìn)入步驟206。在本發(fā)明的一個(gè)優(yōu)選例中,第二條件是以下條件的組合當(dāng)前正常編碼幀的實(shí)際編碼比特?cái)?shù)(p_frame_SiZe)大于幀編碼比特?cái)?shù)閾值(max_frame_s i z e);當(dāng)前正常編碼幀為P幀;已連續(xù)跳過的巾貞數(shù)(Skip_cnt)小于連續(xù)跳過的巾貞數(shù)閾值(Skip_frame_max)。第二條件只是在編碼后判斷是否要跳幀處理的條件,對于不同的場景可以有不同的具體條件,并不限于上述例子。在步驟204中,對當(dāng)前正常編碼幀,丟棄已編碼的數(shù)據(jù),并判定當(dāng)前編碼幀需要進(jìn)行跳幀處理。此后進(jìn)入步驟205,生成一個(gè)特殊幀作為該當(dāng)前編碼幀的編碼結(jié)果插入到媒體流中。此后進(jìn)入步驟206,判斷當(dāng)前幀是否為最后一幀,如果是則結(jié)束本流程,否則回到步驟201,對下一幀進(jìn)行判斷。在本發(fā)明的一個(gè)優(yōu)選例中,對上述第一和第二條件中max_frame_size進(jìn)行了進(jìn)一步的優(yōu)化。具體地說,max_frame_size=weight xtarget_frame_size ;weight 是力口權(quán)經(jīng)驗(yàn)系數(shù),不同的量化系數(shù)區(qū)間對應(yīng)不同的取值。在H264編碼實(shí)現(xiàn)中,優(yōu)選的weight取值如下QP_current<=26, weight=7 ;26〈 QP_Current〈=30, weight=5 ;30〈 QP_Current〈=34, weight=4 ;34< QP_Current〈=38, weight=3 ;QP_Current >38,weight=2。上述優(yōu)選的weight取值是發(fā)明人經(jīng)反復(fù)試驗(yàn)所得,在使用以上取值可以有效解決圖像解碼播放的卡頓現(xiàn)象??刂七B續(xù)特殊幀操作的數(shù)目,在不同的量化參數(shù)空間,采用不同的最大連續(xù)特殊幀數(shù)目閾值,有效解決圖像解碼播放的卡頓現(xiàn)象??刂茙幋a比特?cái)?shù)最大使用閾值,在不同的量化參數(shù)空間,選取不同的經(jīng)驗(yàn)系數(shù)。盡可能的在小量化參數(shù)空間不進(jìn)行編碼后特殊幀操作,盡可能的保留圖像序列的有效信
肩、O如果當(dāng)前P幀采用的是編碼后特殊幀操作,則在下一編碼P幀量化參數(shù)的計(jì)算在正常處理的基礎(chǔ)上加上一個(gè)經(jīng)驗(yàn)系數(shù)(對于H. 264優(yōu)選經(jīng)驗(yàn)系數(shù)是5),可以解決場景切換或圖像劇烈運(yùn)動(dòng)等情況下,量化參數(shù)選擇調(diào)整不夠迅速的問題。本發(fā)明第三實(shí)施方式涉及一種有實(shí)時(shí)碼率控制的媒體流編碼方法。第三實(shí)施方式在第一或第二實(shí)施方式的基礎(chǔ)上進(jìn)行了改進(jìn),主要改進(jìn)之處在于若當(dāng)前編碼P幀采用特殊幀模式進(jìn)行編碼,在對實(shí)時(shí)碼率控制所使用的算法的虛擬緩沖區(qū)進(jìn)行更新時(shí),不使用實(shí)際特殊幀的編碼比特?cái)?shù),利用目標(biāo)編碼比特?cái)?shù)target_frame_Size進(jìn)行更新,可以避免緩沖區(qū)飽和度突然降低,從而減小下一編碼幀的量化參數(shù)。具體地說生成一個(gè)特殊幀作為該當(dāng)前編碼幀的編碼結(jié)果插入到媒體流中的步驟(如步驟102或步驟205)之后,還包括以下步驟利用目標(biāo)編碼比特?cái)?shù),對實(shí)時(shí)碼率控制所使用的算法的虛擬緩沖區(qū)進(jìn)行更新。本發(fā)明的各方法實(shí)施方式均可以以軟件、硬件、固件等方式實(shí)現(xiàn)。不管本發(fā)明是以軟件、硬件、還是固件方式實(shí)現(xiàn),指令代碼都可以存儲(chǔ)在任何類型的計(jì)算機(jī)可訪問的存儲(chǔ)器中(例如永久的或者可修改的,易失性的或者非易失性的,固態(tài)的或者非固態(tài)的,固定的或者可更換的介質(zhì)等等)。同樣,存儲(chǔ)器可以例如是可編程陣列邏輯(Programmable ArrayLogic,簡稱“PAL”)、隨機(jī)存取存儲(chǔ)器(Random Access Memory,簡稱“RAM”)、可編程只讀存儲(chǔ)器(Programmable Read Only Memory,簡稱“PR0M”)、只讀存儲(chǔ)器(Read-Only Memory,簡稱“ROM”)、電可擦除可編程只讀存儲(chǔ)器(Electrically Erasable Programmable ROM,簡稱“EEPR0M”)、磁盤、光盤、數(shù)字通用光盤(Digital Versatile Disc,簡稱“DVD”)等等。本發(fā)明第四實(shí)施方式涉及一種有實(shí)時(shí)碼率控制的媒體流編碼系統(tǒng)。圖3是該有實(shí)時(shí)碼率控制的媒體流編碼系統(tǒng)的結(jié)構(gòu)示意圖。該有實(shí)時(shí)碼率控制的媒體流編碼系統(tǒng)包括判斷單元,用于對媒體流進(jìn)行編碼時(shí)判定當(dāng)前編碼幀是否需要進(jìn)行跳幀處理。編碼單元,用于判斷單元判定當(dāng)前編碼幀需要進(jìn)行跳幀處理時(shí),生成一個(gè)特殊幀作為該當(dāng)前編碼幀的編碼結(jié)果插入到媒體流中,其中,該特殊幀中的所有宏塊都按照跳過的宏塊模式進(jìn)行編碼。第一實(shí)施方式是與本實(shí)施方式相對應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第一實(shí)施方式互相配合實(shí)施。第一實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第一實(shí)施方式中。本發(fā)明第五實(shí)施方式涉及一種有實(shí)時(shí)碼率控制的媒體流編碼系統(tǒng)。第五實(shí)施方式在第四實(shí)施方式的基礎(chǔ)上進(jìn)行了改進(jìn),主要改進(jìn)之處在于具體地說:判斷單元包括以下子模塊第一判斷子模塊,用于判斷當(dāng)前編碼幀及其最近連續(xù)幀的參數(shù)是否滿足第一條件,如果是則判定為需要進(jìn)行跳幀處理,否則指示編碼單元正常編碼。
第二判斷子模塊,用于判斷編碼單元輸出的當(dāng)前正常編碼幀及其最近連續(xù)幀的參數(shù)是否滿足第二條件,如果是則丟棄當(dāng)前正常編碼幀并判定為需要進(jìn)行跳幀處理。第一條件包括當(dāng)前編碼幀為P幀,和當(dāng)前編碼幀所使用的量化系數(shù)大于量化系數(shù)的門限,和當(dāng)前編碼幀的最近連續(xù)幀所使用的量化系數(shù)均值大于量化系數(shù)的門限,和平均的幀編碼比特?cái)?shù)大于目標(biāo)編碼比特?cái)?shù),和已連續(xù)跳過的幀數(shù)小于連續(xù)跳過的幀數(shù)閾值。 第二條件包括當(dāng)前正常編碼幀的實(shí)際編碼比特?cái)?shù)大于幀編碼比特?cái)?shù)閾值。和當(dāng)前正常編碼幀為P幀。和已連續(xù)跳過的幀數(shù)小于連續(xù)跳過的幀數(shù)閾值。第二實(shí)施方式是與本實(shí)施方式相對應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第二實(shí)施方式互相配合實(shí)施。第二實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第二實(shí)施方式中。本發(fā)明第六實(shí)施方式涉及一種有實(shí)時(shí)碼率控制的媒體流編碼系統(tǒng)。第六實(shí)施方式在第四或第五實(shí)施方式的基礎(chǔ)上進(jìn)行了改進(jìn),主要改進(jìn)之處在于若當(dāng)前編碼P幀采用S幀模式進(jìn)行編碼,在對實(shí)時(shí)碼率控制所使用的算法的虛擬緩沖區(qū)進(jìn)行更新時(shí),不使用實(shí)際S幀的編碼比特?cái)?shù),利用目標(biāo)編碼比特?cái)?shù)target_frame_Size進(jìn)行更新,可以避免緩沖區(qū)飽和度突然降低,從而減小下一編碼幀的量化參數(shù)。具體地說還包括虛擬緩沖區(qū)和更新單元。更新單元用于在判斷單元判定當(dāng)前編碼幀需要進(jìn)行跳幀處理時(shí),用于利用目標(biāo)編碼比特?cái)?shù),對實(shí)時(shí)碼率控制所使用的算法的虛擬緩沖區(qū)進(jìn)行更新??梢岳斫猓摂M緩沖區(qū)是一個(gè)現(xiàn)有技術(shù),這里不進(jìn)行詳述了,本發(fā)明的一個(gè)要點(diǎn)在于需要進(jìn)行跳幀處理時(shí)使用目標(biāo)編碼比特?cái)?shù)而非實(shí)際比特?cái)?shù)進(jìn)行虛擬緩沖區(qū)的更新,這個(gè)改進(jìn)與虛擬緩沖區(qū)的具體實(shí)現(xiàn)方式并沒有太大的關(guān)系。第三實(shí)施方式是與本實(shí)施方式相對應(yīng)的方法實(shí)施方式,本實(shí)施方式可與第三實(shí)施方式互相配合實(shí)施。第三實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第三實(shí)施方式中。需要說明的是,本發(fā)明各設(shè)備實(shí)施方式中提到的各單元都是邏輯單元或模塊,在物理上,一個(gè)邏輯單元或模塊可以是一個(gè)物理單元或模塊,也可以是一個(gè)物理單元或模塊的一部分,還可以以多個(gè)物理單元或模塊的組合實(shí)現(xiàn),這些邏輯單元或模塊本身的物理實(shí)現(xiàn)方式并不是最重要的,這些邏輯單元或模塊所實(shí)現(xiàn)的功能的組合才是解決本發(fā)明所提出的技術(shù)問題的關(guān)鍵。此外,為了突出本發(fā)明的創(chuàng)新部分,本發(fā)明上述各設(shè)備實(shí)施方式并沒有將與解決本發(fā)明所提出的技術(shù)問題關(guān)系不太密切的單元或模塊引入,這并不表明上述設(shè)備實(shí)施方式并不存在其它的單元或模塊。需要說明的是,在本專利的權(quán)利要求和說明書中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
雖然通過參照本發(fā)明的某些優(yōu)選實(shí)施方式,已經(jīng)對本發(fā)明進(jìn)行了圖示和描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)該明白,可以在形式上和細(xì)節(jié)上對其作各種改變,而不偏離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種有實(shí)時(shí)碼率控制的媒體流編碼方法,其特征在于,包括以下步驟 對媒體流進(jìn)行編碼時(shí),如果判定當(dāng)前編碼幀需要進(jìn)行跳幀處理,則生成一個(gè)特殊幀作為該當(dāng)前編碼幀的編碼結(jié)果插入到媒體流中,其中,該特殊幀中的所有宏塊都按照跳過的宏塊模式進(jìn)行編碼。
2.根據(jù)權(quán)利要求I所述的有實(shí)時(shí)碼率控制的媒體流編碼方法,其特征在于,在所述如果判定當(dāng)前編碼幀需要進(jìn)行跳幀處理,則生成一個(gè)特殊幀作為該當(dāng)前編碼幀的編碼結(jié)果插入到媒體流中的步驟之前,包括以下步驟 判斷當(dāng)前編碼幀及其最近連續(xù)幀的參數(shù)是否滿足第一條件; 若滿足第一條件,則判定為當(dāng)前編碼幀需要進(jìn)行跳幀處理; 若不滿足第一條件,則對當(dāng)前編碼幀正常編碼,并判斷當(dāng)前正常編碼幀及其最近連續(xù)幀的參數(shù)是否滿足第二條件,若滿足第二條件,則對當(dāng)前正常編碼幀,丟棄已編碼的數(shù)據(jù),并判定當(dāng)前編碼幀需要進(jìn)行跳幀處理。
3.根據(jù)權(quán)利要求2所述的有實(shí)時(shí)碼率控制的媒體流編碼方法,其特征在于,所述第一條件包括 當(dāng)前編碼幀為P幀;和 當(dāng)前編碼幀所使用的量化系數(shù)大于量化系數(shù)的門限;和 當(dāng)前編碼幀的最近連續(xù)幀所使用的量化系數(shù)均值大于量化系數(shù)的門限;和 平均的幀編碼比特?cái)?shù)大于目標(biāo)編碼比特?cái)?shù)。
4.根據(jù)權(quán)利要求3所述的有實(shí)時(shí)碼率控制的媒體流編碼方法,其特征在于,所述第一條件還包括 已連續(xù)跳過的幀數(shù)小于連續(xù)跳過的幀數(shù)閾值。
5.根據(jù)權(quán)利要求2所述的有實(shí)時(shí)碼率控制的媒體流編碼方法,其特征在于,所述第二條件包括 當(dāng)前正常編碼幀的實(shí)際編碼比特?cái)?shù)大于幀編碼比特?cái)?shù)閾值;和 當(dāng)前正常編碼幀為P幀;和 已連續(xù)跳過的幀數(shù)小于連續(xù)跳過的幀數(shù)閾值。
6.根據(jù)權(quán)利要求I至5中任意一條所述的有實(shí)時(shí)碼率控制的媒體流編碼方法,其特征在于,所述生成一個(gè)特殊幀作為該當(dāng)前編碼幀的編碼結(jié)果插入到媒體流中的步驟之后,還包括以下步驟 利用目標(biāo)編碼比特?cái)?shù)對所述實(shí)時(shí)碼率控制所使用的算法的虛擬緩沖區(qū)進(jìn)行更新。
7.一種有實(shí)時(shí)碼率控制的媒體流編碼系統(tǒng),其特征在于,包括 判斷單元,用于對媒體流進(jìn)行編碼時(shí)判定當(dāng)前編碼幀是否需要進(jìn)行跳幀處理; 編碼單元,用于所述判斷單元判定當(dāng)前編碼幀需要進(jìn)行跳幀處理時(shí),生成一個(gè)特殊幀作為該當(dāng)前編碼幀的編碼結(jié)果插入到媒體流中,其中,該特殊幀中的所有宏塊都按照跳過的宏塊模式進(jìn)行編碼。
8.根據(jù)權(quán)利要求7所述的有實(shí)時(shí)碼率控制的媒體流編碼系統(tǒng),其特征在于,所述判斷單元包括以下子模塊 第一判斷子模塊,用于判斷當(dāng)前編碼幀及其最近連續(xù)幀的參數(shù)是否滿足第一條件,如果是則判定為需要進(jìn)行跳幀處理,否則指示所述編碼單元正常編碼;第二判斷子模塊,用于判斷所述編碼單元輸出的當(dāng)前正常編碼幀及其最近連續(xù)幀的參數(shù)是否滿足第二條件,如果是則丟棄當(dāng)前正常編碼幀并判定為需要進(jìn)行跳幀處理。
9.根據(jù)權(quán)利要求8所述的有實(shí)時(shí)碼率控制的媒體流編碼系統(tǒng),其特征在于,所述第一條件包括 當(dāng)前編碼幀為P幀;和 當(dāng)前編碼幀所使用的量化系數(shù)大于量化系數(shù)的門限;和 當(dāng)前編碼幀的最近連續(xù)幀所使用的量化系數(shù)均值大于量化系數(shù)的門限;和 平均的幀編碼比特?cái)?shù)大于目標(biāo)編碼比特?cái)?shù);和 已連續(xù)跳過的幀數(shù)小于連續(xù)跳過的幀數(shù)閾值; 所述第二條件包括 當(dāng)前正常編碼幀的實(shí)際編碼比特?cái)?shù)大于幀編碼比特?cái)?shù)閾值;和 當(dāng)前正常編碼幀為P幀;和 已連續(xù)跳過的幀數(shù)小于連續(xù)跳過的幀數(shù)閾值。
10.根據(jù)權(quán)利要求7至9中任一項(xiàng)所述的有實(shí)時(shí)碼率控制的媒體流編碼系統(tǒng),其特征在于,還包括虛擬緩沖區(qū)和更新單元; 所述更新單元用于在所述判斷單元判定當(dāng)前編碼幀需要進(jìn)行跳幀處理時(shí),用于利用目標(biāo)編碼比特?cái)?shù)對所述實(shí)時(shí)碼率控制所使用的算法的虛擬緩沖區(qū)進(jìn)行更新。
全文摘要
本發(fā)明涉及數(shù)字圖像處理領(lǐng)域,公開了一種有實(shí)時(shí)碼率控制的媒體流編碼方法及其系統(tǒng)??梢员苊饩幋a跳幀造成的視音頻數(shù)據(jù)解碼播放不同步的問題。本發(fā)明中,包括以下步驟對媒體流進(jìn)行編碼時(shí),如果判定當(dāng)前編碼幀需要進(jìn)行跳幀處理,則生成一個(gè)特殊幀作為該當(dāng)前編碼幀的編碼結(jié)果插入到媒體流中,其中,該特殊幀中的所有宏塊都按照跳過的宏塊模式進(jìn)行編碼。
文檔編號(hào)H04N7/50GK102724513SQ20121024151
公開日2012年10月10日 申請日期2012年7月12日 優(yōu)先權(quán)日2012年7月12日
發(fā)明者俞海, 梁鐵, 賈永華 申請人:杭州海康威視數(shù)字技術(shù)股份有限公司