本發(fā)明屬于網(wǎng)絡(luò)視頻傳輸技術(shù),特別是一種基于H.264視頻報文類型的不等差錯傳輸保護方法。
背景技術(shù):
:網(wǎng)絡(luò)視頻業(yè)務(wù)雖然得到了廣泛的應(yīng)用和巨大的發(fā)展,但是,由于視頻傳輸應(yīng)用的種種特殊性,此中仍然存在許多亟待解決和完善的問題?,F(xiàn)有視頻編碼方式為獲得高壓縮率,通常采用基于變換編碼和運動補償框架,利用運動估計以及運動補償來消除幀間的時間冗余,利用變換編碼和量化操作消除幀內(nèi)的空間冗余。以上方法的實現(xiàn)依賴于大量的幀間、幀內(nèi)預(yù)測編碼,伴隨而來的是數(shù)據(jù)之間的嚴(yán)重依賴性,這就使得網(wǎng)絡(luò)視頻流對分組丟失、時延、抖動等網(wǎng)絡(luò)特性非常敏感。因此,對網(wǎng)絡(luò)中的視頻數(shù)據(jù)進行前向糾錯,采用一定的方式進行差錯保護,產(chǎn)生一定量的冗余信息以抵抗網(wǎng)絡(luò)環(huán)境惡化造成的視頻質(zhì)量損傷,是非常有必要的。網(wǎng)絡(luò)中的視頻數(shù)據(jù)包攜帶不同的視頻數(shù)據(jù),而這些視頻數(shù)據(jù)因視頻內(nèi)容、編碼方式等特性,又具有不同的重要性,因而其受到網(wǎng)絡(luò)狀況影響而造成的質(zhì)量損傷又有著明顯的差別。視頻的關(guān)鍵部分即使丟失非常少量的數(shù)據(jù),也可能造成視頻質(zhì)量的明顯下降;而不重要的部分即使丟失較多數(shù)據(jù),也不會造成嚴(yán)重的視頻質(zhì)量下降。因此,在進行差錯保護時,針對網(wǎng)絡(luò)視頻數(shù)據(jù)報文進行重要性分級,并根據(jù)不同等級的重要性進行不等差錯保護,是一種解決問題的有效途徑。在這種應(yīng)用需求下,針對網(wǎng)絡(luò)的丟包特性提出一種視頻數(shù)據(jù)包重要性衡量標(biāo)準(zhǔn),成為首要且必要的問題。邢成文等人的國家發(fā)明專利[文獻1:一種基于無速率調(diào)制的立體視頻傳輸方法,CN104394401A]針對H.264/MVC格式視頻進行研究,僅就視頻編碼的基本層和增強層區(qū)分視頻報文的重要性,對報文內(nèi)容的重要性劃分不夠精細(xì)。因此,亟需一種分級方式對視頻報文的重要性進行有效的劃分。視頻在壓縮編碼時會造成視頻質(zhì)量的損傷,被稱為編碼損傷。由于視頻編碼的方式有很多,可調(diào)控的參數(shù)也很多,通過這些不同的方式及參數(shù)編碼得到的視頻流損傷程度不同,其碼率也不同。輸出碼率越高,視頻損傷越小,傳輸開銷則越大;反之,輸出碼率越低,視頻損傷越大,傳輸開銷則越小。無線網(wǎng)絡(luò)的帶寬 資源非常有限,且有可能出現(xiàn)較大波動。石東新等人的國家發(fā)明專利[文獻2:一種系統(tǒng)不等差錯保護的Raptor碼方法,CN104320147A]采用噴泉碼中的Raptor碼對網(wǎng)絡(luò)數(shù)據(jù)進行不等差錯保護,但是由于噴泉碼本身復(fù)雜度較高,造成的時延比較大,不適用于實時視頻傳輸系統(tǒng),且在某段數(shù)據(jù)進行Raptor碼編碼后,若解碼失敗,受到保護的源數(shù)據(jù)全部無效,應(yīng)對比較高的丟包率時性能會大幅衰減。董育寧等人的國家發(fā)明專利[文獻3:基于不等差錯保護的實時視頻通信方法,CN103067719A]針對H.264/AVC視頻序列的圖像組(GroupofPictures,GOP)結(jié)構(gòu)進行了重要性分級,采用前向糾錯技術(shù)對各個視頻碼流構(gòu)成的分組進行保護,對于傳輸中的失真,采用錯誤隱藏方式在解碼端進行恢復(fù),不改變視頻編碼的速率,因此在信道帶寬變化時,可能因帶寬過大造成帶寬資源的浪費,或由于帶寬不足而造成嚴(yán)重的擁塞丟包,并且,這種方法需要前向糾錯和錯誤隱藏共同作用,即對視頻應(yīng)用系統(tǒng)的發(fā)送端和接收端都進行改動,錯誤隱藏也會造成一定時延。因此,如何分配有限的帶寬資源用于傳輸視頻碼流和冗余信息,以最大程度地復(fù)原視頻信息,降低編碼、傳輸帶來的視頻質(zhì)量損傷,是一個非常重要的問題。技術(shù)實現(xiàn)要素:本發(fā)明的目的在于提供一種基于H.264視頻報文類型的不等差錯傳輸保護方法,能夠?qū)崿F(xiàn)視頻流的不等差錯保護,得到最佳的視頻傳輸質(zhì)量。實現(xiàn)本發(fā)明目的的技術(shù)解決方案為:一種基于H.264視頻報文類型的不等差錯傳輸保護方法,首先按照實際網(wǎng)絡(luò)丟包環(huán)境度量H.264視頻報文不同類型的重要性并依此對視頻流內(nèi)容進行分級,即通過解析視頻流,按照視頻分組的幀類型和圖像組GOP位置進行分級;然后建立線性編碼的冗余帶寬優(yōu)化分配模型;在此基礎(chǔ)上調(diào)整信源編碼和信道編碼的碼率,信道編碼采用線性編碼對視頻流進行不等差錯保護,尋找視頻質(zhì)量衰減的最低值對應(yīng)的信道帶寬分配比例,得到網(wǎng)絡(luò)隨機丟包率為1%至10%之間的接收端接收到的最佳視頻質(zhì)量。本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點為:(1)采用基于幀類型和GOP位置的視頻報文重要性分級方式,得到視頻報文的重要性比例,并針對網(wǎng)絡(luò)丟包率研究其重要性,分級方法更加合理,更加符合實際網(wǎng)絡(luò)環(huán)境。(2)采用線性編碼對 碼流進行保護,建立基于線性編碼的冗余帶寬優(yōu)化分配模型,得到不同丟包率下不同重要性分級的冗余帶寬分配比例,接收端恢復(fù)視頻質(zhì)量有明顯提高,使得無線網(wǎng)絡(luò)視頻流在隨機丟包環(huán)境下得到更好的保護。(3)在確定不等差錯保護方法的基礎(chǔ)上,解決網(wǎng)絡(luò)帶寬在信源編碼與線性編碼之間的碼率分配問題,得到最優(yōu)的分配比例,能夠使用較少的帶寬完成視頻流的較好保護,是一種效率高、實時性好、適用范圍廣的保護方法。下面結(jié)合附圖對本發(fā)明作進一步詳細(xì)描述。附圖說明圖1是模擬控制丟包率的流程圖。圖2是本發(fā)明基于幀類型和GOP位置的不等差錯保護的流程圖。具體實施方式本發(fā)明基于H.264視頻報文類型的不等差錯傳輸保護方法,包括三個部分:基于幀類型和GOP位置的H.264視頻流重要性分級、基于線性編碼的冗余帶寬優(yōu)化分配模型建立和信源信道編碼帶寬的分配,具體實施過程為:1、對H.264視頻流進行基于幀類型和GOP位置的重要性分級首先,通過解析碼流區(qū)分不同數(shù)據(jù)包所攜帶報文的不同類型:在壓縮的H.264視頻流中,視頻幀按照生成方式和參考性分為I幀、P幀、B幀三種基本類型,并以GOP為獨立編碼單位。I幀采用幀內(nèi)編碼方式,即不參考其他幀進行編碼;P幀為前向預(yù)測編碼,參考幀可以是I幀、P幀,并按照編碼順序進行播放;B幀采用雙向預(yù)測編碼,可參考播放順序在其之前、之后的I幀、P幀(B幀本身一般不具有參考性)。所以,在H.264視頻流中,I幀的錯誤會造成參考它生成的P、B幀的錯誤,而P幀的錯誤會造成參考它生成的B幀的錯誤,B幀的錯誤則不會影響其他幀(因其不具有參考性)。從參考性的角度可以看出,I幀的重要性高于P幀,而P幀的重要性高于B幀。而在每個GOP中,第一幀為I幀;P幀參考I幀以及GOP位置在其之前的P幀生成,位置較前的P幀具有更高的參考性,因此P幀按其GOP位置由前至后重要性依次降低;而B幀則參考I幀和P幀生成,由于B幀本身不具有參考性,因此其位置與其重要性無關(guān)。其次,將H.264視頻流按照幀類型和GOP位置分為不同的重要性等級,I 幀數(shù)據(jù)為一級,B幀數(shù)據(jù)為一級,P幀數(shù)據(jù)按照其GOP位置由前向后重要性依次降低,分為不同的重要性等級。解析視頻流,按照上述分級方法分級,根據(jù)各重要性等級視頻分組丟失對視頻質(zhì)量的影響,得到其丟失率與視頻質(zhì)量衰減之間為線性關(guān)系,I幀分組重要性高,B幀分組重要性低,P幀分組按其GOP位置由前向后重要性遞減。再次,對不同的報文類型獨立控制丟包,得到丟包率與視頻質(zhì)量衰減之間的關(guān)系。在對H.264視頻流進行基于幀類型和GOP位置的重要性分級時,首先要通過解析碼流區(qū)分不同數(shù)據(jù)包所攜帶報文的不同類型,然后對不同的類型獨立控制丟包,確定其丟包率與視頻質(zhì)量衰減之間的關(guān)系。H.264視頻由網(wǎng)絡(luò)抽取層NAL(NetworkAbstractLayer,NAL)單元組成,NAL單元分為NAL頭和原始字節(jié)序載荷(RawByteSequencePayload,RBSP),類型為視頻數(shù)據(jù)條帶的RBSP又分為條帶頭(SliceHeader)和條帶數(shù)據(jù)(SliceData),視頻報文的幀類型(I、P、B幀)存儲在NAL頭中,而其GOP位置號可由SliceHeader和序列參數(shù)集(SequenceParameterSet,SPS)、圖像參數(shù)集(PictureParameterSet,PPS)共同解析得知。H.264視頻流在進行網(wǎng)絡(luò)傳輸時,封裝為UDP包,在傳輸層進行分片傳輸,傳輸層進行分片的最大長度為MTU,MTU是指最大傳輸單元(MaximumTransmissionUnit,MTU),網(wǎng)絡(luò)丟包也是以此為單位進行的。因此,為模擬真實的網(wǎng)絡(luò)丟包現(xiàn)象,在采用X264編碼器進行視頻編碼時,即按照MTU大小限制進行分片編碼,亦即每個NAL單元大小不超過MTU,實現(xiàn)應(yīng)用層視頻分組到網(wǎng)絡(luò)數(shù)據(jù)包的一對一映射。由此,由此控制丟棄視頻分組即可模擬控制丟包率。在此基礎(chǔ)上,對不同重要性等級的視頻分組數(shù)目進行統(tǒng)計,按照丟包率設(shè)置產(chǎn)生隨機數(shù)列,選擇丟棄數(shù)目為當(dāng)前等級視頻分組數(shù)目與丟包率的乘積的視頻分組,即可得到不同丟包率下不同重要性等級的視頻分組獨立丟包帶來的視頻質(zhì)量衰減;控制丟包時,首先解析H.264視頻流得到視頻分組的幀類型和GOP位置,對視頻分組按照內(nèi)容為I幀數(shù)據(jù)、B幀數(shù)據(jù)和不同GOP位置的P幀數(shù)據(jù)進行分級;統(tǒng)計視頻序列中各分級視頻分組的數(shù)目并對其進行標(biāo)號,按照丟包率得到應(yīng)丟失的分組數(shù)目并在當(dāng)前分級的總分組數(shù)中產(chǎn)生標(biāo)號的隨機數(shù)列,將隨機數(shù)列中標(biāo)號的分組丟棄,重復(fù)多次并將均值作為結(jié)果。丟包率設(shè)定為1%到10%,每1% 步進。最后,采用FFmpeg進行解碼后得到恢復(fù)視頻,將恢復(fù)視頻的質(zhì)量與原始視頻質(zhì)量對比,采用峰值信噪比(PeakSignalNoiseRatio,PSNR)評價方法評估視頻質(zhì)量;再將視頻直接進行編碼和解碼,并與原始視頻對比,得到解碼視頻的質(zhì)量。對解碼視頻和恢復(fù)視頻質(zhì)量求差,抵消視頻的壓縮失真,得到隨機丟包造成的傳輸失真。由此,可得到不同等級視頻分組丟包率與視頻質(zhì)量衰減之間的關(guān)系曲線,并將不同等級丟包造成的視頻質(zhì)量衰減差別作為其所需冗余碼率占總?cè)哂鄮挶壤膮⒄?。由此可得各等級視頻分組丟失率與視頻質(zhì)量衰減之間呈線性關(guān)系,各等級因其重要性不同具有明顯不同的斜率。上述過程的具體流程參見圖1。信源編碼采用X264編碼器,對碼流使用FFmpeg解碼器進行一次本地解碼,得到本地受損視頻。再將H.264碼流進行解析,識別NAL單元報文內(nèi)容的感知重要性等級,統(tǒng)計不同類型(幀類型、GOP位置)NAL單元(即視頻分組)的數(shù)目;按照所設(shè)定的丟包率產(chǎn)生隨機序列,獨立地隨機丟棄每個類型的NAL單元;對受損的264視頻流采用FFmpeg進行視頻解碼后,根據(jù)各NAL單元在264視頻流中的序列順序,采用復(fù)制前一幀的方法補償丟失的幀,得到配準(zhǔn)后的受損YUV視頻;將本地YUV受損視頻和受損YUV視頻分別以源視頻為參考視頻進行PSNR評價,得到本地評價結(jié)果和丟包評價結(jié)果,求差值得到其PSNR衰減,得到網(wǎng)絡(luò)丟包造成的視頻質(zhì)量損傷。2、建立基于線性編碼的冗余帶寬優(yōu)化分配模型線性編碼的原理是將m個源數(shù)據(jù)塊經(jīng)過一定的線性組合生成n個冗余數(shù)據(jù)塊,將m+n個數(shù)據(jù)塊共同發(fā)送至接收端,接收端只要接收到其中的任意m個數(shù)據(jù)塊,即可通過其線性關(guān)系將m個源數(shù)據(jù)塊正確恢復(fù)?;谝曨l分組的線性編碼的原理是將m個源分組經(jīng)過線性組合生成n個冗余分組,將由源分組和冗余分組組成的m+n個分組共同發(fā)送至接收端,當(dāng)解碼器能正確接收到中的任意m個以上分組,即丟失分組數(shù)不大于n時,m個源視頻分組可以完全恢復(fù);當(dāng)解碼器正確接收到的分組數(shù)小于m,則將其中的冗余分組全部丟棄,僅將源分組進行解碼。根據(jù)上述基于分組的線性編碼的原理,以不同重要性分級視頻分組丟包率與接收端視頻質(zhì)量衰減的線性關(guān)系為參照,可以建立冗余帶寬優(yōu)化分配模型。設(shè)視頻流按照報文重要性被分級為t個等級,第j級源分組數(shù)目為mj,冗余 分組數(shù)為nj,分組的丟包-視頻質(zhì)量衰減曲線斜率為kj,則設(shè)在網(wǎng)絡(luò)丟包率為p的條件下,第j級單個源分組丟失的概率為其自身丟失,并且本等級內(nèi)其余mj+nj-1個分組中丟失數(shù)目(丟失數(shù)目為i)大于nj-1的總概率為pr,j,可表示為pr,j=p·Σi=njmj+nj-1Cmj+nj-1ipi(1-p)mj+nj-1-i]]>其中是指概率。則當(dāng)前條件下的總視頻失真為ΔPSNR=Σj=0t-1kjpr,j=Σj=0t-1kjp·Σi=njmj+nj-1Cmj+nj-1ipi(1-p)mj+nj-1-i]]>因此,冗余碼率分配問題可以表示為如下優(yōu)化問題minΣj=0t-1[kjpΣi=njmj+nj-1Cmj+nj-1ipi(1-p)mj+nj-1-i]Σj=0t-1nj=nnj≥0]]>其中n為冗余分組數(shù)目,為信道總?cè)哂鄮捙c源視頻分組最大長度(近似為MTU)的比值。優(yōu)化問題的解通過搜索求得,可得到不同丟包率條件下,信道帶寬不同冗余比例時各重要性等級所需的最優(yōu)化冗余添加比例。例如,將LiveVideoDatabase標(biāo)準(zhǔn)視頻庫中的tr.yuv視頻按照“IBBBBBPBBBBBPBBBBBPBBBBBPBBBBBP”的GOP結(jié)構(gòu)采用X264分片編碼為源視頻流用于測試,則其按照重要性分級方法可分為I、B、P1、P2、P3、P4;當(dāng)信道帶寬為1000kbps時,設(shè)定冗余帶寬為信道帶寬的10%,對上述優(yōu)化模型求解可得不同丟包率下各重要性分級的冗余添加碼率與總?cè)哂啻a率的比例如表1所示,采取線性編碼對視頻分組進行保護時即以表中比例為參照。表110%冗余時測試視頻不同等級視頻序列冗余量占信道總?cè)哂嗔勘壤?、信源信道編碼帶寬的分配信源編碼與信道編碼(本發(fā)明中為線性編碼)均需消耗一定的帶寬,信源編碼碼率越高,則送至網(wǎng)絡(luò)的源視頻質(zhì)量越高;信道編碼碼率越高,則可為網(wǎng)絡(luò)中的視頻提供越好的保護。在帶寬有限的條件下,而過高的信源編碼碼率會導(dǎo)致信道編碼碼率過低,無法抵抗丟包對視頻質(zhì)量帶來的嚴(yán)重影響;過高的信道編碼碼率會導(dǎo)致信源編碼碼率過低,源視頻質(zhì)量過低。因此,在信道總帶寬一定的條件下,調(diào)整信源編碼和信道編碼的碼率,尋找最優(yōu)的分配比例,最優(yōu)的分配比例是指視頻質(zhì)量衰減的最低值對應(yīng)的分配比例。具體實現(xiàn)方法為首先確定不等差錯的保護方法,然后在信道總帶寬一定的條件下,在1%至10%(每1%步進)網(wǎng)絡(luò)丟包率下改變信源編碼和信道編碼的碼率,信源編碼碼率從網(wǎng)絡(luò)總帶寬的80%變化至100%(每2%步進);通過如圖2的測試得到在1%至10%丟包率條件下的最佳信源信道碼率分配比例。對tr.yuv視頻進行測試,最佳信源信道碼率分配比例分布如表2所示。其中Rtotal為信道總帶寬,Rs為信源編碼碼率,Rr為信道編碼碼率。表2不同丟包率下最佳信源信道編碼碼率分配分布經(jīng)過上述測試驗證,本發(fā)明中的不等差錯保護方法在10%以內(nèi)的丟包率條件下,消耗10%以內(nèi)的網(wǎng)絡(luò)帶寬有效降低接收端恢復(fù)視頻的失真,提供較好的視頻傳輸質(zhì)量保證。而且,本發(fā)明具有很好的實時性和可移植性,適用于不同的網(wǎng)絡(luò),可有效用于實際應(yīng)用。對于任何視頻,均可以在一定時間內(nèi)通過分析得到其壓縮特性并據(jù)此提供良好的保護,有效提高恢復(fù)視頻質(zhì)量。其中,不等差錯保護的具體流程參見圖2。其中,視頻編碼采用X264編碼器,視頻解碼采用FFmpeg解碼器。除視頻條帶之外的其他類型分組包含重要信息,不進行丟包,直接經(jīng)過單獨的通道使用socket進行UDP打包送至接收端,此通道命名為ELSE通道;各重要性等級的視頻分組則按照冗余帶寬優(yōu)化分配模型所分配得到的冗余分組添加比例進行線性編碼,并使用socket進行UDP打包發(fā)送,各通道按照所傳輸?shù)囊曨l分組類型命名為I通道(用于傳輸I分組),P1,P2,……,Pn(用于傳輸各GOP位置的P分組)。對除ELSE通道之外的其他通道數(shù)據(jù)包進行隨機丟包;經(jīng)過丟包后的視頻分組送至接收端后進行線性解碼,并按照其視頻序列順序進行排序,采用FFmpeg進行解碼得到恢復(fù)YUV視頻。YUV視頻經(jīng)過編碼生成H.264視頻流,后者經(jīng)過解碼生成YUV視頻。評價時,仍然以原始YUV視頻為參考計算恢復(fù)YUV視頻的PSNR值,得到視頻壓縮與丟包造成的總失真。經(jīng)測試可知,在基于幀類型和GOP位置的視頻報文重要性分級研究基礎(chǔ)上的線性編碼不等差錯保護策略較之均等保護、基于幀類型的保護方法性能有明顯的提高。當(dāng)前第1頁1 2 3