本發(fā)明屬于通訊技術(shù)領(lǐng)域,尤其涉及多媒體數(shù)據(jù)傳輸過(guò)程中音視頻數(shù)據(jù)包編碼處理的方法。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)日新月異的發(fā)展,流媒體技術(shù)成為當(dāng)下最為熱門的互聯(lián)網(wǎng)技術(shù)之一,是保證我們可以快速高保真的分享圖像、音頻、視頻等多媒體文件的基礎(chǔ)。在流媒體技術(shù)中,視頻圖像由于數(shù)據(jù)量大以及網(wǎng)絡(luò)帶寬的限制,數(shù)據(jù)包丟失或出錯(cuò)現(xiàn)象不可避免。如果視頻文件的丟包(本發(fā)明實(shí)例中對(duì)數(shù)據(jù)包出錯(cuò)或丟失簡(jiǎn)稱為“丟包現(xiàn)象”)達(dá)到一定程度,則嚴(yán)重影響接收端的視頻視覺(jué)效果,出現(xiàn)塊效應(yīng),視頻模糊,嚴(yán)重時(shí)甚至無(wú)法觀看。
為了保證發(fā)送視頻在接收端能夠正常播放,則需要對(duì)丟包進(jìn)行恢復(fù),這一般都是通過(guò)在傳輸?shù)囊曨l媒體包中增加冗余包來(lái)實(shí)現(xiàn)的。視頻糾錯(cuò)編碼是一種能夠恢復(fù)一定數(shù)量范圍內(nèi)丟包的編碼方法。在糾錯(cuò)編碼中,冗余包數(shù)量越多,則能夠恢復(fù)的丟失或出錯(cuò)包數(shù)量越多。然而,冗余包的數(shù)量增多同樣會(huì)導(dǎo)致占用網(wǎng)絡(luò)帶寬過(guò)大。在傳輸?shù)臄?shù)據(jù)包總數(shù)量一定的情況下,用盡量少的冗余包來(lái)達(dá)到最大可能恢復(fù)發(fā)送視頻包,則糾錯(cuò)編碼效率越高。fec編碼是目前較常采用的一種數(shù)據(jù)恢復(fù)編碼,其有較為高效的丟包恢復(fù)能力,fec又分為多種編碼實(shí)現(xiàn)方式,rs編碼是其中最為高效的一種編碼方式。然而,目前的fec編碼設(shè)計(jì),存在對(duì)丟包恢復(fù)效果與編碼效率之間難以達(dá)到平衡的難題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種數(shù)據(jù)傳輸?shù)木幋a方法、裝置及系統(tǒng),可以根據(jù)預(yù)測(cè)的丟包率,計(jì)算信息包數(shù)量與冗余包數(shù)量的不同組合,即不同的rs編碼模式下的視頻完全恢復(fù)概率,并以此為依據(jù)來(lái)選擇最佳的rs編碼模式,從而找出最高效的fecrs編碼設(shè)計(jì)。
本發(fā)明的一種數(shù)據(jù)傳輸?shù)木幋a方法,包括以下步驟:步驟a:設(shè)置預(yù)測(cè)丟包率的初始值
優(yōu)選的,上述步驟c中,具體包括:步驟c-1:把所述信息包劃分子信息組包再分別進(jìn)行rs編碼,根據(jù)所述子信息包組中信息包的數(shù)量及冗余度r劃分出出
步驟c-3:根據(jù)步驟c-1中選擇出所有滿足條件
優(yōu)選的,上述步驟e進(jìn)一步包括以下步驟:步驟e-1:求出伽羅華域
優(yōu)選的,在上述步驟e中還包括:信道接收端對(duì)接收到的信息包構(gòu)造伴隨矩陣,并計(jì)算校驗(yàn)包進(jìn)行丟包校驗(yàn),進(jìn)一步判斷是否發(fā)生丟包現(xiàn)象。
優(yōu)選的,在所述步驟e中,如果發(fā)生丟包現(xiàn)象,則根據(jù)校驗(yàn)包計(jì)算丟包發(fā)生位置,并對(duì)丟包恢復(fù)能力范圍內(nèi)的丟包進(jìn)行丟包恢復(fù),同時(shí)根據(jù)丟包情況對(duì)上述預(yù)測(cè)丟包率進(jìn)行更新。
此外,本發(fā)明還公開了一種數(shù)據(jù)傳輸?shù)木幋a發(fā)送裝置,該裝置主要包括:音視頻編碼器、計(jì)算單元、糾錯(cuò)編碼單元、傳輸發(fā)送單元,其中,所述音視頻編碼器用于對(duì)信道當(dāng)前發(fā)送音視頻信號(hào)進(jìn)行編碼,生成若干信息包;上述計(jì)算單元用于根據(jù)預(yù)測(cè)丟包率計(jì)算丟包恢復(fù)概率,從而確定選擇最優(yōu)rs編碼模式rs
優(yōu)選的,計(jì)算單元確定最優(yōu)rs編碼模式rs
步驟(3):根據(jù)所述步驟(1)中選擇出所有滿足條件的rs編碼模式,其中閾值
優(yōu)選的,上述糾錯(cuò)編碼單元通過(guò)以下操作得到
此外,本發(fā)明還公開一種數(shù)據(jù)傳輸系統(tǒng),主要包括編碼發(fā)送裝置和解碼接收裝置,所述編碼發(fā)送裝置包括:音視頻編碼器、計(jì)算單元、糾錯(cuò)編碼單元、傳輸發(fā)送單元,其中,音視頻編碼器用于對(duì)信道當(dāng)前發(fā)送音視頻信號(hào)進(jìn)行編碼,生成若干信息包;計(jì)算單元用于根據(jù)預(yù)測(cè)丟包率計(jì)算丟包恢復(fù)概率,從而確定選擇最優(yōu)rs編碼模式rs
優(yōu)選的,丟包恢復(fù)單元的丟包恢復(fù)是指根據(jù)校驗(yàn)包計(jì)算丟包發(fā)生位置,并對(duì)丟包恢復(fù)能力范圍內(nèi)的丟包進(jìn)行丟包恢復(fù)。
優(yōu)選的,當(dāng)發(fā)生丟包現(xiàn)象時(shí),則根據(jù)校驗(yàn)包計(jì)算丟包發(fā)生位置,對(duì)丟包恢復(fù)能力范圍內(nèi)的丟包進(jìn)行丟包恢復(fù),由音視頻解碼器用于對(duì)恢復(fù)后的信息包進(jìn)行解碼,同時(shí)根據(jù)丟包情況對(duì)預(yù)測(cè)丟包率進(jìn)行更新;當(dāng)沒(méi)有發(fā)生丟包現(xiàn)象時(shí),音視頻解碼器對(duì)接收到的信息包進(jìn)行解碼。
優(yōu)選的,計(jì)算單元確定最優(yōu)rs編碼模式rs
步驟(3):根據(jù)所述步驟(1)中選擇出所有滿足條件
優(yōu)選的,糾錯(cuò)編碼單元通過(guò)以下操作得到
采用本發(fā)明的數(shù)據(jù)傳輸編碼方法,通過(guò)設(shè)計(jì)高效的視頻fec編碼算法,在fec冗余度確定時(shí),根據(jù)統(tǒng)計(jì)預(yù)測(cè)的丟包率選擇發(fā)送包數(shù)量與冗余包數(shù)量的組合以實(shí)現(xiàn)最佳的丟包恢復(fù)效果。同時(shí),對(duì)發(fā)送端視頻進(jìn)行rs編碼時(shí),在保證丟包恢復(fù)概率的前提下,選擇信息包數(shù)量最小的rs編碼模式,提高了編碼的實(shí)時(shí)性。
本發(fā)明提供的方案通過(guò)在信道發(fā)送端發(fā)送信息包的同時(shí)發(fā)送高效編碼的fec冗余包,保證了信道接收端能夠?qū)σ曨l傳輸過(guò)程中的丟包進(jìn)行恢復(fù),從而保證了接收端的視頻質(zhì)量。
此外,本發(fā)明實(shí)例fecrs編碼的計(jì)算過(guò)程中,對(duì)部分運(yùn)算事先制作成為運(yùn)算表,使得在編解碼的過(guò)程中部分運(yùn)算轉(zhuǎn)換為查表的方式,提高了運(yùn)算效率。
附圖說(shuō)明
圖1為本發(fā)明具體實(shí)施例中數(shù)據(jù)傳輸?shù)木幗獯a方法流程圖;
圖2為本發(fā)明具體實(shí)施例中編碼發(fā)送裝置和解碼接收裝置的功能模塊圖。
具體實(shí)施方式
本發(fā)明提供的方案在發(fā)送冗余包與信息包數(shù)量比例一定的情況下,根據(jù)統(tǒng)計(jì)的丟包率選擇最佳的rs編碼模式,即確定rs編碼最佳的信息包數(shù)量與冗余包數(shù)量,來(lái)進(jìn)行fec編碼,能夠使丟包恢復(fù)率得到保證,從而保證信道接收端視頻有較好的質(zhì)量。
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明實(shí)施例的發(fā)明原理:依據(jù)在fec冗余度一定的情況下,丟包恢復(fù)率隨丟包率、發(fā)送包數(shù)量與冗余包數(shù)量組合變化的原理,以統(tǒng)計(jì)預(yù)測(cè)的丟包率作為發(fā)送包數(shù)量與冗余包數(shù)量組合調(diào)整的依據(jù),從而實(shí)現(xiàn)對(duì)發(fā)送視頻數(shù)據(jù)包進(jìn)行最大概率的恢復(fù),提高了接收端視頻的質(zhì)量。
圖1為本發(fā)明具體實(shí)施例中數(shù)據(jù)傳輸?shù)木幗獯a方法流程圖。如圖1所示,本發(fā)明的主要流程步驟包括:
步驟110:設(shè)置預(yù)測(cè)丟包率初始值,fec冗余度。
步驟120:對(duì)信道發(fā)送端的視頻進(jìn)行編碼得到信息包
步驟130:根據(jù)預(yù)測(cè)丟包率計(jì)算丟包恢復(fù)概率,選擇最優(yōu)rs編碼模式。
步驟140:根據(jù)步驟120中的視頻信息包及步驟130中選擇的rs編碼模式進(jìn)行rs糾錯(cuò)編碼,得到冗余包。
其中,步驟110至步驟140為本發(fā)明的編碼部分,步驟160至步驟180為本發(fā)明的解碼部分,步驟110的初始化只需對(duì)開始的發(fā)送視頻組進(jìn)行設(shè)置,步驟120至步驟130則是所有視頻編碼幀進(jìn)行fec,rs編碼不可少的部分。
步驟150:將編碼完成的冗余包與信息包組合封裝,一起發(fā)送至信道。
步驟160:在信道接收端對(duì)接收到的信息包進(jìn)行校驗(yàn),如果沒(méi)有發(fā)生丟包則轉(zhuǎn)至步驟180,否則轉(zhuǎn)至步驟170。
步驟170:根據(jù)冗余包對(duì)接收到的信息包進(jìn)行rs丟包恢復(fù)。
步驟180:對(duì)校驗(yàn)恢復(fù)后的視頻數(shù)據(jù)包進(jìn)行解碼,對(duì)預(yù)測(cè)丟包率進(jìn)行更新。
進(jìn)一步的,在本發(fā)明具體實(shí)施例中,數(shù)據(jù)傳輸?shù)木幗獯a方法具體操作如下所述:
步驟210:根據(jù)經(jīng)驗(yàn)值對(duì)預(yù)測(cè)丟包率
步驟220:對(duì)信道當(dāng)前發(fā)送視頻組的視頻信號(hào)用主流視頻編碼器進(jìn)行編碼,得到當(dāng)前視頻組待發(fā)送的
本發(fā)明實(shí)例中,為了保證發(fā)送端視頻在接收端能夠抵抗信道中的丟包而正常播放,需要對(duì)其添加用于校驗(yàn)的冗余包。記發(fā)送端第
步驟230:根據(jù)預(yù)測(cè)丟包率
步驟230-a:在本發(fā)明具體實(shí)施例中,采用高效的rs糾錯(cuò)編碼,對(duì)發(fā)送視頻組中的k個(gè)信息包添加n-k個(gè)冗余包。為了保證視頻編碼傳輸?shù)膶?shí)時(shí)性,在進(jìn)行rs編碼時(shí),需對(duì)信息包劃分為子信息包組再分別進(jìn)行rs編碼,即選擇發(fā)送視頻組rs編碼模式。由于設(shè)定的fec冗余度為r,即子信息包組的信息包數(shù)量與冗余包數(shù)量比例k/n為r。根據(jù)子信息包組信息包的數(shù)量可劃分出種rs編碼模式,分別記為模式1:rs
步驟230-b:根據(jù)預(yù)測(cè)丟包率
步驟230-c:根據(jù)步驟230-b中計(jì)算的各rs編碼模式的丟包完全恢復(fù)概率,從步驟230-a中選擇出所有滿足條件:
步驟230-d:根據(jù)上述步驟230-c得到的所有rs編碼模式中,選擇其中子信息包數(shù)量最小的rs編碼模式:rs
步驟240:根據(jù)步驟230選擇的最優(yōu)rs編碼模式rs
步驟240-a:建立
步驟240-b:由rs編碼模式rs
步驟240-c:根據(jù)生成矩陣構(gòu)造校驗(yàn)矩陣。
步驟240-d:根據(jù)校驗(yàn)矩陣和
步驟250:將信息包和經(jīng)過(guò)rs糾錯(cuò)編碼得到的校驗(yàn)冗余包添加相關(guān)信息,一起發(fā)送至傳輸信道。在傳輸過(guò)程中,某些發(fā)送包可能會(huì)發(fā)生丟失或出錯(cuò)的情況。
步驟210至步驟240為本發(fā)明具體實(shí)施例的編碼部分,在信道的發(fā)送端執(zhí)行,用于對(duì)發(fā)送視頻組添加校驗(yàn)冗余包,其中,步驟210的初始化只需對(duì)第1個(gè)發(fā)送視頻組執(zhí)行,步驟220至步驟230則是對(duì)所有發(fā)送視頻組都需要執(zhí)行的。
步驟260:在信道接收端對(duì)接收到的信息包構(gòu)造伴隨矩陣,并計(jì)算校驗(yàn)冗余包進(jìn)行丟包校驗(yàn),如果所有用于校驗(yàn)包均指示沒(méi)有發(fā)生丟包,則轉(zhuǎn)至步驟280,否則轉(zhuǎn)至步驟270。
步驟270:根據(jù)校驗(yàn)包計(jì)算丟包發(fā)生位置,并對(duì)丟包恢復(fù)能力范圍內(nèi)丟失的包進(jìn)行丟包恢復(fù)。
步驟280:對(duì)校驗(yàn)恢復(fù)后的視頻信息包或者沒(méi)有發(fā)生丟包的信息包進(jìn)行視頻解碼,并根據(jù)丟包的情況對(duì)預(yù)測(cè)丟包率進(jìn)行更新。此處的預(yù)測(cè)丟包率是作為選擇rs編碼模式的一個(gè)參數(shù),其會(huì)不斷被更新,更新的數(shù)據(jù)來(lái)自于接收端的反饋。
步驟260至步驟280為本發(fā)明實(shí)例的解碼部分,在信道的接收端執(zhí)行,用于對(duì)接收的視頻組進(jìn)行校驗(yàn)以及丟包恢復(fù),再進(jìn)行視頻解碼,得到播放視頻。其中步驟260至步驟270為rs解碼,其運(yùn)算所用的數(shù)據(jù)表與步驟240-a中建立的運(yùn)算數(shù)據(jù)表一致。
圖2所示為本發(fā)明具體實(shí)施例中編碼發(fā)送裝置和解碼接收裝置的功能模塊圖。由圖所示,本發(fā)明數(shù)據(jù)傳輸系統(tǒng)主要包括了編碼發(fā)送裝置和解碼接收裝置。
其中,所述編碼發(fā)送裝置包括:音視頻編碼器、計(jì)算單元、糾錯(cuò)編碼單元、傳輸發(fā)送單元。
音視頻編碼器,用于對(duì)信道當(dāng)前發(fā)送音視頻信號(hào)進(jìn)行編碼,生成若干信息包。
計(jì)算單元,用于根據(jù)預(yù)測(cè)丟包率計(jì)算丟包恢復(fù)概率,從而確定選擇最優(yōu)rs編碼模式rs
糾錯(cuò)編碼單元,用于根據(jù)所述最優(yōu)rs編碼模式rs
傳輸發(fā)送單元,用于將所述冗余包與所述信息包一起封裝后發(fā)送。
上述計(jì)算單元在確定所述最優(yōu)rs編碼模式rs
步驟(2):計(jì)算
步驟(3):根據(jù)上述步驟(1)中選擇出所有滿足條件
步驟(4):從所述步驟(3)中得到的所有rs編碼模式中,選擇其中子信息包數(shù)量最小的rs編碼模式為所述最優(yōu)rs編碼模式:rs
解碼接收裝置包括:傳輸接收單元、丟包恢復(fù)單元、音視頻解碼器。
傳輸接收單元,用于接收所述冗余包和所述信息包數(shù)據(jù),以及更新后的預(yù)測(cè)丟包率
丟包恢復(fù)單元,用于信息包構(gòu)造伴隨矩陣,并計(jì)算校驗(yàn)包進(jìn)行丟包檢驗(yàn)、丟包恢復(fù)。該丟包恢復(fù)是指根據(jù)校驗(yàn)包計(jì)算丟包發(fā)生位置,并對(duì)丟包恢復(fù)能力范圍內(nèi)的丟包進(jìn)行丟包恢復(fù),以及根據(jù)丟包的情況對(duì)預(yù)測(cè)丟包率
音視頻解碼器,用于對(duì)恢復(fù)后的信息包進(jìn)行解碼;當(dāng)沒(méi)有發(fā)生丟包現(xiàn)象時(shí),所述音視頻解碼器對(duì)接收到的所述信息包進(jìn)行解碼。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。