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