本發(fā)明涉及信息處理領(lǐng)域,尤其涉及一種實時媒體流丟包補(bǔ)償方法。
背景技術(shù):
:目前,隨著移動互聯(lián)網(wǎng)的發(fā)展,各種基于互聯(lián)網(wǎng)通訊的APP廣泛應(yīng)用,而這些APP都不可避免要面對互聯(lián)網(wǎng)上傳輸實時流媒體的丟包問題,而丟包是影響音視頻質(zhì)量的主要因素?;ヂ?lián)網(wǎng)丟包的特點:1、瞬時丟包:丟包不嚴(yán)重,偶爾丟1到3個包,如圖1,此種情況對語音質(zhì)量影響較小。2、連續(xù)隨機(jī)丟包:丟包較嚴(yán)重,影響到語音質(zhì)量,如圖2,此種丟包完全可以通過FEC技術(shù)恢復(fù)丟包。解決丟包問題的現(xiàn)有方法有兩種,服務(wù)器間拉專線或者流媒體發(fā)送端靜態(tài)發(fā)送冗余包。拉專線是解決丟包的有效方法,但成本高,維護(hù)困難;發(fā)送端靜態(tài)發(fā)送冗余包,占用帶寬增倍,帶寬成本高。技術(shù)實現(xiàn)要素:為了克服現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種實時媒體流丟包補(bǔ)償方法,從而解決丟包補(bǔ)償與低成本的問題。本發(fā)明的目的采用以下技術(shù)方案實現(xiàn):一種實時媒體流丟包補(bǔ)償方法,包括:接收方實時檢測丟包的步驟;當(dāng)接收方檢測到丟包后,接收方發(fā)送平滑丟包率給發(fā)送方的步驟;發(fā)送方根據(jù)接收的平滑丟包率大小選擇相應(yīng)冗余倍數(shù),并根據(jù)選擇的冗余倍數(shù)發(fā)送相應(yīng)冗余包的步驟;接收方根據(jù)接收的冗余包恢復(fù)數(shù)據(jù)的步驟。優(yōu)選的,所述接收方實時檢測丟包的步驟具體為接收方動態(tài)實時檢測丟包。優(yōu)選的,所述接收方動態(tài)實時檢測丟包的步驟具體為:在無丟包模式下,進(jìn)行高頻率的檢測,當(dāng)檢測到有丟包之后,丟包檢測的間隔相對于無丟包模式下的檢測間隔變大。優(yōu)選的,所述平滑丟包率的計算規(guī)則為:當(dāng)前狀態(tài)在無丟包模式下,檢測到有丟包,則平滑丟包率固定為100%以啟動最大冗余;當(dāng)前狀態(tài)在丟包模式下,按照歷史的平滑丟包率與當(dāng)前實時丟包率與平滑系數(shù)做運算,得出平滑丟包率,計算公式為:當(dāng)前平滑丟包率=上次平滑丟包率*a+當(dāng)前實時丟包率*(1-a),a為平滑系數(shù)。優(yōu)選的,所述a設(shè)定為0.7。優(yōu)選的,所述當(dāng)接收方檢測到丟包后,接收方發(fā)送平滑丟包率給發(fā)送方的步驟中,采用確認(rèn)機(jī)制,該確認(rèn)機(jī)制具體為:接收方發(fā)送平滑丟包率給發(fā)送方時,如發(fā)送方收到平滑丟包率,發(fā)送方則發(fā)送確認(rèn)信息給接收方,若接收方?jīng)]有收到確定信息則加速重傳。優(yōu)選的,所述加速重傳,具體為,在第一設(shè)定時間段內(nèi),判斷接收方是否收到確定信息,若接收方?jīng)]有收到確認(rèn)信息,接收方重新發(fā)送平滑丟包率給發(fā)送方,然后在第二設(shè)定時間段內(nèi),繼續(xù)判斷接收方是否收到確定信息,若接收方?jīng)]有收到確認(rèn)信息,接收方重新發(fā)送平滑丟包率給發(fā)送方,然后在第三設(shè)定時間段內(nèi),繼續(xù)判斷接收方是否收到確定信息,若接收方?jīng)]有收到確認(rèn)信息,接收方重新發(fā)送平滑丟包率給發(fā)送方,且第二設(shè)定時間段小于第一時間段,第三設(shè)定時間段小于第二設(shè)定時間段。優(yōu)選的,所述第一設(shè)定時間段為30ms,所述第二設(shè)定時間段為20ms,所述第三設(shè)定時間段為10ms。優(yōu)選的,所述發(fā)送方根據(jù)接收的平滑丟包率大小選擇相應(yīng)冗余倍數(shù),具體為平滑丟包率越高,則選擇的冗余倍數(shù)越高。優(yōu)選的,所述接收方根據(jù)接收的冗余包恢復(fù)數(shù)據(jù)的步驟,具體為:以接收端的接收緩存匹配對冗余包進(jìn)行智能判斷,即在冗余倍數(shù)高的情況下,每一個傳輸丟包有多次的恢復(fù)機(jī)會,在恢復(fù)數(shù)據(jù)時,將發(fā)送緩存后接收的冗余包與前面接收的冗余包進(jìn)行對比,從而將后接收的冗余包內(nèi)與前面接收的冗余包內(nèi)重復(fù)的傳輸丟包刪除。相比現(xiàn)有技術(shù),本發(fā)明的有益效果在于:本發(fā)明技術(shù)方案采用動態(tài)的丟包補(bǔ)償,即在有丟包的情況下,立刻發(fā)送冗余包,無丟包的情況下不需發(fā)送冗余包,發(fā)送方不必一直發(fā)送冗余包,只有在發(fā)現(xiàn)丟包的情況下才啟動丟包補(bǔ)償機(jī)制,而無丟包的情況下能夠關(guān)閉丟包補(bǔ)償機(jī)制,從而很好地解決了丟包補(bǔ)償與低成本的問題。而丟包檢測的間隔相對于無丟包模式下的檢測間隔變大,在于減少由于丟包率的變動而接收方頻繁通知發(fā)送方的次數(shù)。從而進(jìn)一步降低帶寬成本。而確認(rèn)機(jī)制,能保證丟包率的通知順利到達(dá)發(fā)送方,加速重傳,可以確保丟包在最壞的情況仍然可以恢復(fù)。附圖說明圖1為現(xiàn)有技術(shù)中瞬時丟包的示意圖;圖2為現(xiàn)有技術(shù)中連續(xù)隨機(jī)丟包的示意圖;圖3為網(wǎng)絡(luò)通信原型圖;圖4為本發(fā)明具體實施所述的實時媒體流丟包補(bǔ)償方法的原理圖;圖5為本發(fā)明具體實施所述的丟包補(bǔ)償方法的原理框圖;圖6為本發(fā)明具體實施所述的動態(tài)實時丟包檢測通知流程圖;圖7為本發(fā)明具體實施所述的丟包率平滑示意圖;圖8為本發(fā)明具體實施所述的加速通知確認(rèn)機(jī)制示意圖;圖9為本發(fā)明具體實施所述的接收方恢復(fù)數(shù)據(jù)包中丟包恢復(fù)示意框圖。具體實施方式下面,結(jié)合附圖以及具體實施方式,對本發(fā)明做進(jìn)一步描述:一種實時媒體流丟包補(bǔ)償方法,包括:接收方實時檢測丟包的步驟;當(dāng)接收方檢測到丟包后,接收方發(fā)送平滑丟包率給發(fā)送方的步驟;發(fā)送方根據(jù)接收的平滑丟包率大小選擇相應(yīng)冗余倍數(shù),并根據(jù)選擇的冗余倍數(shù)發(fā)送相應(yīng)冗余包的步驟;接收方根據(jù)接收的冗余包恢復(fù)數(shù)據(jù)的步驟。在丟包檢查中接收端設(shè)定一個固定的丟包檢測定時器。本方法應(yīng)用的環(huán)境如圖3所示。優(yōu)選的,對流媒體進(jìn)行動態(tài)實時檢查,動態(tài)丟包補(bǔ)償方法,如圖4所示,主要分為四個步驟:接收方動態(tài)實時丟包檢測、接收方通知發(fā)送方平滑丟包率、發(fā)送方發(fā)送冗余數(shù)據(jù)包和接收方恢復(fù)數(shù)據(jù)包。下文結(jié)合一個具體的實施方式對該動態(tài)丟包補(bǔ)償方法工作原理進(jìn)行說明:在沒有丟包的場景下,接收端設(shè)定一個80毫秒的丟包檢測定時器,如果在這個時間內(nèi)檢測到任何丟包,則馬上通知發(fā)送端一個很大的丟包率(如100%),發(fā)送方收到此通知后,立刻啟用丟包補(bǔ)償機(jī)制,發(fā)送最大冗余倍數(shù)(如5倍)媒體包??紤]到接收端通知到發(fā)送端一般延時20ms,5倍的冗余包能夠在最壞的情況下,80毫秒的數(shù)據(jù)包中序號最前的丟包也可以恢復(fù)出來。如圖5所示,詳細(xì)的描述了此丟包補(bǔ)償機(jī)制的流程。整個流程中假設(shè)1號包發(fā)送接收成功,丟包率為0,后續(xù)的2、3和4號包全部被丟棄,5號包到達(dá)后,丟包檢測80毫秒超時計算,發(fā)現(xiàn)丟包率為75%(4個包中丟了三個),接收方馬上通知發(fā)送方。假設(shè)通知的過程用了20ms,這時正在發(fā)送7號包,7號包冗余2、3、4、5和6號包發(fā)送,如果7號包在接收方成功到達(dá),則可以恢復(fù)2、3、4和6號包。8號包繼續(xù)冗余前5包,即3、4、5、6和7號包,如果7號包也被丟棄,8號包成功接受,恢復(fù)3、4、6和7號包,丟棄的2號包已不能通過冗余恢復(fù)。所以此方法能夠如保證100%恢復(fù)的能力下最大抗連續(xù)丟包為3個。優(yōu)選的,接收方動態(tài)實時檢測丟包的步驟如圖6所示具體為:在無丟包模式下,進(jìn)行高頻率的檢測,當(dāng)檢測到有丟包之后,丟包檢測的間隔相對于無丟包模式下的檢測間隔變大。接收方在接收數(shù)據(jù)包同時每隔一個時間段計算一個丟包率,這個時間段根據(jù)不同情況動態(tài)改變。在無丟包模式下,保持高頻率的檢測,比如每80毫秒檢測一次,對于G72920毫秒打包編碼的媒體包,也就是4個包的間隔。當(dāng)檢測到有丟包之后,丟包檢測的間隔變大,比如變?yōu)?00ms,也就是25個包的間隔。此目的在于減少由于丟包率的變動而接收方頻繁通知發(fā)送方的次數(shù)。接收方檢測到任何丟包,立刻發(fā)送一個平滑丟包率給發(fā)送方,發(fā)送方根據(jù)平滑丟包率大小發(fā)送相應(yīng)倍數(shù)的冗余包。優(yōu)選的,平滑丟包率計算規(guī)則為,當(dāng)前狀態(tài)在無丟包模式下,檢測到有丟包,則平滑丟包率固定為100%以啟動最大冗余,盡可能的恢復(fù)在這次檢測中的丟包;當(dāng)前狀態(tài)在丟包模式下,按照歷史的平滑丟包率與當(dāng)前實時丟包率與平滑系數(shù)做運算,得出平滑丟包率,計算公式為:當(dāng)前平滑丟包率=上次平滑丟包率*a+當(dāng)前實時丟包率*(1-a)。a為平滑系數(shù),根據(jù)經(jīng)驗調(diào)整大小,經(jīng)實際環(huán)境驗證,優(yōu)選的,該參數(shù)設(shè)置為0.7后,效果比較明顯。丟包率平滑如圖7所示。優(yōu)選的,當(dāng)接收方檢測到丟包后,接收方發(fā)送平滑丟包率給發(fā)送方的步驟中,采用確認(rèn)機(jī)制,該確認(rèn)機(jī)制具體為:接收方發(fā)送平滑丟包率給發(fā)送方時,如發(fā)送方收到平滑丟包率,發(fā)送方則發(fā)送確認(rèn)信息給接收方,若接收方?jīng)]有收到確定信息則加速重傳。優(yōu)選的,加速重傳,具體為,在第一設(shè)定時間段內(nèi),判斷接收方是否收到確定信息,若接收方?jīng)]有收到確認(rèn)信息,接收方重新發(fā)送平滑丟包率給發(fā)送方,然后在第二設(shè)定時間段內(nèi),繼續(xù)判斷接收方是否收到確定信息,若接收方?jīng)]有收到確認(rèn)信息,接收方重新發(fā)送平滑丟包率給發(fā)送方,然后在第三設(shè)定時間段內(nèi),繼續(xù)判斷接收方是否收到確定信息,若接收方?jīng)]有收到確認(rèn)信息,接收方重新發(fā)送平滑丟包率給發(fā)送方,且第二設(shè)定時間段小于第一時間段,第三設(shè)定時間段小于第二設(shè)定時間段。優(yōu)選的,第一設(shè)定時間段為30ms,第二設(shè)定時間段為20ms,第三設(shè)定時間段為10ms。具體的為:接收方通知發(fā)送方的機(jī)制采用快速重傳確認(rèn)機(jī)制如圖8所示,在丟包的網(wǎng)絡(luò)環(huán)境下,不能保證通知反饋包一定要順利到達(dá)對方。這時,采用確認(rèn)機(jī)制。在沒有收到發(fā)送方的確認(rèn)信息,加速重傳(第一次是30ms,第二次是20ms,第三次是10ms)。30ms的設(shè)計目的在于普通的網(wǎng)絡(luò)環(huán)境下,兩節(jié)點的回環(huán)傳輸時間是30ms。如果30ms內(nèi)沒收到,則這個包可能在傳輸過程中丟棄。所以馬上啟用重傳。以后的每次重傳間隔在上一次壓縮10ms,保證通知快速的通知對方。這樣確保丟包在最壞80ms的情況還可以恢復(fù)。優(yōu)選的,發(fā)送方根據(jù)接收的平滑丟包率大小選擇相應(yīng)冗余倍數(shù),具體發(fā)送方根據(jù)接收方的丟包情況,選擇不同的冗余倍數(shù)。隨著丟包率越高,冗余倍數(shù)越高。這樣設(shè)計的目的在于在保證恢復(fù)效果的前提下,盡量的減輕由于冗余給網(wǎng)絡(luò)帶來的負(fù)載壓力。在丟包與網(wǎng)絡(luò)壓力兩者之間尋求最佳的平衡點。目前丟包與冗余倍數(shù)的階梯如表1所示,總共分六級。適當(dāng)?shù)那闆r下,可以增加階梯。表1丟包率與冗余對照表階梯號平滑丟包率百分比前向冗余倍數(shù)1002<=513<=1024<=3035<=5046>505優(yōu)選的,所述接收方根據(jù)接收的冗余包恢復(fù)數(shù)據(jù)的步驟,具體為:以接收端的接收緩存匹配對冗余包進(jìn)行智能判斷,即在冗余倍數(shù)高的情況下,每一個傳輸丟包有多次的恢復(fù)機(jī)會,在恢復(fù)數(shù)據(jù)時,將發(fā)送緩存后接收的冗余包與前面接收的冗余包進(jìn)行對比,從而將后接收的冗余包內(nèi)與前面接收的冗余包內(nèi)重復(fù)的傳輸丟包刪除。在媒體數(shù)據(jù)接收端,在冗余5倍的情況下,每一個傳輸丟包最多有5次的恢復(fù)機(jī)會。在冗余包恢復(fù)的過程中,不是把所有的冗余包都恢復(fù),而是智能的判斷,以接收端的接收緩存匹配。如圖9所示,最先的丟包7號包,是在接收端的第一個冗余包中恢復(fù)出來,也就是10號包。后續(xù)的冗余包12號包中盡管還保留著7號包的信息,但是在10號包中已經(jīng)恢復(fù)。收到12號包后,把7號的冗余內(nèi)容去除。對于7號包而言,8、9、10、11和12這五個包都擁有7號包的信息,但8和9這個包在傳輸?shù)倪^程中也丟失。在最先到達(dá)的10號恢復(fù)7號包。對本領(lǐng)域的技術(shù)人員來說,可根據(jù)以上描述的技術(shù)方案以及構(gòu)思,做出其它各種相應(yīng)的改變以及形變,而所有的這些改變以及形變都應(yīng)該屬于本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。當(dāng)前第1頁1 2 3