專利名稱:一種糾錯(cuò)校驗(yàn)方法、設(shè)備和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及流媒體數(shù)據(jù)處理技術(shù),尤其涉及一種糾錯(cuò)校驗(yàn)方法、設(shè)備和系統(tǒng)。
背景技術(shù):
通過網(wǎng)絡(luò)傳送實(shí)時(shí)的流媒體數(shù)據(jù)時(shí),丟包會(huì)導(dǎo)致播放時(shí)出現(xiàn)馬賽克、停頓等現(xiàn)象, 影響播放效果。通過數(shù)據(jù)重傳可以解決丟包問題,但數(shù)據(jù)重傳會(huì)導(dǎo)致媒體數(shù)據(jù)不能及時(shí)到 達(dá)終端,導(dǎo)致播放延時(shí),滿足不了用戶對多媒體業(yè)務(wù)的實(shí)時(shí)需求。而前向糾錯(cuò)技術(shù)O^rward Error Correction, FEC)由于可以較好的解決實(shí)時(shí)傳輸數(shù)據(jù)時(shí)的丟包問題,在業(yè)界得到了 廣泛的應(yīng)用。FEC技術(shù)在媒體服務(wù)器向終端發(fā)送媒體數(shù)據(jù)包時(shí),按照統(tǒng)一的冗余度對這些媒體 數(shù)據(jù)包生成冗余的糾錯(cuò)校驗(yàn)數(shù)據(jù),將媒體數(shù)據(jù)包和糾錯(cuò)校驗(yàn)數(shù)據(jù)一并發(fā)送給終端。終端接 收到這些數(shù)據(jù)后,如果發(fā)現(xiàn)媒體數(shù)據(jù)包丟失,則通過已經(jīng)收到的媒體數(shù)據(jù)包和糾錯(cuò)校驗(yàn)數(shù) 據(jù)把丟失的媒體數(shù)據(jù)包恢復(fù)出來,從而在實(shí)現(xiàn)實(shí)時(shí)傳輸時(shí),能夠減少丟包,提升播放效果。 媒體服務(wù)器生成的糾錯(cuò)校驗(yàn)數(shù)據(jù)越多,終端恢復(fù)媒體數(shù)據(jù)的可能性越高,播放質(zhì)量越好,但 糾錯(cuò)校驗(yàn)數(shù)據(jù)占用的傳輸帶寬也就越高;媒體服務(wù)器生成的糾錯(cuò)校驗(yàn)數(shù)據(jù)越少,終端恢復(fù) 媒體數(shù)據(jù)的可能性越低,播放質(zhì)量越差,但糾錯(cuò)校驗(yàn)數(shù)據(jù)占用的傳輸帶寬也就越小。在進(jìn)行網(wǎng)絡(luò)傳輸時(shí),為降低傳輸帶寬,對流媒體數(shù)據(jù),如視頻畫面,會(huì)壓縮生成媒 體數(shù)據(jù)包后,再進(jìn)行糾錯(cuò)校驗(yàn),然后在網(wǎng)絡(luò)傳輸。通常采用如下三種壓縮方法第1種方法 是直接對當(dāng)前畫面進(jìn)行壓縮,壓縮后的畫面稱為I幀;第2種方法是以前一個(gè)畫面為基準(zhǔn), 計(jì)算當(dāng)前畫面和前一個(gè)畫面的差異,存儲或發(fā)送當(dāng)前畫面時(shí)只存儲或發(fā)送這些差異,這樣 的畫面稱為P幀。第3種方法是以前一個(gè)畫面和下一個(gè)畫面為基準(zhǔn),計(jì)算當(dāng)前畫面和前后 畫面的差異,存儲或發(fā)送當(dāng)前畫面時(shí)只存儲或發(fā)送這些差異,這樣的畫面稱為B幀。對于I幀數(shù)據(jù),終端收到后可以直接還原出當(dāng)前畫面以進(jìn)行播放;對于P幀數(shù)據(jù), 終端收到后需要參考前一個(gè)畫面才能還原出當(dāng)前畫面再播放;對于B幀數(shù)據(jù),終端收到后 需要根據(jù)前一個(gè)畫面和后一個(gè)畫面才能還原出當(dāng)前畫面再進(jìn)行播放。在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題由于上述三種不同的壓縮方法,不同類型的幀具有不同的重要性,如I幀數(shù)據(jù)的 丟失或差錯(cuò)會(huì)極大地影響P幀、B幀數(shù)據(jù)的恢復(fù),現(xiàn)有技術(shù)對所有類型幀的媒體數(shù)據(jù)包按照 統(tǒng)一的冗余度進(jìn)行糾錯(cuò)校驗(yàn),不能有效地利用傳輸帶寬,且對丟包數(shù)據(jù)的恢復(fù)能力很有限, 播放效果較差。
發(fā)明內(nèi)容
為解決現(xiàn)有技術(shù)中存在的問題,本發(fā)明的實(shí)施例提供一種糾錯(cuò)校驗(yàn)方法、設(shè)備和 系統(tǒng),用于在實(shí)現(xiàn)糾錯(cuò)校驗(yàn)時(shí),有效利用傳輸帶寬,顯著增強(qiáng)接收端對丟包數(shù)據(jù)的恢復(fù)能 力,提高播放效果,且實(shí)現(xiàn)方法簡單,具有較大的可行性。為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案
一種糾錯(cuò)校驗(yàn)方法,所述方法包括獲知當(dāng)前幀的類型,所述幀包括關(guān)鍵幀和非關(guān)鍵幀;根據(jù)當(dāng)前幀的類型和冗余編碼策略確定當(dāng)前幀的編碼冗余度,其中,關(guān)鍵幀的編 碼冗余度大于非關(guān)鍵幀的編碼冗余度;利用所述確定的編碼冗余度為當(dāng)前幀生成糾錯(cuò)校驗(yàn)碼。一種糾錯(cuò)校驗(yàn)方法,所述方法包括當(dāng)前幀的媒體數(shù)據(jù)包丟失時(shí),獲取丟失的媒體數(shù)據(jù)包對應(yīng)的編碼冗余度,所述幀 包括關(guān)鍵幀和非關(guān)鍵幀,關(guān)鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗余度;利用所述編碼冗余度恢復(fù)所述丟失的媒體數(shù)據(jù)包。一種糾錯(cuò)校驗(yàn)裝置,所述裝置包括幀類型鑒別單元,用于獲知當(dāng)前幀的類型,所述幀包括關(guān)鍵幀和非關(guān)鍵幀;確定單元,用于根據(jù)所述幀類型鑒別單元獲知的當(dāng)前幀的類型和冗余編碼策略確 定當(dāng)前幀的編碼冗余度,其中,關(guān)鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗余度;編碼單元,用于利用所述確定單元確定的編碼冗余度為當(dāng)前幀生成糾錯(cuò)校驗(yàn)碼。一種終端設(shè)備,所述終端設(shè)備包括獲取單元,用于當(dāng)當(dāng)前幀的媒體數(shù)據(jù)包丟失時(shí),獲取丟失的媒體數(shù)據(jù)包對應(yīng)的編 碼冗余度,所述幀包括關(guān)鍵幀和非關(guān)鍵幀,關(guān)鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗余 度;數(shù)據(jù)包恢復(fù)單元,用于利用所述獲取單元獲取到的編碼冗余度恢復(fù)所述丟失的媒 體數(shù)據(jù)包。一種通信系統(tǒng),該系統(tǒng)包括上述的糾錯(cuò)校驗(yàn)裝置和/或終端設(shè)備。一種通信系統(tǒng),所述系統(tǒng)包括流媒體服務(wù)器和終端,所述流媒體服務(wù)器包括流媒體解析單元,用于解析獲取到的媒體流得到媒體數(shù)據(jù),將媒體數(shù)據(jù)以幀為單 位發(fā)送至流媒體傳輸編碼單元,所述幀包括關(guān)鍵幀和非關(guān)鍵幀;冗余編碼策略單元,用于配置和存儲冗余編碼策略,以向流媒體傳輸編碼單元提 供相應(yīng)的編碼冗余度,其中,關(guān)鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗余度;流媒體傳輸編碼單元,用于根據(jù)來自所述流媒體解析單元的每幀媒體數(shù)據(jù)的類 型,查詢所述冗余編碼策略單元,獲知當(dāng)前幀的編碼冗余度,并將該媒體數(shù)據(jù)分割打包成媒 體數(shù)據(jù)包發(fā)送至前向糾錯(cuò)編碼單元;前向糾錯(cuò)編碼單元,用于按照所述當(dāng)前幀的編碼冗余度,為接收到的媒體數(shù)據(jù)包 生成糾錯(cuò)校驗(yàn)碼,將該編碼冗余度、糾錯(cuò)校驗(yàn)碼和媒體數(shù)據(jù)包通過網(wǎng)絡(luò)向終端發(fā)送;所述終端包括前向糾錯(cuò)解碼單元,用于接收來自流媒體服務(wù)器的數(shù)據(jù),當(dāng)當(dāng)前幀的媒體數(shù)據(jù)包 丟失時(shí),獲取丟失的媒體數(shù)據(jù)包對應(yīng)的編碼冗余度,利用所述編碼冗余度解碼并恢復(fù)所述 丟失的媒體數(shù)據(jù)包,將該媒體數(shù)據(jù)包發(fā)送至媒體播放單元;媒體播放單元,用于從來自所述前向糾錯(cuò)解碼單元的媒體數(shù)據(jù)包中提取媒體數(shù)據(jù) 并播放。本發(fā)明實(shí)施例提供的技術(shù)方案,在進(jìn)行糾錯(cuò)校驗(yàn)時(shí),發(fā)送端對不同類型幀的媒體數(shù)據(jù)包采用不同的編碼冗余度,重要性較高的關(guān)鍵幀所采用的編碼冗余度大于重要性較低 的非關(guān)鍵幀所采用的編碼冗余度,接收端根據(jù)不同的編碼冗余度恢復(fù)傳輸中丟失的媒體數(shù) 據(jù)包,從而解決了現(xiàn)有技術(shù)中對所有類型幀的媒體數(shù)據(jù)包按照統(tǒng)一的冗余度進(jìn)行糾錯(cuò)校驗(yàn) 而帶來的問題。本發(fā)明實(shí)施例的技術(shù)方案在實(shí)現(xiàn)糾錯(cuò)校驗(yàn)時(shí),不但能夠有效利用傳輸帶寬, 顯著增強(qiáng)接收端對丟包數(shù)據(jù)的恢復(fù)能力,提高播放效果,且實(shí)現(xiàn)方法簡單,具有較大的可行 性。
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明實(shí)施例一提供的糾錯(cuò)校驗(yàn)方法流程圖;圖2為本發(fā)明實(shí)施例二提供的糾錯(cuò)校驗(yàn)方法流程圖;圖3為本發(fā)明實(shí)施例三提供的糾錯(cuò)校驗(yàn)裝置結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例四提供的終端設(shè)備結(jié)構(gòu)示意圖;圖5為本發(fā)明實(shí)施例六提供的通信系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完 整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;?本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例一提供的糾錯(cuò)校驗(yàn)方法,如圖1所示,所述方法包括步驟11 獲知當(dāng)前幀的類型,所述幀包括關(guān)鍵幀和非關(guān)鍵幀;步驟12 根據(jù)當(dāng)前幀的類型和冗余編碼策略確定當(dāng)前幀的編碼冗余度,其中,關(guān) 鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗余度;步驟13 利用所述確定的編碼冗余度為當(dāng)前幀生成糾錯(cuò)校驗(yàn)碼。本發(fā)明實(shí)施例提供的技術(shù)方案,在進(jìn)行糾錯(cuò)校驗(yàn)時(shí),發(fā)送端,如媒體服務(wù)器,對不 同類型幀的媒體數(shù)據(jù)包采用不同的編碼冗余度,重要性較高的關(guān)鍵幀,如I幀,所采用的編 碼冗余度大于重要性較低的非關(guān)鍵幀,如P幀和B幀,所采用的編碼冗余度。該編碼冗余度 可表示為(m,k),即為m個(gè)媒體數(shù)據(jù)包生成k個(gè)糾錯(cuò)校驗(yàn)數(shù)據(jù)包。下面對本發(fā)明實(shí)施例一進(jìn)一步提供的媒體服務(wù)器為當(dāng)前幀生成糾錯(cuò)校驗(yàn)數(shù)據(jù)包 的方法進(jìn)行具體描述。該當(dāng)前幀由若干媒體數(shù)據(jù)包組成,進(jìn)行糾錯(cuò)校驗(yàn)時(shí),以媒體數(shù)據(jù)包編 碼集合為單位進(jìn)行,該媒體數(shù)據(jù)包編碼集合包括m個(gè)媒體數(shù)據(jù)包。首先,媒體服務(wù)器在實(shí)現(xiàn)糾錯(cuò)校驗(yàn)時(shí),將連續(xù)的m個(gè)媒體數(shù)據(jù)包作為一個(gè)媒體數(shù) 據(jù)包編碼集合進(jìn)行冗余編碼。例如,當(dāng)m取2時(shí),對待校驗(yàn)的連續(xù)的媒體數(shù)據(jù)包AppDatal 和AppData2,將這2個(gè)媒體數(shù)據(jù)包作為1個(gè)媒體數(shù)據(jù)包編碼集合進(jìn)行FEC冗余編碼。然后,媒體服務(wù)器根據(jù)確定的編碼冗余度,例如,編碼冗余度為(2,1),即為每2個(gè)媒體數(shù)據(jù)包生成1字節(jié)糾錯(cuò)校驗(yàn)數(shù)據(jù)包),通過某種前向糾錯(cuò)算法為數(shù)據(jù)包編碼集合生成 糾錯(cuò)校驗(yàn)數(shù)據(jù)。具體地,當(dāng)一個(gè)媒體數(shù)據(jù)包編碼集合中各個(gè)媒體數(shù)據(jù)包的長度不一致時(shí),首 先按照該媒體數(shù)據(jù)包編碼集合中長度最大的媒體數(shù)據(jù)包的長度對其余的各個(gè)媒體數(shù)據(jù)包 進(jìn)行填充,例如,對上述包含AppDatal和AppData2的媒體數(shù)據(jù)包編碼集合,當(dāng)AppDatal的 長度小于AppData12,則對AppDatal進(jìn)行填充,使其填充后和AppData12長度一致,對填充 后的AppDatal和AppData2使用異或操作,得到糾錯(cuò)校驗(yàn)數(shù)據(jù)FECDatal。其次,媒體服務(wù)器對糾錯(cuò)校驗(yàn)數(shù)據(jù)打包,包頭中指明糾錯(cuò)校驗(yàn)數(shù)據(jù)包對應(yīng)了哪些 媒體數(shù)據(jù)包,例如,在本例子中,糾錯(cuò)校驗(yàn)數(shù)據(jù)包的包頭中填寫AppDatal和AppData2的構(gòu) 成的媒體數(shù)據(jù)包編碼集合的標(biāo)識(ID),將糾錯(cuò)校驗(yàn)數(shù)據(jù)FEOTatal和媒體數(shù)據(jù)包標(biāo)識打包 成糾錯(cuò)校驗(yàn)數(shù)據(jù)包后,將媒體數(shù)據(jù)包和糾錯(cuò)校驗(yàn)數(shù)據(jù)包發(fā)送給終端。接收端,如終端,根據(jù)不同的編碼冗余度恢復(fù)傳輸中丟失的媒體數(shù)據(jù)包。進(jìn)一步的,上述的冗余編碼策略包括采用統(tǒng)一的編碼冗余度對關(guān)鍵幀進(jìn)行冗余編碼,不對非關(guān)鍵幀進(jìn)行冗余編碼;或 者,當(dāng)傳輸帶寬不變時(shí),增加關(guān)鍵幀的編碼冗余度,降低非關(guān)鍵幀的編碼冗余度;或 者,當(dāng)傳輸帶寬降低時(shí),保持關(guān)鍵幀當(dāng)前的編碼冗余度,降低非關(guān)鍵幀的編碼冗余度, 例如,若t時(shí)刻的傳輸帶寬A小于t-Ι時(shí)刻的傳輸帶寬B時(shí),即傳輸帶寬降低了,則在t時(shí) 刻保持關(guān)鍵幀t-Ι時(shí)刻的編碼冗余度,并采用小于t-Ι時(shí)刻編碼冗余度的編碼冗余度對t 時(shí)刻的非關(guān)鍵幀進(jìn)行編碼;或者,當(dāng)傳輸帶寬提高時(shí),增加關(guān)鍵幀的編碼冗余度,保持非關(guān)鍵幀當(dāng)前的編碼冗余度; 或者,當(dāng)?shù)谝环顷P(guān)鍵幀在解碼端的解碼順序位于第二非關(guān)鍵幀之前時(shí),增加第一非關(guān)鍵 幀的編碼冗余度,降低第二非關(guān)鍵幀的編碼冗余度。進(jìn)一步的,當(dāng)所述當(dāng)前幀由整數(shù)倍個(gè)媒體數(shù)據(jù)包編碼集合和η個(gè)剩余的媒體數(shù)據(jù) 包組成時(shí),生成m-n個(gè)缺省媒體數(shù)據(jù)包,并為由缺省媒體數(shù)據(jù)包和η個(gè)剩余的媒體數(shù)據(jù)包構(gòu) 成的媒體數(shù)據(jù)包編碼集合生成糾錯(cuò)校驗(yàn)數(shù)據(jù)包。為使本發(fā)明實(shí)施例的技術(shù)方案更加清楚,下面通過另一個(gè)示例進(jìn)行具體說明。當(dāng)前幀為I幀,該當(dāng)前I幀包括50 X 1024字節(jié),傳輸時(shí)每個(gè)媒體數(shù)據(jù)包能攜帶188 字節(jié)有效數(shù)據(jù),則將當(dāng)前I幀將分成273個(gè)媒體數(shù)據(jù)包,其中,最后一個(gè)媒體數(shù)據(jù)包(只有 64字節(jié))不足188字節(jié),對最后一個(gè)媒體數(shù)據(jù)包進(jìn)行填充,如將最后一個(gè)媒體數(shù)據(jù)包中不足 的124字節(jié)填寫為0。確定編碼冗余度(m,η)中m為2,η為1,則將上述273個(gè)媒體數(shù)據(jù)包的每2個(gè)組 成1個(gè)媒體數(shù)據(jù)包編碼集合,其中,最后一個(gè)媒體數(shù)據(jù)包編碼集合中只有一個(gè)媒體數(shù)據(jù)包, 小于m的值2,則需要對最后一個(gè)媒體數(shù)據(jù)包編碼集合額外生成一個(gè)缺省的媒體數(shù)據(jù)包,如 生成一個(gè)由0構(gòu)成的缺省媒體數(shù)據(jù)包。對每個(gè)媒體數(shù)據(jù)包編碼集合生成1個(gè)冗余校驗(yàn)數(shù)據(jù) 包,共生成137個(gè)糾錯(cuò)校驗(yàn)數(shù)據(jù)包。將上述273個(gè)媒體數(shù)據(jù)包和137個(gè)糾錯(cuò)校驗(yàn)數(shù)據(jù)包全 部發(fā)送至終端。本發(fā)明實(shí)施例以幀為單位采用不同的編碼冗余度生成糾錯(cuò)校驗(yàn)碼,不但在實(shí)現(xiàn)糾錯(cuò)校驗(yàn)時(shí),能夠有效利用傳輸帶寬,顯著增強(qiáng)接收端對丟包數(shù)據(jù)的恢復(fù)能力,提高播放效 果,而且,實(shí)現(xiàn)起來比較簡單,計(jì)算量小,適用于吞吐率很大的媒體服務(wù)器,具有較高的可行 性。本發(fā)明實(shí)施例二提供的糾錯(cuò)校驗(yàn)方法,如圖2所示,所述方法包括步驟21 當(dāng)前幀的媒體數(shù)據(jù)包丟失時(shí),獲取丟失的媒體數(shù)據(jù)包對應(yīng)的編碼冗余 度,所述幀包括關(guān)鍵幀和非關(guān)鍵幀,關(guān)鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗余度;步驟22 利用所述編碼冗余度恢復(fù)所述丟失的媒體數(shù)據(jù)包。接收端,如終端,接收到媒體數(shù)據(jù)包和糾錯(cuò)校驗(yàn)數(shù)據(jù)包后,如果發(fā)現(xiàn)媒體數(shù)據(jù)包有 丟包現(xiàn)象,則通過已經(jīng)接收到的媒體數(shù)據(jù)包和糾錯(cuò)校驗(yàn)數(shù)據(jù)包恢復(fù)丟失的媒體數(shù)據(jù)包。當(dāng)終端接收到的屬于同一媒體數(shù)據(jù)包編碼集合的媒體數(shù)據(jù)包和相應(yīng)的糾錯(cuò)校驗(yàn) 數(shù)據(jù)包為m個(gè)時(shí),開始利用所述接收到的媒體數(shù)據(jù)包和糾錯(cuò)校驗(yàn)數(shù)據(jù)包恢復(fù)所述丟失的媒 體數(shù)據(jù)包,其中,所述編碼冗余度表示為(m,k),所述媒體數(shù)據(jù)包編碼集合包括m個(gè)媒體數(shù) 據(jù)包,所述糾錯(cuò)校驗(yàn)數(shù)據(jù)包包括包頭和糾錯(cuò)校驗(yàn)碼,該包頭包括所述媒體數(shù)據(jù)包編碼集合 的標(biāo)識和所述編碼冗余度。例如,編碼冗余度表示為(2,1),終端接收到了屬于同一媒體數(shù)據(jù)包編碼集合的媒 體數(shù)據(jù)包AppDatal和包含糾錯(cuò)校驗(yàn)數(shù)據(jù)FECDatal的糾錯(cuò)校驗(yàn)數(shù)據(jù)包時(shí),發(fā)現(xiàn)AppData2丟 失,則先按FECDatal的長度對AppDatal填充,之后對填充后的AppDatal和FECDatal進(jìn)行 異或,恢復(fù)得到AppDatal2。進(jìn)一步的,當(dāng)終端接收到的屬于同一媒體數(shù)據(jù)包編碼集合的媒體數(shù)據(jù)包只有η個(gè) 且η小于m時(shí),需要生成m-n個(gè)缺省媒體數(shù)據(jù)包,利用接收到的屬于同一媒體數(shù)據(jù)包編碼集 合的媒體數(shù)據(jù)包、相應(yīng)的糾錯(cuò)校驗(yàn)數(shù)據(jù)包和生成的缺省媒體數(shù)據(jù)包恢復(fù)所述丟失的媒體數(shù) 據(jù)包。本發(fā)明實(shí)施例以幀為單位采用不同的編碼冗余度生成糾錯(cuò)校驗(yàn)碼,不但在實(shí)現(xiàn)糾 錯(cuò)校驗(yàn)時(shí),能夠有效利用傳輸帶寬,顯著增強(qiáng)接收端對丟包數(shù)據(jù)的恢復(fù)能力,提高播放效 果,而且,實(shí)現(xiàn)起來比較簡單,計(jì)算量小,適用于吞吐率很大的媒體服務(wù)器,具有較高的可行 性。本發(fā)明實(shí)施例三提供了一種糾錯(cuò)校驗(yàn)裝置,如圖3所示,所述裝置包括幀類型鑒別單元31,用于獲知當(dāng)前幀的類型,所述幀包括關(guān)鍵幀和非關(guān)鍵幀;確 定單元32,用于根據(jù)所述幀類型鑒別單元31獲知的當(dāng)前幀的類型和冗余編碼策略確定當(dāng) 前幀的編碼冗余度,其中,關(guān)鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗余度;編碼單元33, 用于利用所述確定單元32確定的編碼冗余度為當(dāng)前幀生成糾錯(cuò)校驗(yàn)碼。進(jìn)一步的,所述確定單元32根據(jù)當(dāng)前幀的類型和下述至少一種冗余編碼策略確 定當(dāng)前幀的編碼冗余度采用統(tǒng)一的編碼冗余度對關(guān)鍵幀進(jìn)行冗余編碼,不對非關(guān)鍵幀進(jìn)行冗余編碼;或 者,當(dāng)傳輸帶寬不變時(shí),增加關(guān)鍵幀的編碼冗余度,降低非關(guān)鍵幀的編碼冗余度;或 者,當(dāng)傳輸帶寬降低時(shí),保持關(guān)鍵幀當(dāng)前的編碼冗余度,降低非關(guān)鍵幀的編碼冗余度; 或者,
當(dāng)傳輸帶寬提高時(shí),增加關(guān)鍵幀的編碼冗余度,保持非關(guān)鍵幀當(dāng)前的編碼冗余度; 或者,當(dāng)?shù)谝环顷P(guān)鍵幀在解碼端的解碼順序位于第二非關(guān)鍵幀之前時(shí),增加第一非關(guān)鍵 幀的編碼冗余度,降低第二非關(guān)鍵幀的編碼冗余度。本發(fā)明裝置實(shí)施例中各功能模塊和單元的具體工作方式參見本發(fā)明方法實(shí)施例。 本發(fā)明裝置實(shí)施例中各功能模塊和單元可以單獨(dú)實(shí)現(xiàn),也可以集成在一個(gè)或多個(gè)單元中實(shí) 現(xiàn)。本發(fā)明實(shí)施例以幀為單位采用不同的編碼冗余度生成糾錯(cuò)校驗(yàn)碼,不但在實(shí)現(xiàn)糾 錯(cuò)校驗(yàn)時(shí),能夠有效利用傳輸帶寬,顯著增強(qiáng)接收端對丟包數(shù)據(jù)的恢復(fù)能力,提高播放效 果,而且,實(shí)現(xiàn)起來比較簡單,計(jì)算量小,適用于吞吐率很大的媒體服務(wù)器,具有較高的可行 性。本發(fā)明實(shí)施例四提供了一種終端設(shè)備,如圖4所示,該終端設(shè)備包括獲取單元41,用于當(dāng)當(dāng)前幀的媒體數(shù)據(jù)包丟失時(shí),獲取丟失的媒體數(shù)據(jù)包對應(yīng)的 編碼冗余度,所述幀包括關(guān)鍵幀和非關(guān)鍵幀,關(guān)鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗 余度;數(shù)據(jù)包恢復(fù)單元42,用于利用所述獲取單元41獲取到的編碼冗余度恢復(fù)所述丟 失的媒體數(shù)據(jù)包。進(jìn)一步的,所述數(shù)據(jù)包恢復(fù)單元42,還用于當(dāng)接收到的屬于同一媒體數(shù)據(jù)包編碼 集合的媒體數(shù)據(jù)包和相應(yīng)的糾錯(cuò)校驗(yàn)數(shù)據(jù)包為m個(gè)時(shí),利用所述接收到的媒體數(shù)據(jù)包和糾 錯(cuò)校驗(yàn)數(shù)據(jù)包恢復(fù)所述丟失的媒體數(shù)據(jù)包,其中,所述編碼冗余度表示為(m,k),所述媒體 數(shù)據(jù)包編碼集合包括m個(gè)媒體數(shù)據(jù)包,所述糾錯(cuò)校驗(yàn)數(shù)據(jù)包包括包頭和糾錯(cuò)校驗(yàn)碼,該包 頭包括所述媒體數(shù)據(jù)包編碼集合的標(biāo)識和所述編碼冗余度。本發(fā)明裝置實(shí)施例中各功能模塊和單元的具體工作方式參見本發(fā)明方法實(shí)施例。 本發(fā)明裝置實(shí)施例中各功能模塊和單元可以單獨(dú)實(shí)現(xiàn),也可以集成在一個(gè)或多個(gè)單元中實(shí) 現(xiàn)。本發(fā)明實(shí)施例以幀為單位采用不同的編碼冗余度生成糾錯(cuò)校驗(yàn)碼,不但在實(shí)現(xiàn)糾 錯(cuò)校驗(yàn)時(shí),能夠有效利用傳輸帶寬,顯著增強(qiáng)接收端對丟包數(shù)據(jù)的恢復(fù)能力,提高播放效 果,而且,實(shí)現(xiàn)起來比較簡單,計(jì)算量小,適用于吞吐率很大的媒體服務(wù)器,具有較高的可行 性。本發(fā)明實(shí)施例五提供了一種通信系統(tǒng),該系統(tǒng)包括上述的糾錯(cuò)校驗(yàn)裝置和/或終 端設(shè)備。該糾錯(cuò)校驗(yàn)裝置的具體工作方式參見本發(fā)明實(shí)施例三,該終端設(shè)備的具體工作方 式參見本發(fā)明實(shí)施例四。由上所述,本發(fā)明實(shí)施例提供的通信系統(tǒng),在進(jìn)行糾錯(cuò)校驗(yàn)時(shí),發(fā)送端對不同類型 幀的媒體數(shù)據(jù)包采用不同的編碼冗余度,重要性較高的關(guān)鍵幀所采用的編碼冗余度大于重 要性較低的非關(guān)鍵幀所采用的編碼冗余度,接收端根據(jù)不同的編碼冗余度恢復(fù)傳輸中丟失 的媒體數(shù)據(jù)包,從而解決了現(xiàn)有技術(shù)中對所有類型幀的媒體數(shù)據(jù)包按照統(tǒng)一的冗余度進(jìn)行 糾錯(cuò)校驗(yàn)而帶來的問題。本發(fā)明實(shí)施例的技術(shù)方案在實(shí)現(xiàn)糾錯(cuò)校驗(yàn)時(shí),不但能夠有效利用 傳輸帶寬,顯著增強(qiáng)接收端對丟包數(shù)據(jù)的恢復(fù)能力,提高播放效果,且實(shí)現(xiàn)方法簡單,具有 較大的可行性。
本發(fā)明實(shí)施例六提供的通信系統(tǒng)包括流媒體服務(wù)器51和終端52,參見圖5。所述流媒體服務(wù)器51包括 流媒體解析單元511,用于解析獲取到的媒體流得到媒體數(shù)據(jù),將媒體數(shù)據(jù)以幀為 單位發(fā)送至流媒體傳輸編碼單元,所述幀包括關(guān)鍵幀和非關(guān)鍵幀;冗余編碼策略單元512,用于配置和存儲冗余編碼策略,以向流媒體傳輸編碼單元 提供相應(yīng)的編碼冗余度,其中,關(guān)鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗余度;流媒體傳輸編碼單元513,用于根據(jù)來自所述流媒體解析單元511的每幀媒體數(shù) 據(jù)的類型,查詢所述冗余編碼策略單元512,獲知當(dāng)前幀的編碼冗余度,并將該媒體數(shù)據(jù)分 割打包成媒體數(shù)據(jù)包發(fā)送至前向糾錯(cuò)編碼單元514 ;前向糾錯(cuò)編碼單元514,用于按照所述當(dāng)前幀的編碼冗余度,為接收到的媒體數(shù)據(jù) 包生成糾錯(cuò)校驗(yàn)碼,將該編碼冗余度、糾錯(cuò)校驗(yàn)碼和媒體數(shù)據(jù)包通過網(wǎng)絡(luò)向終端52發(fā)送;所述終端52包括前向糾錯(cuò)解碼單元521,用于接收來自流媒體服務(wù)器的數(shù)據(jù),當(dāng)當(dāng)前幀的媒體數(shù)據(jù) 包丟失時(shí),獲取丟失的媒體數(shù)據(jù)包對應(yīng)的編碼冗余度,利用所述編碼冗余度解碼并恢復(fù)所 述丟失的媒體數(shù)據(jù)包,將該媒體數(shù)據(jù)包發(fā)送至媒體播放單元522 ;媒體播放單元522,用于從來自所述前向糾錯(cuò)解碼單元521的媒體數(shù)據(jù)包中提取 媒體數(shù)據(jù)并播放。根據(jù)需要進(jìn)行糾錯(cuò)校驗(yàn)的業(yè)務(wù)類型不同,處理直播業(yè)務(wù)時(shí),所述流媒體解析單元 511包括直播流媒體解析單元5111,用于接收并解析直播媒體數(shù)據(jù),將該直播媒體數(shù)據(jù)以 幀為單位發(fā)送至流媒體傳輸編碼單元;和/或,處理點(diǎn)播業(yè)務(wù)時(shí),所述流媒體解析單元511 包括本地媒體存儲單元5112,用于存儲本地的媒體數(shù)據(jù);本地媒體解析單元5113,用于讀 取所述本地媒體存儲單元中的媒體數(shù)據(jù),將該媒體數(shù)據(jù)以幀為單位發(fā)送至流媒體傳輸編碼 單元。進(jìn)一步的,為保證數(shù)據(jù)通過網(wǎng)絡(luò)在流媒體服務(wù)器51和終端52之間的成功傳輸,在 流媒體服務(wù)器51中還可以包括服務(wù)器信令處理單元(圖中未示出),在終端52中還可以包 括終端信令處理單元(圖中未示出)。下面對本發(fā)明實(shí)施例六提供的通信系統(tǒng)進(jìn)行具體描述。參見圖5,在本發(fā)明實(shí)施例 六中以系統(tǒng)中的發(fā)送端為媒體服務(wù)器、接收端為終端的場景為例,分別針對不同的業(yè)務(wù)類 型具體說明糾錯(cuò)校驗(yàn)的方法,但并不局限于該場景或該執(zhí)行主體。一、直播(組播)業(yè)務(wù)媒體服務(wù)器51將直播內(nèi)容以組播方式發(fā)送時(shí)包括以下流程的處理1、直播流媒體解析單元5111從外部的源服務(wù)器獲取直播媒體流,解析該直播媒 體流得到媒體數(shù)據(jù),將得到的媒體數(shù)據(jù)以幀為單位發(fā)送給流媒體傳輸編碼單元513,以進(jìn)行 打包傳輸;2、流媒體傳輸編碼單元513以幀為單位對媒體數(shù)據(jù)進(jìn)行打包傳輸,包括如下處 理a)流媒體傳輸編碼單元513確定當(dāng)前幀的編碼冗余度流媒體傳輸編碼單元513根據(jù)來自所述流媒體解析單元511的每幀媒體數(shù)據(jù)的類 型,通過查詢?nèi)哂嗑幋a策略單元512,獲知當(dāng)前幀的編碼冗余度。
其中,可由直播流媒體解析單元5111解析獲知當(dāng)前幀媒體數(shù)據(jù)的類型,然后告知 流媒體傳輸編碼單元513,或者,由流媒體傳輸編碼單元513直接對媒體數(shù)據(jù)進(jìn)行解析,獲 知當(dāng)前幀的類型,所述當(dāng)前幀的類型主要包括關(guān)鍵幀,如I幀和非關(guān)鍵幀,如B幀、P幀。在冗余編碼策略單元512中,配置和保存了對不同類型幀的冗余編碼策略,冗余 編碼策略單元512根據(jù)該冗余編碼策略確定當(dāng)前幀的編碼冗余度。該冗余編碼策略可以包括在傳輸帶寬不變的情況下,不同類型的幀采用不同的編碼冗余度,提高I幀的編 碼冗余度,降低B幀和P幀的編碼冗余度,即I幀的編碼冗余度大于B幀和P幀的編碼冗余 度,如I幀數(shù)據(jù)編碼冗余度為每100個(gè)媒體數(shù)據(jù)包生成10個(gè)糾錯(cuò)校驗(yàn)數(shù)據(jù)包,P幀數(shù)據(jù)編 碼冗余度為每100個(gè)媒體數(shù)據(jù)包生成5個(gè)糾錯(cuò)校驗(yàn)數(shù)據(jù)包,B幀數(shù)據(jù)冗余度為每100個(gè)媒 體數(shù)據(jù)包生成1糾錯(cuò)校驗(yàn)數(shù)據(jù)包;或者,該冗余編碼策略還可以包括在冗余度不變的情況下,即采用相同的編碼冗 余度,但只利用該編碼冗余度對I幀進(jìn)行FEC冗余編碼,不對P幀和B幀進(jìn)行FEC冗余編碼, 這時(shí)降低了對傳輸帶寬的要求;或者,該冗余編碼策略還可以包括當(dāng)?shù)谝环顷P(guān)鍵幀在解碼端的解碼順序位于第 二非關(guān)鍵幀之前時(shí),增加第一非關(guān)鍵幀的編碼冗余度,降低第二非關(guān)鍵幀的編碼冗余度。即 在一個(gè)播放單元內(nèi),媒體服務(wù)器51根據(jù)媒體數(shù)據(jù)在終端的解碼順序決定糾錯(cuò)校驗(yàn)數(shù)據(jù)的 冗余度,即解碼順序越靠前,冗余度越高,反之冗余度越低;或者,該冗余編碼策略還可以包括當(dāng)傳輸帶寬降低時(shí),保持關(guān)鍵幀當(dāng)前的編碼冗 余度,降低非關(guān)鍵幀的編碼冗余度;例如,在傳輸帶寬降低的情況下,媒體服務(wù)器51維持I 幀數(shù)據(jù)編碼冗余度不變,降低B幀、P幀數(shù)據(jù)編碼冗余度;或者,該冗余編碼策略還可以包括當(dāng)傳輸帶寬提高時(shí),增加關(guān)鍵幀的編碼冗余 度,保持非關(guān)鍵幀當(dāng)前的編碼冗余度;例如,在傳輸帶寬提高的情況下,媒體服務(wù)器51維持 B幀、P幀數(shù)據(jù)編碼冗余度不變,提高I幀數(shù)據(jù)編碼冗余度。b)對每一幀,流媒體傳輸編碼單元513通知前向糾錯(cuò)編碼單元514開始新一輪媒 體數(shù)據(jù)包冗余編碼,并告知該前向糾錯(cuò)編碼單元當(dāng)前幀的編碼冗余度為(m,k);c)流媒體傳輸編碼單元513將媒體數(shù)據(jù)按傳輸協(xié)議(例如RTP、TS、TS overRTP 等)分割打包成適合傳輸?shù)拿襟w數(shù)據(jù)包,提交給前向糾錯(cuò)編碼單元514進(jìn)行冗余編碼傳 輸;3、前向糾錯(cuò)編碼單元514對媒體數(shù)據(jù)包進(jìn)行前向糾錯(cuò)冗余編碼。前向糾錯(cuò)編碼單元514以媒體數(shù)據(jù)包編碼集合為單位對媒體數(shù)據(jù)包進(jìn)行糾錯(cuò)編 碼,當(dāng)編碼冗余度表示為(m,k)時(shí),m個(gè)媒體數(shù)據(jù)包構(gòu)成一個(gè)媒體數(shù)據(jù)包編碼集合。前向糾錯(cuò)編碼單元514接收來自流媒體傳輸編碼單元513的媒體數(shù)據(jù)包并緩存, 如果已緩存m個(gè)媒體數(shù)據(jù)包時(shí),進(jìn)行如下處理i)計(jì)算緩存的m個(gè)媒體數(shù)據(jù)包中最大的媒體數(shù)據(jù)包的長度MaxLength ;ii)對緩存的媒體數(shù)據(jù)包添加補(bǔ)丁數(shù)據(jù)(如填充內(nèi)容為0的數(shù)據(jù)),使所有媒體數(shù) 據(jù)包的長度都是MaxLength ;iii)使用冗余編碼算法為這m個(gè)媒體數(shù)據(jù)包生成k個(gè)長度為MaxLength的糾錯(cuò)校 驗(yàn)數(shù)據(jù)包。該糾錯(cuò)校驗(yàn)數(shù)據(jù)包包括包頭和糾錯(cuò)校驗(yàn)數(shù)據(jù)。
在此不對生成糾錯(cuò)校驗(yàn)數(shù)據(jù)的具體編碼方法進(jìn)行限定,如可以采用范德蒙碼、柯 西碼、復(fù)損碼、Tornado碼等。iv)對上述糾錯(cuò)校驗(yàn)數(shù)據(jù)進(jìn)行打包,生成糾錯(cuò)校驗(yàn)數(shù)據(jù)包。每個(gè)糾錯(cuò)校驗(yàn)數(shù)據(jù)包的 包頭中指明該糾錯(cuò)校驗(yàn)數(shù)據(jù)包對應(yīng)的媒體數(shù)據(jù)包(即相應(yīng)的媒體數(shù)據(jù)包編碼集合)的標(biāo)識 以及本次編碼所使用的編碼冗余度,但不局限于此,該包頭中還可攜帶其它所需的信息,之 后將媒體數(shù)據(jù)包和糾錯(cuò)校驗(yàn)數(shù)據(jù)包同時(shí)發(fā)送給終端;其中,當(dāng)所述當(dāng)前幀由整數(shù)倍個(gè)媒體數(shù)據(jù)包編碼集合和η個(gè)剩余的媒體數(shù)據(jù)包組 成時(shí),η小于m,即對當(dāng)前幀按媒體數(shù)據(jù)包編碼集合為單位生成糾錯(cuò)校驗(yàn)數(shù)據(jù)包時(shí),最后剩 余的媒體數(shù)據(jù)包(η個(gè))不足m個(gè),這時(shí),前向糾錯(cuò)編碼單元514生成m-n個(gè)缺省媒體數(shù)據(jù) 包,例如,生成m-n個(gè)長度為MaxLength,內(nèi)容為全0的媒體數(shù)據(jù)包。將這m-n個(gè)缺省媒體數(shù) 據(jù)包和剩余的η個(gè)媒體數(shù)據(jù)包構(gòu)成一個(gè)媒體數(shù)據(jù)包編碼集合,為該媒體數(shù)據(jù)包編碼集合生 成糾錯(cuò)校驗(yàn)數(shù)據(jù)包。這時(shí),可在該糾錯(cuò)校驗(yàn)數(shù)據(jù)包的包頭中攜帶一個(gè)標(biāo)識,指示該媒體數(shù)據(jù) 包編碼集合中存在缺省媒體數(shù)據(jù)包,存在η的剩余的媒體數(shù)據(jù)包。ν)清空當(dāng)前緩沖區(qū);4、當(dāng)前幀數(shù)據(jù)處理完成后,流媒體傳輸編碼單元通知前向糾錯(cuò)編碼單元514結(jié)束 本輪媒體數(shù)據(jù)包冗余編碼;前向糾錯(cuò)編碼單元514將媒體數(shù)據(jù)包和糾錯(cuò)校驗(yàn)數(shù)據(jù)包通過網(wǎng)絡(luò)以組播的方式 發(fā)送至各終端。終端52接收到組播媒體數(shù)據(jù)后按以下流程處理終端52的前向糾錯(cuò)解碼單元521確定接收到的媒體數(shù)據(jù)包所采用的冗余編碼算 法,例如,前向糾錯(cuò)解碼單元521可以通過直播內(nèi)容描述信息確定所述冗余編碼算法,從而 保證發(fā)送端和接收端采用相同的冗余編碼算法;終端的前向糾錯(cuò)解碼單元521從網(wǎng)絡(luò)中接收到媒體數(shù)據(jù)包和糾錯(cuò)校驗(yàn)數(shù)據(jù)包后, 先判斷是否有媒體數(shù)據(jù)包丟失。如果沒有,直接丟棄糾錯(cuò)校驗(yàn)數(shù)據(jù)包;當(dāng)當(dāng)前幀的媒體數(shù)據(jù) 包丟失時(shí),終端52進(jìn)行如下處理a)前向糾錯(cuò)解碼單元521查找丟失媒體數(shù)據(jù)包對應(yīng)的糾錯(cuò)校驗(yàn)數(shù)據(jù)包;采用不同的冗余編碼算法時(shí),丟失媒體數(shù)據(jù)包所對應(yīng)的糾錯(cuò)校驗(yàn)數(shù)據(jù)包也可能不 同。例如,該對應(yīng)的糾錯(cuò)校驗(yàn)數(shù)據(jù)包可以是根據(jù)該丟失的媒體數(shù)據(jù)包的所屬的媒體數(shù)據(jù)包 編碼集合生成的糾錯(cuò)校驗(yàn)數(shù)據(jù)包的全部或其中幾個(gè)。b)前向糾錯(cuò)解碼單元521解析糾錯(cuò)校驗(yàn)數(shù)據(jù)包包頭,得到編碼冗余度相關(guān)參數(shù)m 和k ;c)前向糾錯(cuò)解碼單元521解析糾錯(cuò)校驗(yàn)數(shù)據(jù)包包頭,根據(jù)包頭中指明的對應(yīng)的媒 體數(shù)據(jù)包標(biāo)識查找已接收的媒體數(shù)據(jù)包。其中,如果包頭中指明的相關(guān)媒體數(shù)據(jù)包個(gè)數(shù)小于m,假設(shè)為η個(gè),則生成m-n個(gè)缺 省的媒體數(shù)據(jù)包;d)如果前向糾錯(cuò)解碼單元521已接收到的糾錯(cuò)校驗(yàn)數(shù)據(jù)包、媒體數(shù)據(jù)包和缺省的 媒體數(shù)據(jù)包(如果需要時(shí))個(gè)數(shù)已經(jīng)有m個(gè),使用冗余編碼算法對應(yīng)的解碼算法對丟失的 媒體數(shù)據(jù)包進(jìn)行恢復(fù);e)恢復(fù)后的媒體數(shù)據(jù)包交給媒體播放單元522播放;
媒體播放單元522接收來自前向糾錯(cuò)解碼單元521媒體數(shù)據(jù)包,從該媒體數(shù)據(jù)包 中提取媒體數(shù)據(jù)并播放。二、直播(單播)業(yè)務(wù)當(dāng)終端請求流媒體服務(wù)器播放直播內(nèi)容時(shí),包括如下處理首先,終端52和媒體服務(wù)器51之間通過信息交互,保證所采用的冗余編碼算法是 一致的,例如,終端52通過終端信令處理單元向媒體服務(wù)器51請求直播內(nèi)容描述信息;媒 體服務(wù)器51通過服務(wù)器信令處理單元返回直播內(nèi)容描述信息,該直播內(nèi)容描述信息包括 指示冗余編碼算法的信息;然后,終端信令處理單元設(shè)置終端的前向糾錯(cuò)解碼單元521所 使用的編碼算法,向媒體服務(wù)器51的服務(wù)器信令處理單元發(fā)送播放請求。服務(wù)器信令處理 單元通知直播流媒體解析單元5111從外部的源服務(wù)器獲取直播媒體流。后續(xù)過程中媒體 服務(wù)器51的具體工作方法參見上述的直播(組播)業(yè)務(wù)中的步驟1至4和終端52的具體 工作方法參見上述的直播(組播)業(yè)務(wù)中的步驟a)至e)。二、點(diǎn)播業(yè)務(wù)當(dāng)終端請求流媒體服務(wù)器播放點(diǎn)播內(nèi)容時(shí),包括如下處理首先,終端52和媒體服務(wù)器51之間通過信息交互,保證所采用的冗余編碼算法是 一致的,例如,終端52通過終端信令處理單元向媒體服務(wù)器51請求點(diǎn)播內(nèi)容描述信息;媒 體服務(wù)器51通過服務(wù)器信令處理單元返回點(diǎn)播內(nèi)容描述信息,該點(diǎn)播內(nèi)容描述信息包括 指示冗余編碼算法的信息;然后,終端信令處理單元設(shè)置終端的前向糾錯(cuò)解碼單元521所 使用的編碼算法,向媒體服務(wù)器51的服務(wù)器信令處理單元發(fā)送播放請求。然后,服務(wù)器信令處理單元通知本地媒體解析單元5113從本地媒體存儲單元 5112讀取本地的媒體數(shù)據(jù),本地媒體解析單元5113解析該本地媒體文件得到媒體數(shù)據(jù),將 得到的媒體數(shù)據(jù)以幀為單位發(fā)送給流媒體傳輸編碼單元513,以進(jìn)行打包傳輸。后續(xù)過程中 媒體服務(wù)器51的具體工作方法參見上述的直播(組播)業(yè)務(wù)中的步驟1至4和終端52的 具體工作方法參見上述的直播(組播)業(yè)務(wù)中的步驟a)至e)。本發(fā)明實(shí)施例提供的技術(shù)方案,在進(jìn)行糾錯(cuò)校驗(yàn)時(shí),發(fā)送端對不同類型幀的媒體 數(shù)據(jù)包采用不同的編碼冗余度,重要性較高的關(guān)鍵幀所采用的編碼冗余度大于重要性較低 的非關(guān)鍵幀所采用的編碼冗余度,接收端根據(jù)不同的編碼冗余度恢復(fù)傳輸中丟失的媒體數(shù) 據(jù)包,從而解決了現(xiàn)有技術(shù)中對所有類型幀的媒體數(shù)據(jù)包按照統(tǒng)一的冗余度進(jìn)行糾錯(cuò)校驗(yàn) 而帶來的問題。本發(fā)明實(shí)施例的技術(shù)方案在實(shí)現(xiàn)糾錯(cuò)校驗(yàn)時(shí),不但能夠有效利用傳輸帶寬, 顯著增強(qiáng)接收端對丟包數(shù)據(jù)的恢復(fù)能力,提高播放效果,且實(shí)現(xiàn)方法簡單,具有較大的可行 性。本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺 的方式來實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn) 的部分可以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如ROM/ RAM、磁碟、光盤等,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器, 或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何 熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵 蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種糾錯(cuò)校驗(yàn)方法,其特征在于,所述方法包括 獲知當(dāng)前幀的類型,所述幀包括關(guān)鍵幀和非關(guān)鍵幀;根據(jù)當(dāng)前幀的類型和冗余編碼策略確定當(dāng)前幀的編碼冗余度,其中,關(guān)鍵幀的編碼冗 余度大于非關(guān)鍵幀的編碼冗余度;利用所述確定的編碼冗余度為當(dāng)前幀生成糾錯(cuò)校驗(yàn)碼。
2.根據(jù)權(quán)利要求1所述的糾錯(cuò)校驗(yàn)方法,其特征在于,所述冗余編碼策略包括 采用統(tǒng)一的編碼冗余度對關(guān)鍵幀進(jìn)行冗余編碼,不對非關(guān)鍵幀進(jìn)行冗余編碼;或者, 當(dāng)傳輸帶寬不變時(shí),增加關(guān)鍵幀的編碼冗余度,降低非關(guān)鍵幀的編碼冗余度;或者,當(dāng)傳輸帶寬降低時(shí),保持關(guān)鍵幀當(dāng)前的編碼冗余度,降低非關(guān)鍵幀的編碼冗余度;或者,當(dāng)傳輸帶寬提高時(shí),增加關(guān)鍵幀的編碼冗余度,保持非關(guān)鍵幀當(dāng)前的編碼冗余度;或者,當(dāng)?shù)谝环顷P(guān)鍵幀在解碼端的解碼順序位于第二非關(guān)鍵幀之前時(shí),增加第一非關(guān)鍵幀的 編碼冗余度,降低第二非關(guān)鍵幀的編碼冗余度。
3.根據(jù)權(quán)利要求1所述的糾錯(cuò)校驗(yàn)方法,其特征在于,所述利用所述確定的編碼冗余 度為當(dāng)前幀生成糾錯(cuò)校驗(yàn)碼包括按照所述確定的編碼冗余度分別為當(dāng)前幀的各媒體數(shù)據(jù)包編碼集合生成糾錯(cuò)校驗(yàn)數(shù) 據(jù)包,所述編碼冗余度表示為(m,k),所述當(dāng)前幀由媒體數(shù)據(jù)包構(gòu)成,所述媒體數(shù)據(jù)包編碼 集合包括m個(gè)媒體數(shù)據(jù)包;利用所述糾錯(cuò)校驗(yàn)碼為所述各媒體數(shù)據(jù)包編碼集合生成k個(gè)糾錯(cuò)校驗(yàn)數(shù)據(jù)包,所述糾 錯(cuò)校驗(yàn)數(shù)據(jù)包包括包頭和所述糾錯(cuò)校驗(yàn)碼,該包頭包括所述媒體數(shù)據(jù)包編碼集合的標(biāo)識和 編碼冗余度。
4.根據(jù)權(quán)利要求3所述的糾錯(cuò)校驗(yàn)方法,其特征在于,所述方法還包括當(dāng)所述當(dāng)前幀由整數(shù)倍個(gè)媒體數(shù)據(jù)包編碼集合和η個(gè)剩余的媒體數(shù)據(jù)包組成時(shí),生成 m-n個(gè)缺省媒體數(shù)據(jù)包,并為由缺省媒體數(shù)據(jù)包和η個(gè)剩余的媒體數(shù)據(jù)包構(gòu)成的媒體數(shù)據(jù) 包編碼集合生成糾錯(cuò)校驗(yàn)數(shù)據(jù)包,其中η小于m。
5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的糾錯(cuò)校驗(yàn)方法,其特征在于,所述關(guān)鍵幀包括I 幀,所述非關(guān)鍵幀包括P幀和B幀。
6.一種糾錯(cuò)校驗(yàn)方法,其特征在于,所述方法包括當(dāng)前幀的媒體數(shù)據(jù)包丟失時(shí),獲取丟失的媒體數(shù)據(jù)包對應(yīng)的編碼冗余度,所述幀包括 關(guān)鍵幀和非關(guān)鍵幀,關(guān)鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗余度; 利用所述編碼冗余度恢復(fù)所述丟失的媒體數(shù)據(jù)包。
7.根據(jù)權(quán)利要求6所述的糾錯(cuò)校驗(yàn)方法,其特征在于,所述利用所述編碼冗余度恢復(fù) 所述丟失的媒體數(shù)據(jù)包括當(dāng)接收到的屬于同一媒體數(shù)據(jù)包編碼集合的媒體數(shù)據(jù)包和相應(yīng)的糾錯(cuò)校驗(yàn)數(shù)據(jù)包為m 個(gè)時(shí),利用所述接收到的媒體數(shù)據(jù)包和糾錯(cuò)校驗(yàn)數(shù)據(jù)包恢復(fù)所述丟失的媒體數(shù)據(jù)包,其中, 所述編碼冗余度表示為(m,k),所述媒體數(shù)據(jù)包編碼集合包括m個(gè)媒體數(shù)據(jù)包,所述糾錯(cuò)校 驗(yàn)數(shù)據(jù)包包括包頭和糾錯(cuò)校驗(yàn)碼,該包頭包括所述媒體數(shù)據(jù)包編碼集合的標(biāo)識和所述編碼 冗余度。
8.根據(jù)權(quán)利要求7所述的糾錯(cuò)校驗(yàn)方法,其特征在于,所述利用所述編碼冗余度恢復(fù) 所述丟失的媒體數(shù)據(jù)包括當(dāng)屬于同一媒體數(shù)據(jù)包編碼集合的媒體數(shù)據(jù)包的個(gè)數(shù)為η且η小于m時(shí),生成m-n個(gè) 缺省媒體數(shù)據(jù)包,利用接收到的屬于同一媒體數(shù)據(jù)包編碼集合的媒體數(shù)據(jù)包、相應(yīng)的糾錯(cuò) 校驗(yàn)數(shù)據(jù)包和生成的缺省媒體數(shù)據(jù)包恢復(fù)所述丟失的媒體數(shù)據(jù)包。
9.一種糾錯(cuò)校驗(yàn)裝置,其特征在于,所述裝置包括幀類型鑒別單元,用于獲知當(dāng)前幀的類型,所述幀包括關(guān)鍵幀和非關(guān)鍵幀; 確定單元,用于根據(jù)所述幀類型鑒別單元獲知的當(dāng)前幀的類型和冗余編碼策略確定當(dāng) 前幀的編碼冗余度,其中,關(guān)鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗余度;編碼單元,用于利用所述確定單元確定的編碼冗余度為當(dāng)前幀生成糾錯(cuò)校驗(yàn)碼。
10.根據(jù)權(quán)利要求9所述的糾錯(cuò)校驗(yàn)裝置,其特征在于,所述確定單元根據(jù)當(dāng)前幀的類 型和下述至少一種冗余編碼策略確定當(dāng)前幀的編碼冗余度采用統(tǒng)一的編碼冗余度對關(guān)鍵幀進(jìn)行冗余編碼,不對非關(guān)鍵幀進(jìn)行冗余編碼;或者, 當(dāng)傳輸帶寬不變時(shí),增加關(guān)鍵幀的編碼冗余度,降低非關(guān)鍵幀的編碼冗余度;或者, 當(dāng)傳輸帶寬降低時(shí),保持關(guān)鍵幀當(dāng)前的編碼冗余度,降低非關(guān)鍵幀的編碼冗余度;或者,當(dāng)傳輸帶寬提高時(shí),增加關(guān)鍵幀的編碼冗余度,保持非關(guān)鍵幀當(dāng)前的編碼冗余度;或者,當(dāng)?shù)谝环顷P(guān)鍵幀在解碼端的解碼順序位于第二非關(guān)鍵幀之前時(shí),增加第一非關(guān)鍵幀的 編碼冗余度,降低第二非關(guān)鍵幀的編碼冗余度。
11.一種終端設(shè)備,其特征在于,所述終端設(shè)備包括獲取單元,用于當(dāng)當(dāng)前幀的媒體數(shù)據(jù)包丟失時(shí),獲取丟失的媒體數(shù)據(jù)包對應(yīng)的編碼冗 余度,所述幀包括關(guān)鍵幀和非關(guān)鍵幀,關(guān)鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗余度;數(shù)據(jù)包恢復(fù)單元,用于利用所述獲取單元獲取到的編碼冗余度恢復(fù)所述丟失的媒體數(shù) 據(jù)包。
12.根據(jù)權(quán)利要求11所述的終端設(shè)備,其特征在于,所述數(shù)據(jù)包恢復(fù)單元,還用于當(dāng)接 收到的屬于同一媒體數(shù)據(jù)包編碼集合的媒體數(shù)據(jù)包和相應(yīng)的糾錯(cuò)校驗(yàn)數(shù)據(jù)包為m個(gè)時(shí),利 用所述接收到的媒體數(shù)據(jù)包和糾錯(cuò)校驗(yàn)數(shù)據(jù)包恢復(fù)所述丟失的媒體數(shù)據(jù)包,其中,所述編 碼冗余度表示為(m,k),所述媒體數(shù)據(jù)包編碼集合包括m個(gè)媒體數(shù)據(jù)包,所述糾錯(cuò)校驗(yàn)數(shù) 據(jù)包包括包頭和糾錯(cuò)校驗(yàn)碼,該包頭包括所述媒體數(shù)據(jù)包編碼集合的標(biāo)識和所述編碼冗余 度。
13.—種通信系統(tǒng),其特征在于,所述系統(tǒng)包括如權(quán)利要求9或10所述的糾錯(cuò)校驗(yàn)裝置 和/或如權(quán)利要求11或12所述的終端設(shè)備。
14.一種通信系統(tǒng),其特征在于,所述系統(tǒng)包括流媒體服務(wù)器和終端, 所述流媒體服務(wù)器包括流媒體解析單元,用于解析獲取到的媒體流得到媒體數(shù)據(jù),將媒體數(shù)據(jù)以幀為單位發(fā) 送至流媒體傳輸編碼單元,所述幀包括關(guān)鍵幀和非關(guān)鍵幀;冗余編碼策略單元,用于配置和存儲冗余編碼策略,以向流媒體傳輸編碼單元提供相 應(yīng)的編碼冗余度,其中,關(guān)鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗余度;流媒體傳輸編碼單元,用于根據(jù)來自所述流媒體解析單元的每幀媒體數(shù)據(jù)的類型,查 詢所述冗余編碼策略單元,獲知當(dāng)前幀的編碼冗余度,并將該媒體數(shù)據(jù)分割打包成媒體數(shù) 據(jù)包發(fā)送至前向糾錯(cuò)編碼單元;前向糾錯(cuò)編碼單元,用于按照所述當(dāng)前幀的編碼冗余度,為接收到的媒體數(shù)據(jù)包生成 糾錯(cuò)校驗(yàn)碼,將該編碼冗余度、糾錯(cuò)校驗(yàn)碼和媒體數(shù)據(jù)包通過網(wǎng)絡(luò)向終端發(fā)送; 所述終端包括前向糾錯(cuò)解碼單元,用于接收來自流媒體服務(wù)器的數(shù)據(jù),當(dāng)當(dāng)前幀的媒體數(shù)據(jù)包丟失 時(shí),獲取丟失的媒體數(shù)據(jù)包對應(yīng)的編碼冗余度,利用所述編碼冗余度解碼并恢復(fù)所述丟失 的媒體數(shù)據(jù)包,將該媒體數(shù)據(jù)包發(fā)送至媒體播放單元;媒體播放單元,用于從來自所述前向糾錯(cuò)解碼單元的媒體數(shù)據(jù)包中提取媒體數(shù)據(jù)并播放。
15.根據(jù)權(quán)利要求14所述的通信系統(tǒng),其特征在于,所述流媒體解析單元包括直播流媒體解析單元,用于接收直播媒體流并解析得到直 播媒體數(shù)據(jù),將該直播媒體數(shù)據(jù)以幀為單位發(fā)送至流媒體傳輸編碼單元;和/或所述流媒體解析單元包括本地媒體存儲單元,用于存儲本地的媒體文件;本地媒體 解析單元,用于讀取所述本地媒體存儲單元中的媒體文件并解析得到本地媒體數(shù)據(jù),將該 本地媒體數(shù)據(jù)以幀為單位發(fā)送至流媒體傳輸編碼單元。
全文摘要
本發(fā)明公開了一種糾錯(cuò)校驗(yàn)方法、設(shè)備和系統(tǒng),涉及流媒體數(shù)據(jù)處理技術(shù),能夠有效利用傳輸帶寬,顯著增強(qiáng)接收端對丟包數(shù)據(jù)的恢復(fù)能力,提高播放效果,且實(shí)現(xiàn)方法簡單,具有較大的可行性。本發(fā)明實(shí)施例提供的方法包括獲知當(dāng)前幀的類型,所述幀包括關(guān)鍵幀和非關(guān)鍵幀;根據(jù)當(dāng)前幀的類型和冗余編碼策略確定當(dāng)前幀的編碼冗余度,其中,關(guān)鍵幀的編碼冗余度大于非關(guān)鍵幀的編碼冗余度;利用所述確定的編碼冗余度為當(dāng)前幀生成糾錯(cuò)校驗(yàn)碼。本發(fā)明適用于對各種編碼格式的媒體數(shù)據(jù)進(jìn)行糾錯(cuò)校驗(yàn)的場合。
文檔編號H04N21/647GK102143367SQ20101010951
公開日2011年8月3日 申請日期2010年1月30日 優(yōu)先權(quán)日2010年1月30日
發(fā)明者兌繼英 申請人:華為技術(shù)有限公司