專利名稱:一種rtp數(shù)據(jù)超時(shí)重發(fā)的方法、系統(tǒng)和視頻終端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)傳輸技術(shù)領(lǐng)域,尤其涉及一種RTP數(shù)據(jù)超時(shí)重發(fā)的方法、系統(tǒng)和視頻終端。
背景技術(shù):
在IP視訊會議系統(tǒng)中實(shí)時(shí)的視頻和音頻信息采用承載在UDP協(xié)議上的RTP通道進(jìn)行傳輸,而RTP不提供任何機(jī)制來確保數(shù)據(jù)按時(shí)發(fā)送或保證服務(wù)的質(zhì)量,甚至不能保證分組數(shù)據(jù)的順序遞交,一旦中間傳輸網(wǎng)絡(luò)出現(xiàn)點(diǎn)異常,例如網(wǎng)絡(luò)擁塞、震蕩等就會導(dǎo)致接收端接收到的數(shù)據(jù)產(chǎn)生丟包、亂序、延時(shí)等現(xiàn)象,使得接收終端不能解碼出流暢聲音與圖像, 出現(xiàn)聲音停頓、圖像馬賽克等現(xiàn)象??咕W(wǎng)絡(luò)丟包技術(shù)就是為了解決視頻會議系統(tǒng)中,媒體數(shù)據(jù)通過UDP在網(wǎng)絡(luò)傳輸過程中產(chǎn)生網(wǎng)絡(luò)擁塞、震蕩導(dǎo)致圖像及聲音停頓等問題?,F(xiàn)有的抗網(wǎng)絡(luò)丟包技術(shù)利用實(shí)時(shí)傳輸控制協(xié)議RTCP反饋信息提供丟包重發(fā)功能,當(dāng)接收端檢測到有丟包時(shí),記錄下來丟包信息,通過RTCP確認(rèn)消息請求發(fā)送端重發(fā)丟失的數(shù)據(jù)包,或者利用差錯(cuò)冗余技術(shù)重發(fā)網(wǎng)絡(luò)中的丟掉的數(shù)據(jù)包,以上兩種方式在實(shí)際處理過程存在不足之處1、傳輸控制協(xié)議RTCP反饋信息提供丟包重發(fā)功能,在網(wǎng)絡(luò)傳輸過程中丟掉RTCP 請求對端重發(fā)的確認(rèn)消息,就不能重發(fā)網(wǎng)絡(luò)丟掉的包。2、利用差錯(cuò)冗余會增加網(wǎng)絡(luò)帶寬,當(dāng)連續(xù)丟兩個(gè)或兩個(gè)以上的數(shù)據(jù)包時(shí)就無法恢復(fù)丟掉的數(shù)據(jù)包。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例的目的在于提供一種RTP數(shù)據(jù)超時(shí)重發(fā)的方法,旨在解決現(xiàn)有技術(shù)在網(wǎng)絡(luò)傳輸過程中如果丟掉RTCP請求對端重發(fā)的確認(rèn)消息,就不能重發(fā)網(wǎng)絡(luò)丟掉的包的問題。本發(fā)明實(shí)施例是這樣實(shí)現(xiàn)的,一種RTP數(shù)據(jù)超時(shí)重發(fā)的方法,所述方法包括下述步驟向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP確認(rèn)消息;判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息;當(dāng)判斷未預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息,則重發(fā)所述RTP數(shù)據(jù)組;刪除所述RTP數(shù)據(jù)組。本發(fā)明實(shí)施例還提供了一種RTP數(shù)據(jù)超時(shí)重發(fā)的系統(tǒng),所述系統(tǒng)包括發(fā)送單元,用于向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP確認(rèn)消息;判斷單元,用于判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息;重發(fā)單元,用于當(dāng)所述判斷單元判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息時(shí),則重發(fā)所述RTP數(shù)據(jù)組;刪除單元,用于刪除所述RTP數(shù)據(jù)組。
本發(fā)明實(shí)施例還提供了一種視頻終端,所述系統(tǒng)包括所述RTP數(shù)據(jù)超時(shí)重發(fā)的系統(tǒng)。在本發(fā)明實(shí)施例中,發(fā)送端通過向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP 確認(rèn)消息,判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息,當(dāng)判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息,則重發(fā)RTP數(shù)據(jù)組,并刪除本地存儲的RTP數(shù)據(jù)組,使得數(shù)據(jù)丟包的情況下,也可以重發(fā)丟包數(shù)據(jù),從而媒體數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中更加穩(wěn)定可靠,從而減少由于網(wǎng)絡(luò)擁塞、震蕩導(dǎo)致的圖像、聲音停頓,即使出現(xiàn)丟掉請求重傳的數(shù)據(jù)包、連續(xù)丟包,也能讓圖像清晰流暢。
圖1是本發(fā)明實(shí)施例一提供的RTP數(shù)據(jù)超時(shí)重發(fā)的方法的實(shí)現(xiàn)流程圖;圖2是本發(fā)明實(shí)施例二提供的RTP數(shù)據(jù)超時(shí)重發(fā)的方法的實(shí)現(xiàn)流程圖;圖3是本發(fā)明實(shí)施例二提供的RTP數(shù)據(jù)超時(shí)重發(fā)的方法的實(shí)現(xiàn)示意圖;圖4是本發(fā)明實(shí)施例四提供的數(shù)據(jù)接收的方法的實(shí)現(xiàn)的流程圖;圖5是本發(fā)明實(shí)施例五提供的抗網(wǎng)絡(luò)丟包的方法的實(shí)現(xiàn)的流程圖;圖6是本發(fā)明實(shí)施例六提供的RTP數(shù)據(jù)超時(shí)重發(fā)的系統(tǒng)的結(jié)構(gòu)圖;圖7是本發(fā)明實(shí)施例七提供的RTP數(shù)據(jù)接收的系統(tǒng)的結(jié)構(gòu)圖;圖8是本發(fā)明實(shí)施例八提供的抗網(wǎng)絡(luò)丟包的系統(tǒng)的結(jié)構(gòu)圖。
具體實(shí)施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。在本發(fā)明實(shí)施例中,接收端在接收到一組數(shù)據(jù)后,給發(fā)送端發(fā)送接收RTCP確認(rèn)消息,如果發(fā)送端未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息,將自動重發(fā)該組數(shù)據(jù)。同時(shí)清除本地保留的數(shù)據(jù),使得視頻會議中的媒體數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中更加穩(wěn)定可靠。本發(fā)明實(shí)施例提供了一種RTP數(shù)據(jù)超時(shí)重發(fā)的方法,所述方法包括下述步驟向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP確認(rèn)消息;判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息;當(dāng)判斷未預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息,則重發(fā)所述RTP數(shù)據(jù)組;刪除所述RTP數(shù)據(jù)組。本發(fā)明實(shí)施例還提供了一種RTP數(shù)據(jù)超時(shí)重發(fā)的系統(tǒng),所述系統(tǒng)包括發(fā)送單元,用于向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP確認(rèn)消息;判斷單元,用于判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息;重發(fā)單元,用于當(dāng)所述判斷單元判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息,則重發(fā)所述RTP數(shù)據(jù)組;刪除單元,用于刪除所述RTP數(shù)據(jù)組。本發(fā)明實(shí)施例還提供了一種視頻終端,所述系統(tǒng)包括所述RTP數(shù)據(jù)超時(shí)重發(fā)的系統(tǒng)。
在本發(fā)明實(shí)施例中,發(fā)送端通過向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP 確認(rèn)消息,判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息,當(dāng)判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息,則重發(fā)RTP數(shù)據(jù)組,并刪除本地存儲的RTP數(shù)據(jù)組,使得數(shù)據(jù)丟包的情況下,也可以重發(fā)丟包數(shù)據(jù),從而媒體數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中更加穩(wěn)定可靠,從而減少由于網(wǎng)絡(luò)擁塞、震蕩導(dǎo)致的圖像、聲音停頓,即使出現(xiàn)丟掉請求重傳的數(shù)據(jù)包、連續(xù)丟包,也能讓圖像清晰流暢。以下結(jié)合具體實(shí)施例對本發(fā)明的實(shí)現(xiàn)進(jìn)行詳細(xì)描述實(shí)施例一在本發(fā)明實(shí)施例中,發(fā)送端在發(fā)送數(shù)據(jù)之前,首先要確認(rèn)對方是否支持超時(shí)重發(fā), 當(dāng)對方支持超時(shí)重發(fā)時(shí)才啟動超時(shí)重發(fā)機(jī)制,向接收端發(fā)送RTP數(shù)據(jù),啟動超時(shí)重發(fā)過程具體過程為A、設(shè)置接收端的接收地址。B、向上述接收地址對應(yīng)的接收端發(fā)送詢問是否支持超時(shí)重發(fā)的信息;C、在預(yù)設(shè)時(shí)間間隔內(nèi),判斷是否接收到接收端發(fā)送的支持超時(shí)重發(fā)的RTCP確認(rèn)消息,是則啟動超時(shí)重發(fā),否則循環(huán)執(zhí)行N次步驟B,若在執(zhí)行N此之后仍未收到支持超時(shí)重發(fā)的RTCP確認(rèn)消息,則判定接收端不支持超時(shí)重發(fā)。在本發(fā)明實(shí)施例中,預(yù)設(shè)時(shí)間間隔可以為固定時(shí)間間隔,也可以為不等間隔,比如依次遞增或者依次遞減,在此不用以限制本發(fā)明。在本發(fā)明實(shí)施例中,循環(huán)執(zhí)行的次數(shù)N可以根據(jù)實(shí)際情況設(shè)定,在此不用以限制本發(fā)明。在本發(fā)明實(shí)施例中,以下步驟的具體應(yīng)用場景可以是基于實(shí)時(shí)傳輸協(xié)議(Real-time Transport Protocol, RIP)和實(shí)時(shí)傳輸控制協(xié)議(Real-time TransportControl Protocol, RTCP)的網(wǎng)絡(luò)媒體流數(shù)據(jù)傳輸過程。圖1示出了本發(fā)明實(shí)施例一提供的RTP數(shù)據(jù)超時(shí)重發(fā)的方法的實(shí)現(xiàn)流程圖,詳述如下在步驟SlOl中,向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP確認(rèn)消息。在步驟S102中,判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息。在步驟S103中,當(dāng)判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息時(shí),則重發(fā)RTP
數(shù)據(jù)組。在步驟S104中,刪除RTP數(shù)據(jù)組。在本發(fā)明實(shí)施例中,上述方法可以是于IP視訊會議系統(tǒng)的發(fā)送端發(fā)送數(shù)據(jù)的過程。在本發(fā)明實(shí)施例中,發(fā)送端通過向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP 確認(rèn)消息,判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息,當(dāng)判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息時(shí),則重發(fā)RTP數(shù)據(jù)組,并刪除本地存儲的RTP數(shù)據(jù)組,使得數(shù)據(jù)丟包的情況下,也可以重發(fā)丟包數(shù)據(jù),從而媒體數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中更加穩(wěn)定可靠,從而減少由于網(wǎng)絡(luò)擁塞、震蕩導(dǎo)致的圖像、聲音停頓,即使出現(xiàn)丟掉請求重傳的數(shù)據(jù)包、連續(xù)丟包, 也能讓圖像清晰流暢。實(shí)施例二
圖2示出了本發(fā)明實(shí)施例二提供的RTP數(shù)據(jù)超時(shí)重發(fā)的方法的實(shí)現(xiàn)流程圖,詳述如下在步驟S201中,向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP確認(rèn)消息。在步驟S202中,判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息,是則執(zhí)行步驟S203,否則執(zhí)行步驟S205。在步驟S203中,判斷RTCP確認(rèn)消息中是否包含丟包信息,是則執(zhí)行步驟S204,否則執(zhí)行步驟S206。在步驟S204中,重發(fā)RTP數(shù)據(jù)組中的丟包數(shù)據(jù)。在步驟S205中,重發(fā)RTP數(shù)據(jù)組。在步驟S206中,刪除RTP數(shù)據(jù)組在本發(fā)明實(shí)施例中,預(yù)設(shè)超時(shí)時(shí)間可以是固定的時(shí)間也可以根據(jù)網(wǎng)絡(luò)情況,動態(tài)調(diào)整預(yù)設(shè)超時(shí)時(shí)間。為了便于理解,以下以具體實(shí)現(xiàn)示例進(jìn)行說明,但不以本實(shí)現(xiàn)示例為限,請參閱圖 3,該過程為在反饋丟包的RTCP確認(rèn)消息丟掉了,通過超時(shí)重發(fā)策略重傳了丟掉的包,具體為發(fā)送數(shù)據(jù)包1、2、3、4,其中,順次發(fā)送的數(shù)據(jù)包1、2均被接收端正常接收,而在數(shù)據(jù)包3發(fā)送的過程中,發(fā)生了丟包,且發(fā)送端發(fā)送請求重傳數(shù)據(jù)包3的指令在發(fā)送過程中也發(fā)丟失了,當(dāng)4號數(shù)據(jù)包接收完成時(shí),發(fā)送RTCP確認(rèn)消息在網(wǎng)絡(luò)傳輸過程中發(fā)生丟包,此時(shí)超時(shí)重發(fā)緩沖區(qū)數(shù)據(jù)已滿,判斷仍未收到RTCP確認(rèn)消息,則重發(fā)數(shù)據(jù)包1、2、3、4,提高了傳輸過程的可靠性。在本發(fā)明實(shí)施例中,在預(yù)設(shè)超時(shí)時(shí)間內(nèi)未接收到RTCP確認(rèn)消息時(shí),將RTP數(shù)據(jù)組確定為需要重發(fā)的數(shù)據(jù),重發(fā)RTP數(shù)據(jù)組,當(dāng)在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息,則判斷RTCP確認(rèn)消息中是否包含丟包信息,當(dāng)判斷有丟包時(shí),則重發(fā)RTP數(shù)據(jù)組中的丟包數(shù)據(jù), 使得在沒有收到RTCP確認(rèn)消息和收到RTCP確認(rèn)消息及RTCP確認(rèn)消息中包含丟包數(shù)據(jù)均可以重發(fā)相應(yīng)的數(shù)據(jù)組中的數(shù)據(jù),并刪除相應(yīng)的數(shù)據(jù)組,提高了系統(tǒng)的穩(wěn)定性。實(shí)施例三在本發(fā)明實(shí)施例中,可以通過調(diào)整預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)動態(tài)調(diào)整預(yù)設(shè)超時(shí)時(shí)間,具體過程為如果在超時(shí)緩沖區(qū)存儲的數(shù)據(jù)包的個(gè)數(shù)未達(dá)到預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N之前收到RTCP確認(rèn)消息,則減小預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N以減小預(yù)設(shè)超時(shí)時(shí)間;如果在超時(shí)緩沖區(qū)存儲的數(shù)據(jù)包的個(gè)數(shù)達(dá)到預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N之后仍未收到RTCP確認(rèn)消息,則增大預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N以增加預(yù)設(shè)超時(shí)時(shí)間;其中,MIN < N < MAX, MIN為超時(shí)緩沖區(qū)能夠存儲的數(shù)據(jù)包的最小值,MAX為超時(shí)緩沖區(qū)能夠存儲的數(shù)據(jù)包的最大值。在本發(fā)明實(shí)施例中,數(shù)據(jù)包在發(fā)送過程中,數(shù)據(jù)包的幀率、碼率等因素決定了一個(gè)數(shù)據(jù)包發(fā)送的時(shí)間,因而每一數(shù)據(jù)包發(fā)送的平均時(shí)間是基本固定的,發(fā)送端每發(fā)送一個(gè)數(shù)據(jù)包,超時(shí)緩沖區(qū)會有新的數(shù)據(jù)包存儲,因此可以根據(jù)超時(shí)緩沖的存儲的數(shù)據(jù)包的個(gè)數(shù)動態(tài)調(diào)整預(yù)設(shè)超時(shí)時(shí)間,通常,在初始化過程中,根據(jù)經(jīng)驗(yàn)值,為超時(shí)緩沖區(qū)設(shè)定一個(gè)預(yù)設(shè)存儲的數(shù)據(jù)包的個(gè)數(shù),這個(gè)值通常大于超時(shí)緩沖區(qū)能夠存儲的數(shù)據(jù)包的最小值,小于超時(shí)緩沖區(qū)能夠存儲的數(shù)據(jù)包的最大值。
在本發(fā)明實(shí)施例中,為了使緩沖區(qū)的存儲數(shù)據(jù)包數(shù)量適宜,可以通過每次將超時(shí)緩沖區(qū)預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)減小M來實(shí)現(xiàn)減小預(yù)設(shè)存儲的數(shù)據(jù)包數(shù)目,且減小后數(shù)據(jù)包的個(gè)數(shù)N-M>MIN,可以通過將超時(shí)緩沖區(qū)預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)增加M來增大預(yù)設(shè)存儲的數(shù)據(jù)包數(shù)目,且增加后數(shù)據(jù)包的個(gè)數(shù)N+M < MAX。在本發(fā)明實(shí)施例中,一組RTP數(shù)據(jù)發(fā)送完成之后,如果在超時(shí)緩沖區(qū)存儲的數(shù)據(jù)包的個(gè)數(shù)未達(dá)到預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N之前收到RTCP確認(rèn)消息,則將超時(shí)緩沖區(qū)預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)減小M,此時(shí)超時(shí)緩沖區(qū)預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)為m = N-M,而下一組RTP 數(shù)據(jù)發(fā)送完成之后,如果在超時(shí)緩沖區(qū)存儲的數(shù)據(jù)包的個(gè)數(shù)達(dá)到預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)W 之后仍未收到RTCP確認(rèn)消息,則將超時(shí)緩沖區(qū)預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)增大P,此時(shí)超時(shí)緩沖區(qū)預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)為N2 = N-M+P,依次類推動態(tài)調(diào)整緩沖區(qū)預(yù)存儲的數(shù)據(jù)包的個(gè)數(shù),方法靈活簡單。本發(fā)明實(shí)施例中,根據(jù)實(shí)際網(wǎng)絡(luò)變化情況,動態(tài)調(diào)整了緩沖區(qū)中實(shí)際能夠存儲的數(shù)據(jù)包的個(gè)數(shù),從而調(diào)整動態(tài)超時(shí)時(shí)間,優(yōu)化了數(shù)據(jù)傳送過程。實(shí)施例四圖4示出本發(fā)明實(shí)施例四提供的RTP數(shù)據(jù)接收的方法的實(shí)現(xiàn)的流程圖,詳述如下在步驟S401中,判斷當(dāng)前接收的RTP數(shù)據(jù)之前指定范圍內(nèi)接收的RTP數(shù)據(jù)組中是否有丟包,當(dāng)判斷有丟包時(shí),執(zhí)行步驟S402,當(dāng)判斷當(dāng)無丟包時(shí),執(zhí)行步驟S403。在步驟S402中,檢查丟包數(shù)據(jù)中是否含有重排超時(shí)包,當(dāng)檢查丟包中含有重排超時(shí)包時(shí),執(zhí)行步驟S404,重排超時(shí)包為丟包數(shù)據(jù)中超過預(yù)設(shè)確認(rèn)時(shí)間閾值尚未發(fā)送RTCP確認(rèn)消息的數(shù)據(jù)包。在步驟S403中,判斷接收緩沖區(qū)中接收的數(shù)據(jù)包的個(gè)數(shù)是否達(dá)到RTCP確認(rèn)消息分組能夠存儲的最大數(shù)據(jù)包個(gè)數(shù),是則執(zhí)行步驟S404。在本發(fā)明實(shí)施例中,當(dāng)判斷接收緩沖區(qū)中接收的數(shù)據(jù)包的個(gè)數(shù)未達(dá)到RTCP確認(rèn)消息分組中能夠存儲的數(shù)據(jù)包的個(gè)數(shù)時(shí),則繼續(xù)接收數(shù)據(jù),直到達(dá)到最大分組數(shù)。在步驟S404中,發(fā)送上述RTP數(shù)據(jù)組的RTCP確認(rèn)消息到發(fā)送端。在本發(fā)明實(shí)施例中,上述方法可以是于IP視訊會議系統(tǒng)的接收端接收數(shù)據(jù)的過程。在本發(fā)明實(shí)施例中,保證在有無數(shù)據(jù)丟包的情況下均向發(fā)送端發(fā)送RTCP確認(rèn)消息,數(shù)據(jù)傳輸更加穩(wěn)定。實(shí)施例五圖5示出本發(fā)明實(shí)施例五提供的抗網(wǎng)絡(luò)丟包的方法的實(shí)現(xiàn)的流程圖,詳述如下在步驟S501中,發(fā)送端向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP確認(rèn)消
肩、ο在步驟S502中,發(fā)送端判斷當(dāng)前接收發(fā)送端發(fā)送的RTP數(shù)據(jù)之前指定范圍內(nèi)接收的RTP數(shù)據(jù)組中是否有丟包。當(dāng)接收端判斷有丟包時(shí),檢查丟包中是否含有重排超時(shí)數(shù)據(jù)包,當(dāng)檢查丟包中含有重排超時(shí)數(shù)據(jù)包時(shí),發(fā)送RTCP確認(rèn)消息到發(fā)送端,重排超時(shí)數(shù)據(jù)包為丟包中超過預(yù)設(shè)確認(rèn)時(shí)間閾值尚未發(fā)送RTCP確認(rèn)消息的數(shù)據(jù)包。
當(dāng)接收端判斷無丟包時(shí),判斷接收緩沖區(qū)中接收的數(shù)據(jù)包的個(gè)數(shù)是否達(dá)到RTCP 確認(rèn)消息分組中能夠存儲的最大數(shù)據(jù)包個(gè)數(shù),當(dāng)判斷達(dá)到RTCP確認(rèn)消息分組中能夠存儲的最大數(shù)據(jù)包個(gè)數(shù),發(fā)送RTCP確認(rèn)消息到發(fā)送端。在步驟S503中,發(fā)送端根據(jù)預(yù)設(shè)超時(shí)時(shí)間內(nèi)RTCP確認(rèn)消息的接收情況和RTCP確認(rèn)消息確定需要重發(fā)的RTP數(shù)據(jù)組中的數(shù)據(jù),重發(fā)確定的需要重發(fā)的RTP數(shù)據(jù)組中的數(shù)據(jù)。在步驟S504中,發(fā)送端刪除RTP數(shù)據(jù)組。實(shí)施例六圖6示出了本發(fā)明實(shí)施例六提供的RTP數(shù)據(jù)超時(shí)重發(fā)的系統(tǒng)的結(jié)構(gòu)圖,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,該系統(tǒng)可以是位于視頻終端中的軟件單元、硬件單元或者軟硬結(jié)合單元。在本發(fā)明實(shí)施例中,具體應(yīng)用場景可以是實(shí)時(shí)傳輸協(xié)議(Real-timeTransport Protocol, RTP)和實(shí)時(shí)傳輸控制協(xié)議(Real-time Transport ControlProtocol, RTCP)的網(wǎng)絡(luò)媒體流數(shù)據(jù)傳輸過程。該系統(tǒng)包括發(fā)送單元61、判斷單元62、重發(fā)單元63和刪除單元64,其中,發(fā)送單元61向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP確認(rèn)消息。判斷單元62判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息。當(dāng)判斷單元62判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息,則重發(fā)單元63重發(fā)RTP數(shù)據(jù)組。在本發(fā)明實(shí)施例中,當(dāng)判斷單元62判斷在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息, 則判斷RTCP確認(rèn)消息中是否包含丟包信息,當(dāng)判斷RTCP確認(rèn)消息中包含丟包信息時(shí),則重發(fā)單元63重發(fā)RTP數(shù)據(jù)組中的丟包數(shù)據(jù)。刪除單元64刪除上述重發(fā)單元63發(fā)送的RTP數(shù)據(jù)組。在本發(fā)明實(shí)施例中,重發(fā)單元63包括通過調(diào)整預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)動態(tài)調(diào)整預(yù)設(shè)超時(shí)時(shí)間的調(diào)整模塊631,其中,調(diào)整模塊631還包括第一調(diào)整子模塊6311和第二調(diào)整子模塊6312。如果在超時(shí)緩沖區(qū)存儲的數(shù)據(jù)包的個(gè)數(shù)未達(dá)到預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N之前收到RTCP確認(rèn)消息,則第一調(diào)整子模塊6311減小預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N以減小預(yù)設(shè)超時(shí)時(shí)間;以及如果在超時(shí)緩沖區(qū)存儲的數(shù)據(jù)包的個(gè)數(shù)達(dá)到預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N之后仍未收到RTCP確認(rèn)消息,則第二調(diào)整子模塊6312增大預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N以增加預(yù)設(shè)超時(shí)時(shí)間。其中,MIN < N < MAX, MIN為超時(shí)緩沖區(qū)能夠存儲的數(shù)據(jù)包的最小值,MAX為超時(shí)緩沖區(qū)能夠存儲的數(shù)據(jù)包的最大值。在本發(fā)明實(shí)施例中,發(fā)送端發(fā)送單元向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回 RTCP確認(rèn)消息,判斷單元判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息,當(dāng)判斷單元判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息時(shí),則重發(fā)RTP數(shù)據(jù)組,并由刪除單元?jiǎng)h除本地存儲的RTP數(shù)據(jù)組,使得數(shù)據(jù)丟包的情況下,也可以重發(fā)丟包數(shù)據(jù),從而媒體數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中更加穩(wěn)定可靠,從而減少由于網(wǎng)絡(luò)擁塞、震蕩導(dǎo)致的圖像、聲音停頓,即使出現(xiàn)丟掉請求重傳的數(shù)據(jù)包、連續(xù)丟包,也能讓圖像清晰流暢。
實(shí)施例七圖7示出了本發(fā)明實(shí)施例七提供的RTP數(shù)據(jù)接收的系統(tǒng)的結(jié)構(gòu)圖,為了便于說明, 僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,該系統(tǒng)可以是位于視頻設(shè)備中的軟件單元、硬件單元或者軟硬結(jié)合單元。在本發(fā)明實(shí)施例中,該系統(tǒng)具體包括判斷單元71和消息發(fā)送單元72,其中,判斷單元71判斷當(dāng)前接收的數(shù)據(jù)之前指定范圍內(nèi)接收的RTP數(shù)據(jù)中是否有丟包。當(dāng)判斷單元71判斷有丟包時(shí),消息發(fā)送單元72檢查丟包中是否含有重排超時(shí)數(shù)據(jù)包,當(dāng)檢查丟包中含有重排超時(shí)數(shù)據(jù)包時(shí),發(fā)送RTCP確認(rèn)消息到發(fā)送端,重排超時(shí)數(shù)據(jù)包為丟包中超過預(yù)設(shè)確認(rèn)時(shí)間閾值尚未發(fā)送RTCP確認(rèn)消息的數(shù)據(jù)包;當(dāng)判斷單元71判斷無丟包時(shí),消息發(fā)送單元72判斷接收緩沖區(qū)中接收的數(shù)據(jù)包的個(gè)數(shù)是否達(dá)到RTCP確認(rèn)消息分組中能夠存儲的最大數(shù)據(jù)包個(gè)數(shù),當(dāng)判斷達(dá)到RTCP確認(rèn)消息分組中能夠存儲的最大數(shù)據(jù)包個(gè)數(shù),發(fā)送RTCP確認(rèn)消息到發(fā)送端。實(shí)施例八圖八示出了本發(fā)明實(shí)施例八提供的抗網(wǎng)絡(luò)丟包的系統(tǒng)的結(jié)構(gòu)圖,為了便于說明, 僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,該系統(tǒng)可以是位于IP視訊會議系統(tǒng)終端中的軟件單元,硬件單元或者軟硬結(jié)合的單元。系統(tǒng)包括接收端82和發(fā)送端81,其中,發(fā)送端81包括發(fā)送單元811向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP確認(rèn)消息。判斷單元812判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息。當(dāng)判斷單元812判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息時(shí),則重發(fā)單元 813重發(fā)RTP數(shù)據(jù)組。刪除單元814刪除本地保留的上述重發(fā)的RTP數(shù)據(jù)組。接收端82包括判斷單元821和消息發(fā)送單元822,其中,判斷單元821判斷當(dāng)前接收的數(shù)據(jù)之前指定范圍內(nèi)接收的RTP數(shù)據(jù)中是否有丟包。當(dāng)判斷單元821判斷有丟包時(shí),消息發(fā)送單元822檢查丟包中是否含有重排超時(shí)數(shù)據(jù)包,當(dāng)檢查丟包中含有重排超時(shí)數(shù)據(jù)包時(shí),發(fā)送RTCP確認(rèn)消息到發(fā)送端,重排超時(shí)數(shù)據(jù)包為丟包中超過預(yù)設(shè)確認(rèn)時(shí)間閾值尚未發(fā)送RTCP確認(rèn)消息的數(shù)據(jù)包;或者當(dāng)判斷單元821判斷無丟包時(shí),消息發(fā)送單元822判斷接收緩沖區(qū)中接收的數(shù)據(jù)包的個(gè)數(shù)是否達(dá)到RTCP確認(rèn)消息分組中能夠存儲的最大數(shù)據(jù)包個(gè)數(shù),當(dāng)判斷達(dá)到 RTCP確認(rèn)消息分組中能夠存儲的最大數(shù)據(jù)包個(gè)數(shù),發(fā)送RTCP確認(rèn)消息到發(fā)送端。綜上,本發(fā)明實(shí)施例通過發(fā)送端通過向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回 RTCP確認(rèn)消息,判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息,當(dāng)判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息時(shí),則重發(fā)RTP數(shù)據(jù)組,并刪除本地存儲的RTP數(shù)據(jù)組,使得數(shù)據(jù)丟包的情況下,也可以重發(fā)丟包數(shù)據(jù),從而媒體數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中更加穩(wěn)定可靠,從而減少由于網(wǎng)絡(luò)擁塞、震蕩導(dǎo)致的圖像、聲音停頓,即使出現(xiàn)丟掉請求重傳的數(shù)據(jù)包、連續(xù)丟包,也能讓圖像清晰流暢。值得注意的是,上述裝置和系統(tǒng)實(shí)施例中,所包括的各個(gè)單元只是按照功能邏輯進(jìn)行劃分的,但并不局限于上述的劃分,只要能夠?qū)崿F(xiàn)相應(yīng)的功能即可;另外,各功能單元的具體名稱也只是為了便于相互區(qū)分,并不用于限制本發(fā)明的保護(hù)范圍。另外,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述各實(shí)施例方法中的全部或部分步驟是可以通過程序來指令相關(guān)的硬件來完成,相應(yīng)的程序可以存儲于一計(jì)算機(jī)可讀取存儲介質(zhì)中,所述的存儲介質(zhì),如ROM/RAM、磁盤或光盤等。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種RTP數(shù)據(jù)超時(shí)重發(fā)的方法,其特征在于,所述方法包括下述步驟 向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP確認(rèn)消息;判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息;當(dāng)判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息,則重發(fā)所述RTP數(shù)據(jù)組;刪除所述RTP數(shù)據(jù)組。
2.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括下述步驟當(dāng)判斷在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息,則判斷RTCP確認(rèn)消息中是否包含丟包信息;當(dāng)判斷所述RTCP確認(rèn)消息中包含丟包信息時(shí),則重發(fā)所述RTP數(shù)據(jù)組中的丟包數(shù)據(jù)。
3.如權(quán)利要求1所述的方法,其特征在于,所述方法還包括通過調(diào)整預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)動態(tài)調(diào)整預(yù)設(shè)超時(shí)時(shí)間的步驟,具體為如果在超時(shí)緩沖區(qū)存儲的數(shù)據(jù)包的個(gè)數(shù)未達(dá)到預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N之前收到所述RTCP確認(rèn)消息,則減小所述預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N以減小預(yù)設(shè)超時(shí)時(shí)間;如果在超時(shí)緩沖區(qū)存儲的數(shù)據(jù)包的個(gè)數(shù)達(dá)到預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N之后仍未收到所述RTCP確認(rèn)消息,則增大所述預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N以增加預(yù)設(shè)超時(shí)時(shí)間;其中,MIN < N < MAX, MIN為超時(shí)緩沖區(qū)能夠存儲的數(shù)據(jù)包的最小值,MAX為超時(shí)緩沖區(qū)能夠存儲的數(shù)據(jù)包的最大值。
4.如權(quán)利要求3所述的方法,其特征在于,減小所述預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N的步驟具體為將所述超時(shí)緩沖區(qū)預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)減小M,且減小后數(shù)據(jù)包的個(gè)數(shù)N-M > MIN ; 增大所述預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N的步驟具體為將所述超時(shí)緩沖區(qū)預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)增加M,且增加后數(shù)據(jù)包的個(gè)數(shù)N+M < MAX。
5.一種RTP數(shù)據(jù)超時(shí)重發(fā)的系統(tǒng),其特征在于,所述系統(tǒng)包括發(fā)送單元,用于向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP確認(rèn)消息; 判斷單元,用于判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息; 重發(fā)單元,用于當(dāng)所述判斷單元判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息時(shí),則重發(fā)所述RTP數(shù)據(jù)組;刪除單元,用于刪除所述RTP數(shù)據(jù)組。
6.如權(quán)利要求5所述的系統(tǒng),其特征在于,所述重發(fā)單元還用于,當(dāng)所述判斷單元判斷在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息,則判斷RTCP確認(rèn)消息中是否包含丟包信息, 當(dāng)判斷所述RTCP確認(rèn)消息中包含丟包信息時(shí),則重發(fā)所述RTP數(shù)據(jù)組中的丟包數(shù)據(jù)。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述重發(fā)單元還包括調(diào)整模塊,用于通過調(diào)整預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)動態(tài)調(diào)整預(yù)設(shè)超時(shí)時(shí)間; 所述調(diào)整模塊還包括第一調(diào)整子模塊,用于如果在超時(shí)緩沖區(qū)存儲的數(shù)據(jù)包的個(gè)數(shù)未達(dá)到預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N之前收到所述RTCP確認(rèn)消息,則減小所述預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N以減小預(yù)設(shè)超時(shí)時(shí)間;所述調(diào)整模塊還包括第二調(diào)整子模塊,用于如果在超時(shí)緩沖區(qū)存儲的數(shù)據(jù)包的個(gè)數(shù)達(dá)到預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N之后仍未收到所述RTCP確認(rèn)消息,則增大所述預(yù)設(shè)存儲的數(shù)據(jù)包個(gè)數(shù)N以增加預(yù)設(shè)超時(shí)時(shí)間;其中,MIN < N < MAX, MIN為超時(shí)緩沖區(qū)能夠存儲的數(shù)據(jù)包的最小值,MAX為超時(shí)緩沖區(qū)能夠存儲的數(shù)據(jù)包的最大值。
8. 一種視頻終端,其特征在于,所述視頻終端包括權(quán)利要求5至7任一權(quán)利要求所述的 RTP數(shù)據(jù)超時(shí)重發(fā)的系統(tǒng)。
全文摘要
本發(fā)明適用于網(wǎng)絡(luò)傳輸技術(shù)領(lǐng)域,提供了一種RTP數(shù)據(jù)超時(shí)重發(fā)的方法、系統(tǒng)和視頻終端,所述數(shù)據(jù)超時(shí)重發(fā)的方法包括下述步驟向接收端發(fā)送RTP數(shù)據(jù)組,以使接收端返回RTCP確認(rèn)消息。判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息。當(dāng)判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息,則重發(fā)所述RTP數(shù)據(jù)組。并刪除所述RTP數(shù)據(jù)組。本發(fā)明通過判斷是否是在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到RTCP確認(rèn)消息,當(dāng)判斷未在預(yù)設(shè)超時(shí)時(shí)間內(nèi)接收到所述RTCP確認(rèn)消息,則重發(fā)RTP數(shù)據(jù)組,使得數(shù)據(jù)丟包的情況下,也可以重發(fā)丟包數(shù)據(jù),從而媒體數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中更加穩(wěn)定可靠。
文檔編號H04L1/18GK102170340SQ20111009005
公開日2011年8月31日 申請日期2011年4月8日 優(yōu)先權(quán)日2011年4月8日
發(fā)明者劉達(dá) 申請人:深圳市捷視飛通科技有限公司