專(zhuān)利名稱(chēng):一種流媒體視頻編碼方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及音視頻技術(shù)領(lǐng)域,特別是涉及一種流媒體視頻編碼方法及裝置。
背景技術(shù):
MPEG壓縮標(biāo)準(zhǔn)是針對(duì)運(yùn)動(dòng)圖像而設(shè)計(jì)的,基本方法是——在單位時(shí)間內(nèi)采集并保 存第一幀信息,然后就只存儲(chǔ)其余幀相對(duì)第一幀發(fā)生變化的部分,以達(dá)到壓縮的目的。MPEG 壓縮標(biāo)準(zhǔn)可實(shí)現(xiàn)幀之間的壓縮。在多媒體數(shù)據(jù)壓縮標(biāo)準(zhǔn)中,較多采用MPEG系列標(biāo)準(zhǔn)。MPEG 系列壓縮算法從早期的MPEG-l、MPEG-2發(fā)展到現(xiàn)在的MPEG-4以及最新的H. 264,其核心壓 縮原理沒(méi)有變化。MPEG系列壓縮算法都在時(shí)域上對(duì)視頻流進(jìn)行壓縮。MPEG系列壓縮算法采用了 I幀、P幀和B幀的模式,當(dāng)前大部分壓縮芯片或者壓縮 算法并沒(méi)有實(shí)現(xiàn)B幀。其中,I幀是關(guān)鍵幀,P幀是前向預(yù)測(cè)幀,B幀是后向預(yù)測(cè)幀。當(dāng)解碼器收到一個(gè)I幀,可立刻進(jìn)行解碼,而不需要其它條件。但是,當(dāng)解碼器收 到P幀或者B幀的時(shí)候,就不能夠立刻進(jìn)行解碼,比如,P幀的解碼需要解碼器先解碼該幀前 面的P幀或者I幀。如果前面的P幀或者I幀在網(wǎng)絡(luò)中丟掉,即使后面連續(xù)收到很多P幀, 也無(wú)法正常解碼。例如在帶寬不夠的情況下網(wǎng)絡(luò)丟掉一個(gè)I幀,即使隨后的P幀都收到, 仍然無(wú)法正確解碼出圖像。綜上所述,目前的MPEG壓縮算法在低帶寬容易丟幀的情況下,存在無(wú)法正確解碼 的問(wèn)題。例如,對(duì)H. 264來(lái)說(shuō),由于自身碼流本身比較低,可能在低帶寬下1秒能夠傳送15、 16幀,但是,如果I幀在網(wǎng)絡(luò)上丟失了,即使連續(xù)收到15幀P幀也無(wú)法正常解碼出一幅圖 片,這時(shí)給用戶(hù)的直觀感覺(jué)是畫(huà)面長(zhǎng)時(shí)間停滯,低帶寬下H. 264居然比不上MJPEG。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種流媒體視頻編碼方法及裝置,以解決丟幀 導(dǎo)致無(wú)法正確解碼的問(wèn)題。為了解決上述問(wèn)題,本發(fā)明公開(kāi)了一種流媒體視頻編碼方法,包括實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)帶寬;根據(jù)網(wǎng)絡(luò)帶寬實(shí)時(shí)調(diào)整關(guān)鍵幀產(chǎn)生的間隔;利用關(guān)鍵幀進(jìn)行視頻編碼。優(yōu)選的,所述根據(jù)網(wǎng)絡(luò)帶寬實(shí)時(shí)調(diào)整關(guān)鍵幀產(chǎn)生的間隔,包括當(dāng)網(wǎng)絡(luò)帶寬符合表示低帶寬的預(yù)置條件時(shí),減小關(guān)鍵幀產(chǎn)生的間隔,從而增加關(guān) 鍵幀的數(shù)量。優(yōu)選的,所述利用關(guān)鍵幀進(jìn)行視頻編碼之前,還包括在關(guān)鍵幀中加入校驗(yàn)信息。優(yōu)選的,針對(duì)同一視頻,采用多種碼率進(jìn)行編碼。優(yōu)選的,對(duì)于每種碼率的編碼,當(dāng)網(wǎng)絡(luò)帶寬符合表示低帶寬的預(yù)置條件時(shí),減小關(guān) 鍵幀產(chǎn)生的間隔,從而增加關(guān)鍵幀的數(shù)量。本發(fā)明還提供了一種流媒體視頻編碼裝置,包括
帶寬檢測(cè)單元,用于實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)帶寬;關(guān)鍵幀調(diào)整單元,用于根據(jù)網(wǎng)絡(luò)帶寬實(shí)時(shí)調(diào)整關(guān)鍵幀產(chǎn)生的間隔;編碼單元,用于利用關(guān)鍵幀進(jìn)行視頻編碼。優(yōu)選的,所述關(guān)鍵幀調(diào)整單元包括關(guān)鍵幀增加子單元,用于當(dāng)網(wǎng)絡(luò)帶寬符合表示低帶寬的預(yù)置條件時(shí),減小關(guān)鍵幀 產(chǎn)生的間隔,從而增加關(guān)鍵幀的數(shù)量。優(yōu)選的,所述裝置還包括校驗(yàn)單元,用于在關(guān)鍵幀中加入校驗(yàn)信息。優(yōu)選的,所述編碼單元針對(duì)同一視頻,采用多種碼率進(jìn)行編碼。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)本發(fā)明針對(duì)MPEG壓縮算法,通過(guò)實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)帶寬,并根據(jù)網(wǎng)絡(luò)帶寬實(shí)時(shí)調(diào)整關(guān) 鍵幀產(chǎn)生的間隔來(lái)進(jìn)行編碼,通常在低帶寬下減小關(guān)鍵幀產(chǎn)生的間隔來(lái)增加關(guān)鍵幀。這樣, 即使出現(xiàn)丟掉關(guān)鍵幀的情況,由于下一個(gè)關(guān)鍵幀能很快彌補(bǔ)上,因此不會(huì)影響解碼,視頻播 放的畫(huà)面也不會(huì)長(zhǎng)時(shí)間的停滯,保證了用戶(hù)瀏覽的流暢度,提升了視頻圖像的質(zhì)量。
圖1是本發(fā)明實(shí)施例一所述一種流媒體視頻編碼方法的流程圖;圖2是本發(fā)明實(shí)施例二所述一種流媒體視頻編碼方法的流程圖;圖3是本發(fā)明實(shí)施例三所述一種流媒體視頻編碼裝置的結(jié)構(gòu)圖;圖4是本發(fā)明實(shí)施例中MPEG-2幀結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí) 施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說(shuō)明。實(shí)施例一參照?qǐng)D1,是本發(fā)明實(shí)施例一所述一種流媒體視頻編碼方法的流程圖。針對(duì)MPEG壓縮算法,如前所述,采用了 I幀、P幀和B幀的模式,其中I幀是關(guān)鍵 幀,P幀是前向預(yù)測(cè)幀,B幀是后向預(yù)測(cè)幀。解碼時(shí),解碼器可以立刻對(duì)I幀進(jìn)行解碼,但如 果沒(méi)有I幀,P幀和B幀就無(wú)法解碼。本實(shí)施例對(duì)現(xiàn)有的MPEG編碼進(jìn)行了編碼優(yōu)化,其編碼過(guò)程如下步驟101,實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)帶寬;在計(jì)算機(jī)網(wǎng)絡(luò)中,帶寬用來(lái)表示網(wǎng)絡(luò)的通信線路所能傳送數(shù)據(jù)的能力,因此網(wǎng)絡(luò) 帶寬表示在單位時(shí)間內(nèi)從網(wǎng)絡(luò)中的某一點(diǎn)到另一點(diǎn)所能通過(guò)的“最高數(shù)據(jù)率”。網(wǎng)絡(luò)的信道 帶寬與它的數(shù)據(jù)傳輸能力存在一個(gè)穩(wěn)定的基本關(guān)系帶寬越高,數(shù)據(jù)傳輸可利用的資源就 越多,因而能達(dá)到越高的速度?,F(xiàn)有技術(shù)中有多種可以檢測(cè)網(wǎng)絡(luò)帶寬的方法,如通過(guò)網(wǎng)絡(luò)流量的方式等。本實(shí)施 例可以選取一種比較簡(jiǎn)單的算法和較低的開(kāi)銷(xiāo),對(duì)帶寬進(jìn)行實(shí)時(shí)檢測(cè),實(shí)時(shí)掌握實(shí)際的網(wǎng) 絡(luò)帶寬,這樣就可以對(duì)編碼器的策略進(jìn)行實(shí)時(shí)調(diào)整,從而最大利用帶寬進(jìn)行流媒體視頻傳輸。
4
步驟102,根據(jù)網(wǎng)絡(luò)帶寬實(shí)時(shí)調(diào)整關(guān)鍵幀產(chǎn)生的間隔;在MPEG系列編碼算法中,通常用GOP (Group Of Picture)這一值來(lái)設(shè)置I幀產(chǎn)生 的間隔。經(jīng)過(guò)對(duì)比測(cè)試研究,在低帶寬的情況下,可以將GOP的值調(diào)整到一個(gè)較小的合適 值,這樣1秒鐘能夠產(chǎn)生多個(gè)I幀,即使偶爾丟掉了一個(gè)I幀,下一個(gè)I幀也能很快彌補(bǔ)上, 圖像不至于長(zhǎng)時(shí)間的停滯。所謂G0P,意思是畫(huà)面組,一個(gè)GOP就是一組連續(xù)的畫(huà)面。MPEG編碼將畫(huà)面(即 幀)分為I、P、B三種,I幀是一個(gè)完整的畫(huà)面,而P幀和B幀記錄的是相對(duì)于I幀的變化。 例如,參照?qǐng)D4所示,是MPEG-2的幀結(jié)構(gòu),一個(gè)GOP包括的幀序列是IBBPBBPBBPBB。正常情況下,如果網(wǎng)絡(luò)帶寬良好,則可以按照傳統(tǒng)的MPEG編碼設(shè)置正常情況下的 I幀產(chǎn)生間隔,即設(shè)置GOP值。但是,如果實(shí)際的網(wǎng)絡(luò)帶寬較低,即實(shí)時(shí)檢測(cè)結(jié)果符合表示低帶寬的條件,則本實(shí) 施例通過(guò)減小I幀產(chǎn)生的間隔,即減小GOP值,可以增加I幀的數(shù)量。甚至,在網(wǎng)絡(luò)帶寬非常良好的情況下,可以通過(guò)增大I幀產(chǎn)生的間隔,來(lái)減小I幀 的數(shù)量。步驟103,利用關(guān)鍵幀進(jìn)行視頻編碼。綜上所述,本實(shí)施例可以根據(jù)網(wǎng)絡(luò)帶寬的變化實(shí)時(shí)調(diào)整I幀數(shù)量,尤其是在低帶 寬情況下,通過(guò)增加I幀來(lái)進(jìn)行編碼,即使網(wǎng)絡(luò)出現(xiàn)丟掉I幀的情況,由于下一個(gè)I幀能很 快彌補(bǔ)上,因此不會(huì)影響解碼,視頻播放的畫(huà)面也不會(huì)長(zhǎng)時(shí)間的停滯,保證了用戶(hù)瀏覽的流 暢度,提升了視頻圖像的質(zhì)量。例如,對(duì)于H. 264來(lái)說(shuō),按照現(xiàn)有技術(shù)的編碼方法,可能在低帶寬下1秒能夠傳送 15,16幀,但是,按照本發(fā)明所述方法在編碼過(guò)程中增加I幀,在低帶寬下1秒能夠傳送的 幀數(shù)大于原來(lái)的16幀。如果I幀在網(wǎng)絡(luò)上丟失了,由于I幀的增加導(dǎo)致I幀之間的間隔變 小,解碼器可以在很短的時(shí)間收到下一個(gè)I幀,利用所述下一個(gè)I幀繼續(xù)進(jìn)行解碼。如果增 加的I幀足夠多,則解碼過(guò)程不會(huì)由于丟幀而產(chǎn)生影響,那么視頻播放的流暢度也不會(huì)受 到影響。實(shí)施例二 本實(shí)施例是對(duì)實(shí)施例一的進(jìn)一步優(yōu)化,具體如下。參照?qǐng)D2,是本發(fā)明實(shí)施例二所述一種流媒體視頻編碼方法的流程圖。步驟201,針對(duì)同一視頻,采用多種碼率進(jìn)行編碼;碼率就是數(shù)據(jù)傳輸時(shí)單位時(shí)間傳送的數(shù)據(jù)位數(shù),碼率也叫碼流(DataRate),一般 用的單位是kbps即千位每秒。通俗一點(diǎn)的理解就是取樣率,單位時(shí)間內(nèi)取樣率越大,精度 就越高,處理出來(lái)的文件就越接近原始文件,但是文件體積與取樣率是成正比的,所以幾乎 所有的編碼格式重視的都是如何用最低的碼率達(dá)到最少的失真。例如,對(duì)于同一音視頻節(jié)目源(實(shí)時(shí)直播節(jié)目源或點(diǎn)播節(jié)目源),可以設(shè)置 64K-128K、128K-256k、300K、500K、lM、2M等不同的碼流,以供用戶(hù)選擇。用戶(hù)在收看直播節(jié) 目或者點(diǎn)播視頻節(jié)目時(shí),如果當(dāng)前的網(wǎng)絡(luò)狀態(tài)較好,網(wǎng)速較快,則可以選擇300K或500K的 高碼流進(jìn)行高清播放;如果在后續(xù)播放過(guò)程中,由于連接的用戶(hù)數(shù)越來(lái)越多,網(wǎng)絡(luò)變慢,則 用戶(hù)可以選擇128K-256k的低碼流進(jìn)行切換,以適應(yīng)網(wǎng)絡(luò)狀態(tài)的變化,保證畫(huà)面播放的流 暢。
5
針對(duì)每一種碼率的編碼過(guò)程如下步驟202,實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)帶寬;步驟203,根據(jù)網(wǎng)絡(luò)帶寬實(shí)時(shí)調(diào)整關(guān)鍵幀產(chǎn)生的間隔;如果實(shí)際的網(wǎng)絡(luò)帶寬較低,則可以將GOP的值調(diào)整到一個(gè)較小的合適值,即減小I 幀產(chǎn)生的間隔,可以增加I幀的數(shù)量。步驟204,在關(guān)鍵幀中加入校驗(yàn)信息;所述校驗(yàn)信息用于保證服務(wù)器播放的內(nèi)容不會(huì)被隨意篡改。步驟205,利用關(guān)鍵幀進(jìn)行視頻編碼。上述流程中,每一種碼率的原始視頻流都會(huì)在低帶寬情況下通過(guò)增加關(guān)鍵幀的方 法,來(lái)避免解碼過(guò)程中由于丟幀(關(guān)鍵幀)導(dǎo)致的無(wú)法解碼。實(shí)施例三參照?qǐng)D3,是本發(fā)明實(shí)施例三所述一種流媒體視頻編碼裝置的結(jié)構(gòu)圖。所述編碼裝置主要包括帶寬檢測(cè)單元31,用于實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)帶寬;關(guān)鍵幀調(diào)整單元32,用于根據(jù)網(wǎng)絡(luò)帶寬實(shí)時(shí)調(diào)整關(guān)鍵幀產(chǎn)生的間隔;編碼單元33,用于利用關(guān)鍵幀進(jìn)行視頻編碼。在低帶寬情況下,所述關(guān)鍵幀調(diào)整單元32可以包括關(guān)鍵幀增加子單元,用于當(dāng)網(wǎng)絡(luò)帶寬符合表示低帶寬的預(yù)置條件時(shí),減小關(guān)鍵幀 產(chǎn)生的間隔,從而增加關(guān)鍵幀的數(shù)量。在MPEG系列編碼算法中,通常用GOP (Group Of Picture)這一值來(lái)設(shè)置I幀產(chǎn)生 的間隔。經(jīng)過(guò)對(duì)比測(cè)試研究,在低帶寬的情況下,可以將GOP的值調(diào)整到一個(gè)較小的合適 值,這樣1秒鐘能夠產(chǎn)生多個(gè)I幀,即使偶爾丟掉了一個(gè)I幀,下一個(gè)I幀也能很快彌補(bǔ)上, 圖像不至于長(zhǎng)時(shí)間的停滯。優(yōu)選的,所述編碼裝置還可以包括校驗(yàn)單元34,用于在關(guān)鍵幀中加入校驗(yàn)信息。所述校驗(yàn)信息用于保證服務(wù)器播放的內(nèi)容不會(huì)被隨意篡改。優(yōu)選的,所述編碼單元33針對(duì)同一視頻,采用多種碼率進(jìn)行編碼。用戶(hù)在收看直播節(jié)目或者點(diǎn)播視頻節(jié)目時(shí),如果當(dāng)前的網(wǎng)絡(luò)狀態(tài)較好,網(wǎng)速較快, 則可以選擇300K或500K的高碼流進(jìn)行高清播放;如果在后續(xù)播放過(guò)程中,由于連接的用戶(hù) 數(shù)越來(lái)越多,網(wǎng)絡(luò)變慢,則用戶(hù)可以選擇128K_256k的低碼流進(jìn)行切換,以適應(yīng)網(wǎng)絡(luò)狀態(tài)的 變化,保證畫(huà)面播放的流暢。綜上所述,所述編碼裝置對(duì)傳統(tǒng)的MPEG系列編碼算法進(jìn)行了優(yōu)化改進(jìn),可以根據(jù) 網(wǎng)絡(luò)帶寬的實(shí)時(shí)狀態(tài)調(diào)整關(guān)鍵幀的數(shù)量,在低帶寬情況下增加關(guān)鍵幀,這樣即使網(wǎng)絡(luò)傳輸 中丟掉了關(guān)鍵幀,由于關(guān)鍵幀的數(shù)量較多,下一個(gè)關(guān)鍵幀會(huì)馬上傳到,因此解碼可以正常進(jìn) 行。利用所述編碼裝置,可以提高視頻播放的流暢性,并提升視頻圖像的質(zhì)量。本說(shuō)明書(shū)中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與 其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見(jiàn)即可。對(duì)于裝置實(shí)施例 而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部 分說(shuō)明即可。
6
以上對(duì)本發(fā)明所提供的一種流媒體視頻編碼方法及裝置,進(jìn)行了詳細(xì)介紹,本文 中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫 助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思 想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì) 本發(fā)明的限制。
權(quán)利要求
一種流媒體視頻編碼方法,其特征在于,包括實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)帶寬;根據(jù)網(wǎng)絡(luò)帶寬實(shí)時(shí)調(diào)整關(guān)鍵幀產(chǎn)生的間隔;利用關(guān)鍵幀進(jìn)行視頻編碼。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)網(wǎng)絡(luò)帶寬實(shí)時(shí)調(diào)整關(guān)鍵幀產(chǎn)生 的間隔,包括當(dāng)網(wǎng)絡(luò)帶寬符合表示低帶寬的預(yù)置條件時(shí),減小關(guān)鍵幀產(chǎn)生的間隔,從而增加關(guān)鍵幀 的數(shù)量。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述利用關(guān)鍵幀進(jìn)行視頻編碼之前,還包 括在關(guān)鍵幀中加入校驗(yàn)信息。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于針對(duì)同一視頻,采用多種碼率進(jìn)行編碼。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于對(duì)于每種碼率的編碼,當(dāng)網(wǎng)絡(luò)帶寬符合表示低帶寬的預(yù)置條件時(shí),減小關(guān)鍵幀產(chǎn)生的 間隔,從而增加關(guān)鍵幀的數(shù)量。
6.一種流媒體視頻編碼裝置,其特征在于,包括帶寬檢測(cè)單元,用于實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)帶寬;關(guān)鍵幀調(diào)整單元,用于根據(jù)網(wǎng)絡(luò)帶寬實(shí)時(shí)調(diào)整關(guān)鍵幀產(chǎn)生的間隔;編碼單元,用于利用關(guān)鍵幀進(jìn)行視頻編碼。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述關(guān)鍵幀調(diào)整單元包括關(guān)鍵幀增加子單元,用于當(dāng)網(wǎng)絡(luò)帶寬符合表示低帶寬的預(yù)置條件時(shí),減小關(guān)鍵幀產(chǎn)生 的間隔,從而增加關(guān)鍵幀的數(shù)量。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,還包括校驗(yàn)單元,用于在關(guān)鍵幀中加入校驗(yàn)信息。
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于所述編碼單元針對(duì)同一視頻,采用多種碼 率進(jìn)行編碼。
全文摘要
本發(fā)明提供了一種流媒體視頻編碼方法及裝置,以解決丟幀導(dǎo)致無(wú)法正確解碼的問(wèn)題。本發(fā)明通過(guò)實(shí)時(shí)檢測(cè)網(wǎng)絡(luò)帶寬,并根據(jù)網(wǎng)絡(luò)帶寬實(shí)時(shí)調(diào)整關(guān)鍵幀產(chǎn)生的間隔來(lái)進(jìn)行編碼,通常在低帶寬下減小關(guān)鍵幀產(chǎn)生的間隔來(lái)增加關(guān)鍵幀。這樣,即使出現(xiàn)丟掉關(guān)鍵幀的情況,由于下一個(gè)關(guān)鍵幀能很快彌補(bǔ)上,因此不會(huì)影響解碼,視頻播放的畫(huà)面也不會(huì)長(zhǎng)時(shí)間的停滯,保證了用戶(hù)瀏覽的流暢度,提升了視頻圖像的質(zhì)量。
文檔編號(hào)H04N7/26GK101917612SQ20091024280
公開(kāi)日2010年12月15日 申請(qǐng)日期2009年12月17日 優(yōu)先權(quán)日2009年12月17日
發(fā)明者何宇飛, 夏永宏, 李軍, 溫曉瑤 申請(qǐng)人:新奧特(北京)視頻技術(shù)有限公司