專利名稱:一種基于柯西rs編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法
技術(shù)領(lǐng)域:
本發(fā)明涉及音視頻數(shù)據(jù)網(wǎng)絡(luò)傳輸領(lǐng)域,具體涉及一種基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法。
背景技術(shù):
目前國內(nèi)外在網(wǎng)絡(luò)數(shù)據(jù)可靠傳輸研究方面已經(jīng)取得了諸多成果,如自動重傳機(jī)制(ARQ)、無需重傳的前向糾錯編碼算法(FEC)或者結(jié)合自動重傳和前向糾錯的實(shí)現(xiàn)機(jī)制,其中FEC的實(shí)現(xiàn)又有多種方法,如Turbo碼、Pro-MPEG CoP3碼、Raptor碼和RS碼等。自動重傳機(jī)制(ARQ)即當(dāng)接收端檢測到數(shù)據(jù)包丟失時需要發(fā)送重傳請求給發(fā)送端,發(fā)送端根據(jù)接收到的重傳請求包再次發(fā)送需要重傳的數(shù)據(jù)包。這種方法原理上簡單,但實(shí)現(xiàn)上存在諸多問題,如需要在發(fā)送端緩存已經(jīng)發(fā)送的但還未進(jìn)行確認(rèn)的數(shù)據(jù)包,直到被確認(rèn)或需要進(jìn)行重傳;并且當(dāng)應(yīng)用于復(fù)雜的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)(如存在多級路由的網(wǎng)絡(luò)環(huán)境),或者運(yùn)用于諸如深空通信領(lǐng)域之類的高延時高丟包率環(huán)境時,重傳數(shù)據(jù)會引入較大的延時,這在實(shí)時性要求較高的視頻系統(tǒng)領(lǐng)域是無法令人接受的。FEC (Forward Error Correction,前向糾錯)是一種基于差錯和糾錯編碼的數(shù)據(jù)編碼技術(shù),通信領(lǐng)域中常使用它對通信過程中出現(xiàn)的差錯進(jìn)行糾正。FEC是一種很好的適用于實(shí)時視頻應(yīng)用的丟包恢復(fù)策略。Raptor碼是FEC編碼方法中的一種,其主要思想是采用兩步編碼方法,首先用傳統(tǒng)糾刪碼對源符號進(jìn)行預(yù)編碼,生成中間符號,然后對中間符號采用弱化的LT進(jìn)行再次編碼,最終生成編碼符號。這樣實(shí)現(xiàn)編碼時需要對源符號做兩次運(yùn)算,并且兩次運(yùn)算是不同的運(yùn)算,實(shí)現(xiàn)起來會比較復(fù)雜。
發(fā)明內(nèi)容
本發(fā)明提供了一種基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法,操作簡單,易于實(shí)現(xiàn),可以高效率地恢復(fù)在網(wǎng)絡(luò)傳輸過程中丟失的視頻幀數(shù)據(jù)包?!N基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法,包括以下步驟:a、預(yù)先定義一個柯西RS生成矩陣;該柯西RS生成矩陣的行數(shù)大于每一幀視頻幀的數(shù)據(jù)包數(shù);b、將壓縮后的視頻幀數(shù)據(jù)打包成符合網(wǎng)絡(luò)應(yīng)用層協(xié)議的數(shù)據(jù)包序列;C、動態(tài)選取所述柯西RS生成矩陣的柯西子矩陣,利用選取出的柯西子矩陣,通過一次矩陣運(yùn)算對各視頻幀的數(shù)據(jù)包序列進(jìn)行兩次柯西RS編碼得到對應(yīng)的校驗(yàn)包;所述兩次柯西RS編碼包括:c-Ι、每一視頻幀的數(shù)據(jù)包序列與對應(yīng)的柯西子矩陣進(jìn)行運(yùn)算生成一次校驗(yàn)包;c-2、將所有視頻幀分成若干視頻幀組,各個視頻幀組中的所有數(shù)據(jù)包序列與對應(yīng)的柯西子矩陣進(jìn)行運(yùn)算生成二次校驗(yàn)包;d、對步驟b數(shù)據(jù)包序列中的所有數(shù)據(jù)包和步驟c中的一次校驗(yàn)包做對角交織,生成交織后亂序的數(shù)據(jù)包和一次校驗(yàn)包序列;進(jìn)行對角交織時,在數(shù)據(jù)包和一次校驗(yàn)包所構(gòu)成的陣列中,若最后一行的末尾包含空位,則該空位不參與對角交織時的循環(huán)移位;e、將二次校驗(yàn)包序列、亂序的數(shù)據(jù)包和一次校驗(yàn)包序列發(fā)送至網(wǎng)絡(luò);f、從網(wǎng)絡(luò)接收所述二次校驗(yàn)包序列、亂序的數(shù)據(jù)包和一次校驗(yàn)包序列,根據(jù)步驟d對角交織的逆過程,對亂序的數(shù)據(jù)包和一次校驗(yàn)包序列重新排序;g、根據(jù)所述二次校驗(yàn)包序列以及重新排序后的數(shù)據(jù)包和一次校驗(yàn)包序列判斷是否有數(shù)據(jù)包丟失,如果沒有數(shù)據(jù)包丟失,則將接收到的數(shù)據(jù)包送至視頻解碼器解碼;如果有數(shù)據(jù)包丟失,則利用一次校驗(yàn)包或者二次校驗(yàn)包對丟失的數(shù)據(jù)包進(jìn)行恢復(fù)后,與接收到的數(shù)據(jù)包一起送至視頻解碼器解碼。所述步驟g中丟失的數(shù)據(jù)包恢復(fù)具體操作如下:g_l、針對每一視頻幀組中的各個視頻幀,如果該視頻幀的數(shù)據(jù)包丟失數(shù)量小于等于正確接收到的該視頻幀對應(yīng)的一次校驗(yàn)包的數(shù)量,則將接收到的該視頻幀的數(shù)據(jù)包和一次校驗(yàn)包序列與該視頻幀對應(yīng)的柯西RS子矩陣的逆矩陣相乘做一次解碼恢復(fù)丟失的數(shù)據(jù)包;g_2、針對每一視頻幀組中的所有視頻幀,如果經(jīng)過步驟g-Ι后該視頻幀組中尚未恢復(fù)的數(shù)據(jù)包丟失數(shù)量小于等于正確接收到的該視頻幀組對應(yīng)的二次校驗(yàn)包的數(shù)量,則將接收到的該視頻幀組的數(shù)據(jù)包和二次校驗(yàn)包序列與該視頻幀組對應(yīng)的柯西RS子矩陣的逆矩陣相乘做二次解碼恢復(fù)丟失的數(shù)據(jù)包。經(jīng)過步驟g-Ι后,每一視頻幀組中已有部分丟失的數(shù)據(jù)包利用一次校驗(yàn)包進(jìn)行了恢復(fù),將沒有恢復(fù)的丟失的數(shù)據(jù)包的數(shù)量與正確接收到的視頻幀組對應(yīng)的二次校驗(yàn)包的數(shù)量做比較,如果尚未恢復(fù)的數(shù)據(jù)包丟失數(shù)量小于等于正確接收到的該視頻幀組對應(yīng)的二次校驗(yàn)包的數(shù)量,則利用二次校驗(yàn)包進(jìn)行丟失數(shù)據(jù)包的恢復(fù),如果尚未恢復(fù)的數(shù)據(jù)包丟失數(shù)量大于正確接收到的該視頻幀組對應(yīng)的二次校驗(yàn)包的數(shù)量,則不能實(shí)現(xiàn)對丟失的數(shù)據(jù)包的恢復(fù)。相對于自動重傳機(jī)制,本發(fā)明充分利用了 FEC丟包恢復(fù)算法適用于實(shí)時視頻應(yīng)用的優(yōu)點(diǎn),能夠在不進(jìn)行重傳的前提下實(shí)現(xiàn)丟失包的實(shí)時恢復(fù)。相對于Raptor碼之類的FEC丟包恢復(fù)算法,本發(fā)明的原理簡單,且算法實(shí)現(xiàn)過程中的兩次編碼是同種類型的運(yùn)算,因此可以通過一次運(yùn)算來實(shí)現(xiàn)兩次編碼生成所需的校驗(yàn)包序列,實(shí)現(xiàn)容易,充分利用交織引入的延時,在增加少量校驗(yàn)包和延時的情況下,能夠明顯提高接收端丟失的數(shù)據(jù)包恢復(fù)率。
圖1為本發(fā)明基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法流程示意圖;圖2為本發(fā)明基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法對角交織時的示意圖;圖3為本發(fā)明基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法中丟失數(shù)據(jù)包恢復(fù)過程流程圖。
具體實(shí)施例方式下面結(jié)合附圖,對本發(fā)明基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法做詳細(xì)描述。如圖1所示,基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法,首先,將攝像頭采集到的視頻數(shù)字信號通過視頻編解碼標(biāo)準(zhǔn)(如H.264)編碼壓縮后得到視頻幀數(shù)據(jù)VFn,經(jīng)過網(wǎng)絡(luò)應(yīng)用層協(xié)議打包成數(shù)據(jù)包序列Sn= [S1 S2-Sk];然后對Sn做兩次柯西RS編碼;為了增強(qiáng)在連續(xù)數(shù)據(jù)包丟失環(huán)境下的恢復(fù)率,本發(fā)明在對各個視頻幀做完兩次柯西RS編碼之后,對多個視頻幀數(shù)據(jù)包序列和各個視頻幀對應(yīng)的一次校驗(yàn)包序列做對角交織,使數(shù)據(jù)包序列和對應(yīng)的一次校驗(yàn)包序列亂序;做完對角交織后,將數(shù)據(jù)包和校驗(yàn)包發(fā)送到IP網(wǎng)絡(luò)上,網(wǎng)絡(luò)的接收端接收到當(dāng)前視頻幀組中的所有數(shù)據(jù)包之后,根據(jù)解交織和解碼恢復(fù)過程來恢復(fù)丟失的數(shù)據(jù)包,最后將恢復(fù)出來的數(shù)據(jù)包和接收到的數(shù)據(jù)包重新組成一幀視頻數(shù)據(jù)發(fā)送給解碼器進(jìn)行視頻解壓縮解碼,具體實(shí)現(xiàn)過程如下:a、預(yù)先定義一個柯西RS生成矩陣如下,該柯西RS生成矩陣的行數(shù)大于每一幀視
頻幀的數(shù)據(jù)包數(shù);
權(quán)利要求
1.一種基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法,其特征在于,包括以下步驟: a、預(yù)先定義一個柯西RS生成矩陣; b、將壓縮后的視頻幀數(shù)據(jù)打包成符合網(wǎng)絡(luò)應(yīng)用層協(xié)議的數(shù)據(jù)包序列; C、動態(tài)選取所述柯西RS生成矩陣的柯西子矩陣,利用選取出的柯西子矩陣,通過一次矩陣運(yùn)算對各視頻幀的數(shù)據(jù)包序列進(jìn)行兩次柯西RS編碼得到對應(yīng)的校驗(yàn)包; 所述兩次柯西RS編碼包括: c-1、每一視頻幀的數(shù)據(jù)包序列與對應(yīng)的柯西子矩陣進(jìn)行運(yùn)算生成一次校驗(yàn)包; c-2、將所有視頻幀分成若干視頻幀組,各個視頻幀組中的所有數(shù)據(jù)包序列與對應(yīng)的柯西子矩陣進(jìn)行運(yùn)算生成二次校驗(yàn)包; d、對步驟b數(shù)據(jù)包序列中的所有數(shù)據(jù)包和步驟c中的一次校驗(yàn)包做對角交織,生成交織后亂序的數(shù)據(jù)包和一次校驗(yàn)包序列; e、將二次校驗(yàn)包序列、亂序的數(shù)據(jù)包和一次校驗(yàn)包序列發(fā)送至網(wǎng)絡(luò); f、從網(wǎng)絡(luò)接收所述二次校驗(yàn)包序列、亂序的數(shù)據(jù)包和一次校驗(yàn)包序列,根據(jù)步驟d對角交織的逆過程,對亂序的數(shù)據(jù)包和一次校驗(yàn)包序列重新排序; g、根據(jù)所述二次校驗(yàn)包序列以及重新排序后的數(shù)據(jù)包和一次校驗(yàn)包序列判斷是否有數(shù)據(jù)包丟失,如果沒有數(shù)據(jù)包丟失,則將接收到的數(shù)據(jù)包送至視頻解碼器解碼;如果有數(shù)據(jù)包丟失,則利用一次校驗(yàn)包或者二次校驗(yàn)包對丟失的數(shù)據(jù)包進(jìn)行恢復(fù)后,與接收到的數(shù)據(jù)包一起送至視頻解碼器解碼。
2.如權(quán)利要求1所述的基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟a中定義的柯西RS生成矩陣的行數(shù)大于每一幀視頻幀的數(shù)據(jù)包數(shù)。
3.如權(quán)利要求1所述的基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟d中進(jìn)行對角交織時,在數(shù)據(jù)包和一次校驗(yàn)包所構(gòu)成的陣列中,若最后一行的末尾包含空位,則該空位不參與對角交織時的循環(huán)移位。
4.如權(quán)利要求1所述的基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法,其特征在于,所述步驟g中丟失的數(shù)據(jù)包恢復(fù)具體操作如下: g-Ι、針對每一視頻幀組中的各個視頻幀,如果該視頻幀的數(shù)據(jù)包丟失數(shù)量小于等于正確接收到的該視頻幀對應(yīng)的一次校驗(yàn)包的數(shù)量,則將接收到的該視頻幀的數(shù)據(jù)包和一次校驗(yàn)包序列與該視頻幀對應(yīng)的柯西RS子矩陣的逆矩陣相乘做一次解碼恢復(fù)丟失的數(shù)據(jù)包; g-2、針對每一視頻幀組中的所有視頻幀,如果經(jīng)過步驟g-Ι后該視頻幀組中尚未恢復(fù)的數(shù)據(jù)包丟失數(shù)量小于等于正確接收到的該視頻幀組對應(yīng)的二次校驗(yàn)包的數(shù)量,則將接收到的該視頻幀組的數(shù)據(jù)包和二次校驗(yàn)包序列與柯西RS子矩陣的逆矩陣相乘做二次解碼恢復(fù)丟失的數(shù)據(jù)包。
全文摘要
本發(fā)明公開了一種基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法,包括以下步驟預(yù)先定義一個柯西RS生成矩陣,利用該柯西RS生成矩陣對各個視頻幀做兩次柯西RS編碼之后,對多個視頻幀數(shù)據(jù)包序列和各個視頻幀對應(yīng)的一次校驗(yàn)包序列做對角交織,使數(shù)據(jù)包序列和對應(yīng)的一次校驗(yàn)包序列亂序;做完對角交織后,將數(shù)據(jù)包和校驗(yàn)包發(fā)送到至網(wǎng)絡(luò),網(wǎng)絡(luò)的接收端接收到當(dāng)前視頻幀組中的所有數(shù)據(jù)包之后,利用一次校驗(yàn)包或者二次校驗(yàn)包對丟失的數(shù)據(jù)包進(jìn)行恢復(fù),將恢復(fù)出來的數(shù)據(jù)包和接收到的數(shù)據(jù)包重新組成視頻數(shù)據(jù)后進(jìn)行解碼。本發(fā)明基于柯西RS編碼的視頻幀數(shù)據(jù)網(wǎng)絡(luò)傳輸方法,操作簡單,易于實(shí)現(xiàn),可以高效率地恢復(fù)在網(wǎng)絡(luò)傳輸過程中丟失的視頻幀數(shù)據(jù)包。
文檔編號H04N21/647GK103152652SQ20131008523
公開日2013年6月12日 申請日期2013年3月15日 優(yōu)先權(quán)日2013年3月15日
發(fā)明者蔣榮欣, 李洪, 周凡, 陳耀武 申請人:浙江大學(xué)