端接收到是不連續(xù)的視頻數(shù)據(jù)包,根據(jù)視頻數(shù)據(jù)包序號(hào)計(jì)算出丟失的視頻數(shù)據(jù)包,每一個(gè)丟失的視頻數(shù)據(jù)包生成一個(gè)對(duì)應(yīng)的丟包序號(hào)信息,存放入重傳請(qǐng)求隊(duì)列中,重傳請(qǐng)求隊(duì)列用來記錄各個(gè)丟包的丟包序號(hào)信息,丟包序號(hào)信息包括視頻數(shù)據(jù)包的序列號(hào)和等待值,等待值初始為0,接收端每接收到一個(gè)視頻數(shù)據(jù)包則重傳請(qǐng)求隊(duì)列刷新一次,每刷新一次所有丟包序號(hào)信息中的等待值加1,
若接收端接收到的視頻數(shù)據(jù)流是連續(xù)視頻數(shù)據(jù)包則繼續(xù)接收視頻數(shù)據(jù)包,接收到的視頻數(shù)據(jù)包按照視頻數(shù)據(jù)包序列號(hào)從小到大的順序依次放入數(shù)據(jù)輸出緩沖區(qū)。
[0013]若接收端收到視頻數(shù)據(jù)包是重傳視頻數(shù)據(jù)包(根據(jù)序號(hào)判斷),則根據(jù)重傳視頻數(shù)據(jù)包的視頻數(shù)據(jù)包序號(hào)將重傳請(qǐng)求隊(duì)列中對(duì)應(yīng)的丟包序號(hào)信息移除,同時(shí)將重傳視頻數(shù)據(jù)包存儲(chǔ)在數(shù)據(jù)輸出緩沖區(qū);存儲(chǔ)動(dòng)作需要判斷所述數(shù)據(jù)輸出緩沖區(qū)是否溢出,如數(shù)據(jù)輸出緩沖區(qū)已滿,則將數(shù)據(jù)輸出緩沖區(qū)前端的視頻數(shù)據(jù)包(即視頻數(shù)據(jù)包序列號(hào)最小的視頻數(shù)據(jù)包)移除后,再將重傳視頻數(shù)據(jù)包按照視頻數(shù)據(jù)包序列號(hào)的順序存放在數(shù)據(jù)輸出緩沖區(qū);
當(dāng)?shù)却翟黾拥降却y值(等待閥值可設(shè)置)后,接收端根據(jù)等待值達(dá)到等待閾值的丟包序號(hào)信息中的序列號(hào)即時(shí)生成重傳請(qǐng)求數(shù)據(jù)包發(fā)送至發(fā)送端,此時(shí)上述丟包序號(hào)信息中的等待值歸O;重傳請(qǐng)求數(shù)據(jù)包內(nèi)容為丟失的視頻數(shù)據(jù)包序號(hào),格式為標(biāo)準(zhǔn)RTP數(shù)據(jù)包格式;接收端同一時(shí)間生成的重傳請(qǐng)求數(shù)據(jù)包數(shù)量有上限;接收端提供接口對(duì)所述的等待閥值和重傳請(qǐng)求數(shù)據(jù)包生成數(shù)量上限值(根據(jù)實(shí)際帶寬值設(shè)置,一般最大為10)可設(shè)置;
C2、接收端每接收到一個(gè)視頻數(shù)據(jù)包,各個(gè)丟包序號(hào)信息中的等待值加I ;
C3、當(dāng)重傳請(qǐng)求隊(duì)列中的丟包序號(hào)信息過期時(shí),過期即所述丟包序號(hào)信息包含的序列號(hào)小于數(shù)據(jù)輸出緩沖區(qū)最前端的視頻數(shù)據(jù)包序列號(hào)(即視頻數(shù)據(jù)包序列號(hào)最小的視頻數(shù)據(jù)包的序列號(hào)),所述丟包序號(hào)信息也會(huì)從所述重傳請(qǐng)求隊(duì)列移除; 如上所述的步驟D還包括以下步驟:
D1、發(fā)送端收到重傳請(qǐng)求后,會(huì)將重傳請(qǐng)求數(shù)據(jù)包進(jìn)行解析,獲取丟失視頻數(shù)據(jù)包的序號(hào),在待重傳視頻數(shù)據(jù)包隊(duì)列中查找對(duì)應(yīng)的視頻數(shù)據(jù)包,待重傳視頻數(shù)據(jù)包隊(duì)列指發(fā)送端發(fā)出去的所有視頻數(shù)據(jù)包的一個(gè)備份存儲(chǔ)區(qū);
D2、發(fā)送端收到重傳請(qǐng)求后會(huì)檢測(cè)重傳權(quán)標(biāo)值是否有效,重傳權(quán)標(biāo)值小于固定單位則無效,重傳請(qǐng)求數(shù)據(jù)包丟棄;重傳權(quán)標(biāo)值等于或大于固定單位則有效,重傳權(quán)標(biāo)值減少一個(gè)固定單位,將對(duì)應(yīng)序列號(hào)的視頻數(shù)據(jù)包發(fā)送給接收端;
以上對(duì)本發(fā)明實(shí)施例所提供的一種實(shí)現(xiàn)流量控制的丟包重傳方法進(jìn)行了詳細(xì)介紹,通過上述方法可以實(shí)現(xiàn)當(dāng)視頻會(huì)議或者視頻監(jiān)控過程中網(wǎng)絡(luò)不穩(wěn)定,存在很大的丟包率情況下仍然可以完整效率的傳輸音視頻資源,且可以實(shí)現(xiàn)將網(wǎng)絡(luò)流量控制住,防止過度重傳數(shù)據(jù)導(dǎo)致流量增長(zhǎng)過大以及瞬間大量重傳導(dǎo)致對(duì)傳輸網(wǎng)絡(luò)產(chǎn)生沖擊,以至于斷網(wǎng),讓點(diǎn)播的圖像不花屏也不黑屏。
[0014]本文中所描述的具體實(shí)施例僅僅是對(duì)本發(fā)明精神作舉例說明。本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員可以對(duì)所描述的具體實(shí)施例做各種各樣的修改或補(bǔ)充或采用類似的方式替代,但并不會(huì)偏離本發(fā)明的精神或者超越所附權(quán)利要求書所定義的范圍。
【主權(quán)項(xiàng)】
1.一種實(shí)現(xiàn)流量控制的丟包重傳方法,其特征在于,包括以下步驟: 步驟1、發(fā)送端設(shè)置重傳權(quán)標(biāo)的固定單位以及上限閥值; 步驟2、發(fā)送端使用標(biāo)準(zhǔn)RTP數(shù)據(jù)包格式將視頻數(shù)據(jù)包發(fā)送給接收端,發(fā)送端每發(fā)送一個(gè)視頻數(shù)據(jù)包,重傳權(quán)標(biāo)值增加一個(gè)固定單位,重傳權(quán)標(biāo)值達(dá)到上限閥值后不再增長(zhǎng); 步驟3、接收端設(shè)置一個(gè)重傳請(qǐng)求隊(duì)列, 若接收端接收到是不連續(xù)的視頻數(shù)據(jù)包,每一個(gè)丟失的視頻數(shù)據(jù)包生成一個(gè)對(duì)應(yīng)的丟包序號(hào)信息,存放入重傳請(qǐng)求隊(duì)列中,丟包序號(hào)信息包括視頻數(shù)據(jù)包的序列號(hào)和等待值,等待值初始為O ; 若接收端接收到是連續(xù)的視頻數(shù)據(jù)包,則繼續(xù)接收下一個(gè)視頻數(shù)據(jù)包,將接收到的視頻數(shù)據(jù)包按照視頻數(shù)據(jù)包序列號(hào)從小到大的順序依次放入數(shù)據(jù)輸出緩沖區(qū); 若接收端收到的是重傳的視頻數(shù)據(jù)包,則根據(jù)重傳視頻數(shù)據(jù)包的視頻數(shù)據(jù)包序號(hào)將重傳請(qǐng)求隊(duì)列中對(duì)應(yīng)的丟包序號(hào)信息移除,同時(shí)將重傳的視頻數(shù)據(jù)包存儲(chǔ)在數(shù)據(jù)輸出緩沖區(qū); 接收端每接收到一個(gè)視頻數(shù)據(jù)包,將所有丟包序號(hào)信息中的等待值各加1,當(dāng)?shù)却翟黾拥降却y值后,接收端根據(jù)等待值達(dá)到等待閾值的丟包序號(hào)信息中的序列號(hào)即時(shí)生成重傳請(qǐng)求數(shù)據(jù)包發(fā)送至發(fā)送端并將該丟包序號(hào)信息中的等待值歸O ; 步驟4、發(fā)送端接收到重傳請(qǐng)求后,將丟失的視頻數(shù)據(jù)包重新發(fā)送給接收端。
2.根據(jù)權(quán)利要求1所述的一種實(shí)現(xiàn)流量控制的丟包重傳方法,其特征在于,所述的將重傳視頻數(shù)據(jù)包存儲(chǔ)在數(shù)據(jù)輸出緩沖區(qū)包括以下步驟: 判斷所述數(shù)據(jù)輸出緩沖區(qū)是否溢出, 若數(shù)據(jù)輸出緩沖區(qū)已滿,則將數(shù)據(jù)輸出緩沖區(qū)前端的視頻數(shù)據(jù)包,即視頻數(shù)據(jù)包序列號(hào)最小的視頻數(shù)據(jù)包移除后,再將重傳視頻數(shù)據(jù)包按照視頻數(shù)據(jù)包序列號(hào)的順序存放在數(shù)據(jù)輸出緩沖區(qū); 若數(shù)據(jù)輸出緩沖區(qū)未滿,則將重傳視頻數(shù)據(jù)包按照視頻數(shù)據(jù)包序列號(hào)的順序存放在數(shù)據(jù)輸出緩沖區(qū)。
3.根據(jù)權(quán)利要求2所述的一種實(shí)現(xiàn)流量控制的丟包重傳方法,其特征在于,所述的步驟2當(dāng)重傳請(qǐng)求隊(duì)列中的丟包序號(hào)信息的序列號(hào)小于數(shù)據(jù)輸出緩沖區(qū)最前端的視頻數(shù)據(jù)包序列號(hào),上述丟包序號(hào)信息從所述重傳請(qǐng)求隊(duì)列移除。
4.根據(jù)權(quán)利要求1所述的一種實(shí)現(xiàn)流量控制的丟包重傳方法,其特征在于,所述的步驟4包括以下步驟: 步驟4.1、發(fā)送端收到重傳請(qǐng)求后,將重傳請(qǐng)求數(shù)據(jù)包進(jìn)行解析,獲取丟失視頻數(shù)據(jù)包的序號(hào),在待重傳視頻數(shù)據(jù)包隊(duì)列中查找對(duì)應(yīng)的視頻數(shù)據(jù)包,待重傳視頻數(shù)據(jù)包隊(duì)列為發(fā)送端發(fā)出去的所有視頻數(shù)據(jù)包的一個(gè)備份存儲(chǔ)區(qū); 步驟4.2、發(fā)送端收到重傳請(qǐng)求后會(huì)檢測(cè)重傳權(quán)標(biāo)值是否有效, 若重傳權(quán)標(biāo)值小于固定單位則無效,重傳請(qǐng)求數(shù)據(jù)包丟棄; 若重傳權(quán)標(biāo)值等于或大于固定單位則有效,重傳權(quán)標(biāo)值減少一個(gè)固定單位,將對(duì)應(yīng)序列號(hào)的視頻數(shù)據(jù)包發(fā)送給接收端。
【專利摘要】本發(fā)明公開了一種實(shí)現(xiàn)流量控制的丟包重傳方法;發(fā)送端使用標(biāo)準(zhǔn)RTP數(shù)據(jù)包格式將視頻數(shù)據(jù)發(fā)送給接收端;接收端對(duì)接收到的視頻數(shù)據(jù)流進(jìn)行處理,如檢測(cè)結(jié)果為有視頻數(shù)據(jù)包丟失情況發(fā)生,則以標(biāo)準(zhǔn)RTP數(shù)據(jù)包格式發(fā)送重傳請(qǐng)求給發(fā)送端;發(fā)送端接收到重傳請(qǐng)求后,進(jìn)行處理,將丟失的視頻數(shù)據(jù)包重新發(fā)送給接收端。本發(fā)明更能適應(yīng)惡劣網(wǎng)絡(luò)環(huán)境,即時(shí)存在很大丟包率情況下仍然可以傳輸音視頻數(shù)據(jù);實(shí)現(xiàn)網(wǎng)絡(luò)流量控制,避免網(wǎng)絡(luò)因流量峰值過高而受到?jīng)_擊;惡劣網(wǎng)絡(luò)環(huán)境仍然可以完整效率傳輸音視頻數(shù)據(jù),音視頻資源不會(huì)損失;在帶寬冗余不大的網(wǎng)絡(luò)環(huán)境仍能適應(yīng)高達(dá)40%的丟包恢復(fù)能力,并且視頻傳輸延時(shí)控制在5S左右。
【IPC分類】H04N21-647
【公開號(hào)】CN104768081
【申請(qǐng)?zhí)枴緾N201510184285
【發(fā)明人】程家明
【申請(qǐng)人】武漢興圖新科電子股份有限公司
【公開日】2015年7月8日
【申請(qǐng)日】2015年4月17日