專利名稱:一種媒體數(shù)據(jù)包丟包恢復(fù)的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及交互式網(wǎng)絡(luò)電視(IPTV, Internet Protocol Television)領(lǐng)域的丟包 恢復(fù)技術(shù),尤其涉及一種媒體數(shù)據(jù)包丟包恢復(fù)的方法及系統(tǒng)。
背景技術(shù):
在IPTV業(yè)務(wù)中,媒體數(shù)據(jù)包由流媒體服務(wù)器到客戶端的傳輸質(zhì)量,直接影響著用 戶的視頻觀看效果。如果在傳輸過程中出現(xiàn)媒體數(shù)據(jù)包丟失的情況,則視頻畫面就會出現(xiàn) 停頓或馬賽克花屏的情況,這嚴(yán)重影響了用戶的使用體驗。因此,如何保證媒體數(shù)據(jù)包的傳 輸質(zhì)量,以給用戶提供高質(zhì)量的視頻觀看效果,是IPTV領(lǐng)域面臨的關(guān)鍵技術(shù)問題。
傳統(tǒng)的傳輸控制協(xié)議(TCP)傳輸方式提供自動丟包重傳功能,但是其丟包重傳機 制是必不可少的,即如果有一個數(shù)據(jù)包丟失,則整個傳輸過程將會被堵塞,直到該數(shù)據(jù)包傳 輸完成,因此TCP傳輸方式不適合實時的流媒體傳輸。相對而言,用戶數(shù)據(jù)報協(xié)議(UDP)傳 輸方式則更適合于實時的流媒體傳輸。IPTV系統(tǒng)采用UDP傳輸方式時,存在兩種常見的丟 包恢復(fù)技術(shù),即重傳技術(shù)和前向糾錯(FEC)技術(shù)。采用重傳技術(shù),帶來的開銷比較有限,因 為只重傳丟失的媒體數(shù)據(jù)包;但是,帶來的相關(guān)延遲比較大丟包越多,延遲越大,所以有 可能出現(xiàn)雖然媒體數(shù)據(jù)包重傳完成,但卻已經(jīng)過時的情況。采用FEC技術(shù),流媒體服務(wù)器在 發(fā)送媒體數(shù)據(jù)流的同時不斷發(fā)送FEC數(shù)據(jù),客戶端能夠根據(jù)FEC數(shù)據(jù)重建丟失的媒體數(shù)據(jù) 包,實時性相對比較好;但是,不斷發(fā)送FEC數(shù)據(jù)會帶來固定的帶寬消耗,特別是在網(wǎng)絡(luò)狀 況比較好的情況下,盡管不丟包或丟包機率小,仍然會存在固定的帶寬消耗。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種媒體數(shù)據(jù)包丟包恢復(fù)的方法及系統(tǒng), 能夠節(jié)省網(wǎng)絡(luò)帶寬,并減輕流媒體服務(wù)器的中央處理器(CPU)負(fù)荷。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的
—種媒體數(shù)據(jù)包丟包恢復(fù)的方法,包括
流媒體服務(wù)器發(fā)送并緩存媒體數(shù)據(jù)流; 客戶端接收并緩存媒體數(shù)據(jù)流;當(dāng)客戶端檢測到緩存的媒體數(shù)據(jù)流中丟失媒體數(shù) 據(jù)包時,向流媒體服務(wù)器發(fā)送否認(rèn)(NACK)消息,所述NACK消息中攜帶有媒體數(shù)據(jù)流的丟包 信息; 流媒體服務(wù)器根據(jù)收到的NACK消息中攜帶的媒體數(shù)據(jù)流的丟包信息,設(shè)定FEC編 碼冗余度并從自身緩存的媒體數(shù)據(jù)流中獲取需恢復(fù)的媒體數(shù)據(jù)包;并根據(jù)FEC編碼冗余度 將需恢復(fù)的媒體數(shù)據(jù)包編碼成FEC數(shù)據(jù)發(fā)送給客戶端; 客戶端結(jié)合收到的FEC數(shù)據(jù)以及自身緩存的媒體數(shù)據(jù)流,恢復(fù)出媒體數(shù)據(jù)流中丟 失的媒體數(shù)據(jù)包。 其中,在客戶端檢測到緩存的媒體數(shù)據(jù)流中丟失媒體數(shù)據(jù)包之后,所述方法進(jìn)一 步包括
客戶端啟動預(yù)先設(shè)置的丟包檢測定時器,當(dāng)丟包檢測定時器超時時,檢測到丟失
的媒體數(shù)據(jù)包仍未收到時,向流媒體服務(wù)器發(fā)送所述NACK消息。 其中,在檢測到丟失的媒體數(shù)據(jù)包仍未收到之后,所述方法進(jìn)一步包括 客戶端判斷自身是否存在能夠恢復(fù)丟失的媒體數(shù)據(jù)包的FEC數(shù)據(jù);如果存在,則
根據(jù)FEC數(shù)據(jù)恢復(fù)出媒體數(shù)據(jù)流中丟失的媒體數(shù)據(jù)包;否則,向流媒體服務(wù)器發(fā)送所述
NACK消息。 其中,所述設(shè)定FEC編碼冗余度還根據(jù)FEC算法以及實際允許的網(wǎng)絡(luò)冗余度上限。
其中,在將需恢復(fù)的媒體數(shù)據(jù)包編碼成FEC數(shù)據(jù)發(fā)送給客戶端之后,所述方法進(jìn) 一步包括
流媒體服務(wù)器結(jié)合后續(xù)發(fā)送的媒體數(shù)據(jù)流和FEC編碼冗余度生成FEC數(shù)據(jù)并發(fā)送 給客戶端。 —種媒體數(shù)據(jù)包丟包恢復(fù)的系統(tǒng),包括流媒體服務(wù)器和客戶端,所述流媒體服務(wù) 器包括媒體數(shù)據(jù)發(fā)送模塊、第一媒體數(shù)據(jù)緩存模塊、丟包補償模塊和FEC數(shù)據(jù)編碼模塊;
所述客戶端包括媒體數(shù)據(jù)接收模塊、第二媒體數(shù)據(jù)緩存模塊、丟包上報模塊和FEC恢復(fù)模 塊;其中, 媒體數(shù)據(jù)發(fā)送模塊,用于向媒體數(shù)據(jù)接收模塊發(fā)送媒體數(shù)據(jù)流; 第一媒體數(shù)據(jù)緩存模塊,用于緩存媒體數(shù)據(jù)發(fā)送模塊發(fā)送的媒體數(shù)據(jù)流; 媒體數(shù)據(jù)接收模塊,用于接收媒體數(shù)據(jù)流; 第二媒體數(shù)據(jù)緩存模塊,用于緩存媒體數(shù)據(jù)接收模塊接收的媒體數(shù)據(jù)流,并當(dāng)檢 測到緩存的媒體數(shù)據(jù)流中丟失媒體數(shù)據(jù)包時,觸發(fā)丟包上報模塊; 丟包上報模塊,用于向丟包補償模塊發(fā)送NACK消息,所述NACK消息中攜帶有媒體 數(shù)據(jù)流的丟包信息; 丟包補償模塊,用于根據(jù)收到的NACK消息中攜帶的媒體數(shù)據(jù)流的丟包信息,設(shè)定 FEC編碼冗余度,并將FEC編碼冗余度和媒體數(shù)據(jù)流的丟包信息發(fā)送給FEC數(shù)據(jù)編碼模塊;
FEC數(shù)據(jù)編碼模塊,用于根據(jù)收到的媒體數(shù)據(jù)流的丟包信息從第一媒體數(shù)據(jù)緩存 模塊中獲取需恢復(fù)的媒體數(shù)據(jù)包,并根據(jù)收到的FEC編碼冗余度將需恢復(fù)的媒體數(shù)據(jù)包編 碼成FEC數(shù)據(jù)發(fā)送給FEC恢復(fù)模塊; FEC恢復(fù)模塊,用于結(jié)合收到的FEC數(shù)據(jù)以及第二媒體數(shù)據(jù)緩存模塊緩存的媒體 數(shù)據(jù)流恢復(fù)出媒體數(shù)據(jù)流中丟失的媒體數(shù)據(jù)包。 其中,所述第二媒體數(shù)據(jù)緩存模塊,進(jìn)一步用于在檢測到緩存的媒體數(shù)據(jù)流中丟 失媒體數(shù)據(jù)包之后,先啟動預(yù)先設(shè)置的丟包檢測定時器,當(dāng)丟包檢測定時器超時時,檢測到 丟失的媒體數(shù)據(jù)包仍未收到時,再觸發(fā)丟包上報模塊。 其中,所述第二媒體數(shù)據(jù)緩存模塊,進(jìn)一步用于在檢測到丟失的媒體數(shù)據(jù)包仍未 收到之后,觸發(fā)所述FEC恢復(fù)模塊; 所述FEC恢復(fù)模塊,進(jìn)一步用于判斷自身是否存在能夠恢復(fù)丟失的媒體數(shù)據(jù)包的 FEC數(shù)據(jù);如果存在,則根據(jù)FEC數(shù)據(jù)恢復(fù)出媒體數(shù)據(jù)流中丟失的媒體數(shù)據(jù)包;否則,觸發(fā)丟 包上報模塊。 由以上技術(shù)方案可以看出,本發(fā)明與現(xiàn)有技術(shù)相比,僅在媒體數(shù)據(jù)流發(fā)生丟包時, 才發(fā)送用于恢復(fù)丟包的FEC數(shù)據(jù),因此能夠節(jié)省網(wǎng)絡(luò)帶寬;并且,由于不需要實時發(fā)送FEC數(shù)據(jù),相應(yīng)地,也就無需實時生成FEC數(shù)據(jù),因此可以減輕流媒體服務(wù)器的CPU負(fù)荷。另外, 本發(fā)明利用FEC技術(shù)恢復(fù)丟包,能獲得較高的媒體數(shù)據(jù)傳輸質(zhì)量,從而為用戶提供高質(zhì)量 的視頻觀看效果。
圖1為本發(fā)明媒體數(shù)據(jù)包丟包恢復(fù)的方法的流程示意圖;
圖2為本發(fā)明媒體數(shù)據(jù)包丟包恢復(fù)的系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施例方式
下面結(jié)合附圖對本發(fā)明的技術(shù)方案做詳細(xì)說明。 如圖1所示,本發(fā)明媒體數(shù)據(jù)包丟包恢復(fù)的方法包括以下步驟 步驟101,流媒體服務(wù)器發(fā)送并緩存媒體數(shù)據(jù)流。 媒體數(shù)據(jù)流由多個連續(xù)的媒體數(shù)據(jù)包組成。 步驟102,客戶端接收并緩存媒體數(shù)據(jù)流。 步驟103 104,客戶端檢測緩存的媒體數(shù)據(jù)流中是否丟失媒體數(shù)據(jù)包,如果沒
有,則結(jié)束當(dāng)前流程;否則,啟動預(yù)先設(shè)置的丟包檢測定時器。 其中,如何檢測媒體數(shù)據(jù)流是否丟包為現(xiàn)有技術(shù),在此不再贅述。 步驟105,丟包檢測定時器超時,客戶端檢測丟失的媒體數(shù)據(jù)包是否仍未收到,如
果是,則執(zhí)行步驟106 ;否則,表明沒有丟失媒體數(shù)據(jù)包,則結(jié)束當(dāng)前流程。 由于在UDP傳輸方式下,可能出現(xiàn)包亂序的情況,即媒體數(shù)據(jù)流中的媒體數(shù)據(jù)包
并不按次序到達(dá)。例如,假設(shè)媒體數(shù)據(jù)流包含序號為1、2、3和4的四個媒體數(shù)據(jù)包,在執(zhí)行
步驟103時,客戶端已收到序號為1、2和4的媒體數(shù)據(jù)包,而未收到序號為3的媒體數(shù)據(jù)
包,因此,在步驟103中檢測到丟包;但是,在啟動丟包檢測定時器之后,客戶端卻收到了序
號為3的媒體數(shù)據(jù)包,當(dāng)丟包檢測定時器超時再進(jìn)行檢測,很顯然可以發(fā)現(xiàn)媒體數(shù)據(jù)流并
未丟包。因此,設(shè)置丟包檢測定時器以避免這種情況的發(fā)生。 另外,丟包檢測定時器的定時時間可根據(jù)實際需要設(shè)定。 步驟106 108,客戶端判斷自身是否存在能夠恢復(fù)丟失的媒體數(shù)據(jù)包的FEC數(shù)
據(jù);如果存在,則根據(jù)FEC數(shù)據(jù)恢復(fù)出媒體數(shù)據(jù)流中丟失的媒體數(shù)據(jù)包;否則,向流媒體服
務(wù)器發(fā)送否認(rèn)(NACK)消息,該NACK消息中攜帶有媒體數(shù)據(jù)流的丟包信息。 其中,如何根據(jù)FEC數(shù)據(jù)恢復(fù)丟失的媒體數(shù)據(jù)包為現(xiàn)有技術(shù),在此不再贅述。 另外,媒體數(shù)據(jù)流的丟包信息是指在連續(xù)的N個媒體數(shù)據(jù)包中具體丟失了哪幾個
媒體數(shù)據(jù)包。 步驟109,流媒體服務(wù)器收到NACK消息之后,根據(jù)其中攜帶的媒體數(shù)據(jù)流的丟包 信息,設(shè)定FEC編碼冗余度并從自身緩存的媒體數(shù)據(jù)流中獲取需恢復(fù)的媒體數(shù)據(jù)包。其中, 需恢復(fù)的媒體數(shù)據(jù)包即指丟失的媒體數(shù)據(jù)包。 由于不同的FEC算法對丟包恢復(fù)的效果會產(chǎn)生一些不同的影響,另考慮到實際需 要,所以在設(shè)定FEC編碼冗余度時, 一般還需綜合考慮實際采用的FEC算法以及實際允許的 網(wǎng)絡(luò)冗余度上限。 并且,F(xiàn)EC編碼冗余度是自適應(yīng)的,能夠在恢復(fù)丟包和網(wǎng)絡(luò)額外帶寬占用率之間進(jìn)
6行平衡。例如,假設(shè)媒體數(shù)據(jù)流的丟包率為2% ,則可以將FEC編碼冗余度設(shè)定為3% ,這樣, 既可以保證有足夠的FEC數(shù)據(jù)來恢復(fù)丟失的數(shù)據(jù)包;又可以使得FEC數(shù)據(jù)不會占用太多的 額外帶寬,因為FEC編碼冗余度的設(shè)定值并不高。 另外,如果在獲取需恢復(fù)的媒體數(shù)據(jù)包之前,流媒體服務(wù)器緩存的媒體數(shù)據(jù)流已 經(jīng)被釋放,則丟包恢復(fù)失敗,結(jié)束當(dāng)前流程。 步驟110,流媒體服務(wù)器根據(jù)FEC編碼冗余度將需恢復(fù)的媒體數(shù)據(jù)包編碼成FEC數(shù)
據(jù)發(fā)送給客戶端。其中,需恢復(fù)的媒體數(shù)據(jù)包即指丟失的媒體數(shù)據(jù)包。 如果已發(fā)送的媒體數(shù)據(jù)流出現(xiàn)了丟包的情況,則后續(xù)發(fā)送的媒體數(shù)據(jù)流一般也會
出現(xiàn)丟包的情況,因此,結(jié)合后續(xù)發(fā)送的媒體數(shù)據(jù)流和FEC編碼冗余度,持續(xù)一段時間生成
FEC數(shù)據(jù)并發(fā)送給客戶端,其中,該FEC數(shù)據(jù)對應(yīng)后續(xù)發(fā)送的媒體數(shù)據(jù)流。這樣,在后續(xù)發(fā)送
的媒體數(shù)據(jù)流發(fā)生丟包時,客戶端可以直接根據(jù)FEC數(shù)據(jù)恢復(fù)丟失的媒體數(shù)據(jù)包,從而保
證了恢復(fù)質(zhì)量和網(wǎng)絡(luò)的利用率。另外,所述一段時間可以根據(jù)需要設(shè)定。 步驟111,客戶端結(jié)合收到的FEC數(shù)據(jù)以及自身緩存的媒體數(shù)據(jù)流,恢復(fù)出媒體數(shù)
據(jù)流中丟失的媒體數(shù)據(jù)包。 在獲取收到FEC數(shù)據(jù)之前,客戶端緩存的媒體數(shù)據(jù)流已經(jīng)被釋放,則丟包恢復(fù)失 敗,結(jié)束當(dāng)前流程。 為實現(xiàn)上述方法,本發(fā)明相應(yīng)提供一種媒體數(shù)據(jù)包丟包恢復(fù)的系統(tǒng),如圖2所示,
該系統(tǒng)包括流媒體服務(wù)器和客戶端,其中,流媒體服務(wù)器包括媒體數(shù)據(jù)發(fā)送模塊、第一媒
體數(shù)據(jù)緩存模塊、丟包補償模塊和FEC數(shù)據(jù)編碼模塊;客戶端包括媒體數(shù)據(jù)接收模塊、第
二媒體數(shù)據(jù)緩存模塊、丟包上報模塊和FEC恢復(fù)模塊;其中, 媒體數(shù)據(jù)發(fā)送模塊,用于向媒體數(shù)據(jù)接收模塊發(fā)送媒體數(shù)據(jù)流。 第一媒體數(shù)據(jù)緩存模塊,用于緩存媒體數(shù)據(jù)發(fā)送模塊發(fā)送的媒體數(shù)據(jù)流。 媒體數(shù)據(jù)接收模塊,用于接收媒體數(shù)據(jù)流。 第二媒體數(shù)據(jù)緩存模塊,用于緩存媒體數(shù)據(jù)接收模塊接收的媒體數(shù)據(jù)流,并當(dāng)檢 測到緩存的媒體數(shù)據(jù)流中丟失媒體數(shù)據(jù)包時,觸發(fā)丟包上報模塊。 優(yōu)選地,第二媒體數(shù)據(jù)緩存模塊,用于在觸發(fā)丟包上報模塊之前,先啟動預(yù)先設(shè)置 的丟包檢測定時器,當(dāng)丟包檢測定時器超時時,檢測到丟失的媒體數(shù)據(jù)包仍未收到時,再觸 發(fā)丟包上報模塊。 優(yōu)選地,第二媒體數(shù)據(jù)緩存模塊,用于在檢測到丟失的媒體數(shù)據(jù)包仍未收到之后, 觸發(fā)FEC恢復(fù)模塊; FEC恢復(fù)模塊,用于判斷自身是否存在能夠恢復(fù)丟失的媒體數(shù)據(jù)包的FEC數(shù)據(jù); 如果存在,則根據(jù)FEC數(shù)據(jù)恢復(fù)出媒體數(shù)據(jù)流中丟失的媒體數(shù)據(jù)包;否則,觸發(fā)丟包上報模 塊。 丟包上報模塊,用于向丟包補償模塊發(fā)送NACK消息,該NACK消息中攜帶有媒體數(shù) 據(jù)流的丟包信息。其中,媒體數(shù)據(jù)流的丟包信息從第二媒體數(shù)據(jù)緩存模塊獲取。
丟包補償模塊,用于根據(jù)收到的NACK消息中攜帶的媒體數(shù)據(jù)流的丟包信息,設(shè)定 FEC編碼冗余度,并將FEC編碼冗余度和媒體數(shù)據(jù)流的丟包信息發(fā)送給FEC數(shù)據(jù)編碼模塊。
FEC數(shù)據(jù)編碼模塊,用于根據(jù)收到的媒體數(shù)據(jù)流的丟包信息從第一媒體數(shù)據(jù)緩存 模塊中獲取需恢復(fù)的媒體數(shù)據(jù)包,并根據(jù)收到的FEC編碼冗余度將需恢復(fù)的媒體數(shù)據(jù)包編碼成FEC數(shù)據(jù)發(fā)送給FEC恢復(fù)模塊。 FEC恢復(fù)模塊,用于結(jié)合收到的FEC數(shù)據(jù)以及第二媒體數(shù)據(jù)緩存模塊緩存的媒體 數(shù)據(jù)流恢復(fù)出媒體數(shù)據(jù)流中丟失的媒體數(shù)據(jù)包。 以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種媒體數(shù)據(jù)包丟包恢復(fù)的方法,其特征在于,包括流媒體服務(wù)器發(fā)送并緩存媒體數(shù)據(jù)流;客戶端接收并緩存媒體數(shù)據(jù)流;當(dāng)客戶端檢測到緩存的媒體數(shù)據(jù)流中丟失媒體數(shù)據(jù)包時,向流媒體服務(wù)器發(fā)送否認(rèn)NACK消息,所述NACK消息中攜帶有媒體數(shù)據(jù)流的丟包信息;流媒體服務(wù)器根據(jù)收到的NACK消息中攜帶的媒體數(shù)據(jù)流的丟包信息,設(shè)定前向糾錯FEC編碼冗余度并從自身緩存的媒體數(shù)據(jù)流中獲取需恢復(fù)的媒體數(shù)據(jù)包;并根據(jù)FEC編碼冗余度將需恢復(fù)的媒體數(shù)據(jù)包編碼成FEC數(shù)據(jù)發(fā)送給客戶端;客戶端結(jié)合收到的FEC數(shù)據(jù)以及自身緩存的媒體數(shù)據(jù)流,恢復(fù)出媒體數(shù)據(jù)流中丟失的媒體數(shù)據(jù)包。
2. 根據(jù)權(quán)利要求1所述的媒體數(shù)據(jù)包丟包恢復(fù)的方法,其特征在于,在客戶端檢測到 緩存的媒體數(shù)據(jù)流中丟失媒體數(shù)據(jù)包之后,所述方法進(jìn)一步包括客戶端啟動預(yù)先設(shè)置的丟包檢測定時器,當(dāng)丟包檢測定時器超時時,檢測到丟失的媒 體數(shù)據(jù)包仍未收到時,向流媒體服務(wù)器發(fā)送所述NACK消息。
3. 根據(jù)權(quán)利要求2所述的媒體數(shù)據(jù)包丟包恢復(fù)的方法,其特征在于,在檢測到丟失的 媒體數(shù)據(jù)包仍未收到之后,所述方法進(jìn)一步包括客戶端判斷自身是否存在能夠恢復(fù)丟失的媒體數(shù)據(jù)包的FEC數(shù)據(jù);如果存在,則根據(jù) FEC數(shù)據(jù)恢復(fù)出媒體數(shù)據(jù)流中丟失的媒體數(shù)據(jù)包;否則,向流媒體服務(wù)器發(fā)送所述NACK消 息。
4. 根據(jù)權(quán)利要求1、2或3所述的媒體數(shù)據(jù)包丟包恢復(fù)的方法,其特征在于,所述設(shè)定 FEC編碼冗余度還根據(jù)FEC算法以及實際允許的網(wǎng)絡(luò)冗余度上限。
5. 根據(jù)權(quán)利要求1、2或3所述的媒體數(shù)據(jù)包丟包恢復(fù)的方法,其特征在于,在將需恢復(fù) 的媒體數(shù)據(jù)包編碼成FEC數(shù)據(jù)發(fā)送給客戶端之后,所述方法進(jìn)一步包括流媒體服務(wù)器結(jié)合后續(xù)發(fā)送的媒體數(shù)據(jù)流和FEC編碼冗余度生成FEC數(shù)據(jù)并發(fā)送給客 戶端。
6. —種媒體數(shù)據(jù)包丟包恢復(fù)的系統(tǒng),包括流媒體服務(wù)器和客戶端,其特征在于,所述 流媒體服務(wù)器包括媒體數(shù)據(jù)發(fā)送模塊、第一媒體數(shù)據(jù)緩存模塊、丟包補償模塊和FEC數(shù)據(jù) 編碼模塊;所述客戶端包括媒體數(shù)據(jù)接收模塊、第二媒體數(shù)據(jù)緩存模塊、丟包上報模塊和 FEC恢復(fù)模塊;其中,媒體數(shù)據(jù)發(fā)送模塊,用于向媒體數(shù)據(jù)接收模塊發(fā)送媒體數(shù)據(jù)流; 第一媒體數(shù)據(jù)緩存模塊,用于緩存媒體數(shù)據(jù)發(fā)送模塊發(fā)送的媒體數(shù)據(jù)流; 媒體數(shù)據(jù)接收模塊,用于接收媒體數(shù)據(jù)流;第二媒體數(shù)據(jù)緩存模塊,用于緩存媒體數(shù)據(jù)接收模塊接收的媒體數(shù)據(jù)流,并當(dāng)檢測到 緩存的媒體數(shù)據(jù)流中丟失媒體數(shù)據(jù)包時,觸發(fā)丟包上報模塊;丟包上報模塊,用于向丟包補償模塊發(fā)送NACK消息,所述NACK消息中攜帶有媒體數(shù)據(jù) 流的丟包信息;丟包補償模塊,用于根據(jù)收到的NACK消息中攜帶的媒體數(shù)據(jù)流的丟包信息,設(shè)定FEC 編碼冗余度,并將FEC編碼冗余度和媒體數(shù)據(jù)流的丟包信息發(fā)送給FEC數(shù)據(jù)編碼模塊;FEC數(shù)據(jù)編碼模塊,用于根據(jù)收到的媒體數(shù)據(jù)流的丟包信息從第一媒體數(shù)據(jù)緩存模塊 中獲取需恢復(fù)的媒體數(shù)據(jù)包,并根據(jù)收到的FEC編碼冗余度將需恢復(fù)的媒體數(shù)據(jù)包編碼成FEC數(shù)據(jù)發(fā)送給FEC恢復(fù)模塊;FEC恢復(fù)模塊,用于結(jié)合收到的FEC數(shù)據(jù)以及第二媒體數(shù)據(jù)緩存模塊緩存的媒體數(shù)據(jù) 流恢復(fù)出媒體數(shù)據(jù)流中丟失的媒體數(shù)據(jù)包。
7. 根據(jù)權(quán)利要求6所述的媒體數(shù)據(jù)包丟包恢復(fù)的系統(tǒng),其特征在于,所述第二媒體數(shù) 據(jù)緩存模塊,進(jìn)一步用于在檢測到緩存的媒體數(shù)據(jù)流中丟失媒體數(shù)據(jù)包之后,先啟動預(yù)先 設(shè)置的丟包檢測定時器,當(dāng)丟包檢測定時器超時時,檢測到丟失的媒體數(shù)據(jù)包仍未收到時, 再觸發(fā)丟包上報模塊。
8. 根據(jù)權(quán)利要求7所述的媒體數(shù)據(jù)包丟包恢復(fù)的系統(tǒng),其特征在于,所述第二媒體數(shù) 據(jù)緩存模塊,進(jìn)一步用于在檢測到丟失的媒體數(shù)據(jù)包仍未收到之后,觸發(fā)所述FEC恢復(fù)模 塊;所述FEC恢復(fù)模塊,進(jìn)一步用于判斷自身是否存在能夠恢復(fù)丟失的媒體數(shù)據(jù)包的FEC 數(shù)據(jù);如果存在,則根據(jù)FEC數(shù)據(jù)恢復(fù)出媒體數(shù)據(jù)流中丟失的媒體數(shù)據(jù)包;否則,觸發(fā)丟包 上報模塊。
全文摘要
本發(fā)明公開了一種媒體數(shù)據(jù)包丟包恢復(fù)的方法,包括流媒體服務(wù)器發(fā)送并緩存媒體數(shù)據(jù)流;客戶端接收并緩存媒體數(shù)據(jù)流;當(dāng)客戶端檢測到緩存的媒體數(shù)據(jù)流中丟失媒體數(shù)據(jù)包時,向流媒體服務(wù)器發(fā)送否認(rèn)消息,該否認(rèn)消息中攜帶有媒體數(shù)據(jù)流的丟包信息;流媒體服務(wù)器根據(jù)媒體數(shù)據(jù)流的丟包信息,設(shè)定前向糾錯編碼冗余度并從自身緩存的媒體數(shù)據(jù)流中獲取需恢復(fù)的媒體數(shù)據(jù)包;并根據(jù)前向糾錯編碼冗余度將需恢復(fù)的媒體數(shù)據(jù)包編碼成前向糾錯數(shù)據(jù)發(fā)送給客戶端;客戶端結(jié)合前向糾錯數(shù)據(jù)以及自身緩存的媒體數(shù)據(jù)流,恢復(fù)出丟失的媒體數(shù)據(jù)包。本發(fā)明另公開了一種媒體數(shù)據(jù)包丟包恢復(fù)的系統(tǒng)。采用本發(fā)明能夠節(jié)省網(wǎng)絡(luò)帶寬,并減輕流媒體服務(wù)器的CPU負(fù)荷。
文檔編號H04L1/00GK101719809SQ20091022425
公開日2010年6月2日 申請日期2009年11月25日 優(yōu)先權(quán)日2009年11月25日
發(fā)明者黃宇軒 申請人:中興通訊股份有限公司