




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Good is good, but better carries it.精益求精,善益求善。一種通過在服務(wù)器端建立動(dòng)態(tài)內(nèi)存去網(wǎng)絡(luò)抖動(dòng)的方法-說明書摘要本發(fā)明涉及一種通過在服務(wù)器端建立動(dòng)態(tài)內(nèi)存去網(wǎng)絡(luò)抖動(dòng)的方法。視頻監(jiān)控終端與視頻監(jiān)控前端設(shè)備通常按照B/S或者C/S的架構(gòu)一對(duì)一或者多對(duì)一的方式通信。在傳輸層使用TCP協(xié)議,提高數(shù)據(jù)傳輸?shù)目煽啃裕WC每幀數(shù)據(jù)到達(dá)的完整性及有序性;服務(wù)器端采集的視頻數(shù)據(jù)經(jīng)H.264視頻編碼后,以圖像幀為單位存放到發(fā)送數(shù)據(jù)緩沖區(qū),發(fā)送緩沖區(qū)以環(huán)形方式組織,保證數(shù)據(jù)的實(shí)時(shí)性;服務(wù)器端定時(shí)檢查當(dāng)前視頻流狀態(tài)及連接數(shù)量來判斷是否采用為每個(gè)連接獨(dú)立分配緩存的方式,來解決網(wǎng)絡(luò)抖動(dòng)
2、的問題。本發(fā)明以動(dòng)態(tài)分配獨(dú)立內(nèi)存的方式解決了網(wǎng)絡(luò)傳輸?shù)膩G包和亂序問題,將視頻圖像以幀為單位存放于每個(gè)獨(dú)立環(huán)形緩沖區(qū)中,提高了視頻監(jiān)控系統(tǒng)整體抗干擾能力,為終端用戶提供較好的視頻圖像質(zhì)量。權(quán)利要求書1.一種通過在服務(wù)器端建立動(dòng)態(tài)內(nèi)存去網(wǎng)絡(luò)抖動(dòng)的方法,其特征在于,包括步驟:步驟S1:服務(wù)器端初始化公共環(huán)形緩沖區(qū)。步驟S2:服務(wù)器端為新的訪問端建立TCP連接,并記錄當(dāng)前連接數(shù)。步驟S3:服務(wù)器端檢測當(dāng)前視頻流狀態(tài),如果滿足一定閾值,則為每個(gè)訪問端新分配環(huán)形緩沖區(qū),用于視頻流的獨(dú)立傳輸,如果不是,則恢復(fù)使用公共環(huán)形緩沖區(qū)。步驟S4:返回步驟S2進(jìn)行循環(huán)執(zhí)行。2.根據(jù)權(quán)利要求1所述的一種通過在服務(wù)器端建
3、立動(dòng)態(tài)內(nèi)存去網(wǎng)絡(luò)抖動(dòng)的方法,其特征在于,上述步驟S1中新建的客戶端連接均以此公共環(huán)形緩沖區(qū)為默認(rèn)視頻流發(fā)送緩沖區(qū)。3.根據(jù)權(quán)利要求1所述的一種通過在服務(wù)器端建立動(dòng)態(tài)內(nèi)存去網(wǎng)絡(luò)抖動(dòng)的方法,其特征在于,上述步驟S2中為了保證鏈接可靠性,服務(wù)器端為新的訪問端建立TCP連接,并記錄當(dāng)前連接數(shù)。3.根據(jù)權(quán)利要求1所述的一種通過在服務(wù)器端建立動(dòng)態(tài)內(nèi)存去網(wǎng)絡(luò)抖動(dòng)的方法,其特征在于,上述步驟S3中如果CurLinkNum*CurBitRateTHRESHOLD_PAYLOAD條件成立,則將為每一個(gè)新建連接單獨(dú)分配環(huán)形緩沖區(qū)存放待發(fā)送碼流,而不再是公用同一個(gè)緩沖區(qū)。其中,CurLinkNum為當(dāng)前連接數(shù),Cur
4、BitRate為當(dāng)前碼流碼率大小,THRESHOLD_PAYLOAD為負(fù)載閾值,根據(jù)實(shí)際網(wǎng)絡(luò)帶寬等條件設(shè)定。如果條件不成立,則仍然使用公共緩沖區(qū)存放待發(fā)送碼流。3.根據(jù)權(quán)利要求1所述的一種通過在服務(wù)器端建立動(dòng)態(tài)內(nèi)存去網(wǎng)絡(luò)抖動(dòng)的方法,其特征在于,上述步驟S4中,通過步驟S2所建立之線程循環(huán)判斷,在公共緩沖區(qū)方式與使用新分配內(nèi)存方式間切換。說明書一種通過在服務(wù)器端建立動(dòng)態(tài)內(nèi)存去網(wǎng)絡(luò)抖動(dòng)的方法技術(shù)領(lǐng)域本發(fā)明涉及一種通過在服務(wù)器端建立動(dòng)態(tài)內(nèi)存去網(wǎng)絡(luò)抖動(dòng)的方法,尤其可應(yīng)用于網(wǎng)絡(luò)視頻服務(wù)器在QoS(網(wǎng)絡(luò)服務(wù)質(zhì)量)較差下多點(diǎn)實(shí)時(shí)視頻的傳輸。背景技術(shù)隨著EtherNet技術(shù)的不斷發(fā)展,IPC(網(wǎng)絡(luò)視頻監(jiān)控設(shè)備
5、)逐漸成為安防領(lǐng)域發(fā)展的一個(gè)熱點(diǎn)。利用現(xiàn)有的IP寬帶網(wǎng)絡(luò),便可以實(shí)現(xiàn)遠(yuǎn)程視頻監(jiān)控,而不用單獨(dú)建設(shè)視頻專線。在實(shí)際監(jiān)控應(yīng)用中,通常會(huì)出現(xiàn)多個(gè)客戶端同時(shí)連接同一個(gè)監(jiān)控前端進(jìn)行視頻監(jiān)控的案例,即多個(gè)客戶端同時(shí)連接同一個(gè)前端服務(wù)器。且隨著高清視頻監(jiān)控的普及,視頻碼流碼率更是與日俱增,因?yàn)閿?shù)據(jù)量大,就容易使傳輸?shù)囊曨l流出現(xiàn)丟包、亂序的問題,導(dǎo)致了接收客戶端的解碼器不能正確解碼視頻流,給終端用戶呈現(xiàn)的就是解碼錯(cuò)誤的視頻圖像?,F(xiàn)在主要采用的技術(shù)為連接同一個(gè)服務(wù)器的多個(gè)客戶端共同使用同一個(gè)緩沖池,對(duì)同一幀碼流,只有對(duì)每個(gè)客戶端發(fā)送碼流數(shù)據(jù)包完畢之后,再釋放這片緩存,這樣對(duì)數(shù)據(jù)量不大、網(wǎng)絡(luò)環(huán)境較好的條件下可以減
6、少網(wǎng)絡(luò)延遲,但是,對(duì)于高清視頻來說,數(shù)據(jù)量大,現(xiàn)有方法就存在局限性,容易導(dǎo)致丟包和亂序的問題,因此,現(xiàn)有的技術(shù)存在改進(jìn)和發(fā)展的空間。發(fā)明內(nèi)容為了克服前端高清設(shè)備在被多路客戶端同時(shí)訪問時(shí),因?yàn)閿?shù)據(jù)量大,容易使視頻圖像產(chǎn)生網(wǎng)絡(luò)抖動(dòng)的缺點(diǎn),本發(fā)明提供了一種通過在服務(wù)器端建立動(dòng)態(tài)內(nèi)存去網(wǎng)絡(luò)抖動(dòng)的方法,在視頻高碼率及多客戶端同時(shí)訪問條件下,通過在服務(wù)器端為每個(gè)訪問端獨(dú)立分配內(nèi)存,這樣使得為每個(gè)訪問端的碼流傳輸具有獨(dú)立性,防止了丟包和亂序等現(xiàn)象。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種通過在服務(wù)器端建立動(dòng)態(tài)內(nèi)存去網(wǎng)絡(luò)抖動(dòng)的方法,包括如下步驟:步驟S1:服務(wù)器端初始化公共環(huán)形緩沖區(qū)。步驟S2:服務(wù)器端為
7、新的訪問端建立TCP連接,并記錄當(dāng)前連接數(shù)。步驟S3:服務(wù)器端檢測當(dāng)前視頻流狀態(tài),如果滿足一定閾值,則為每個(gè)訪問端新分配環(huán)形緩沖區(qū),用于視頻流的獨(dú)立傳輸,如果不是,則恢復(fù)使用公共環(huán)形緩沖區(qū)。步驟S4:返回步驟S2進(jìn)行循環(huán)執(zhí)行。上述步驟S1中新建的連接均以此公共環(huán)形緩沖區(qū)為默認(rèn)視頻流發(fā)送緩沖區(qū)。上述步驟S2中為了保證鏈接可靠性,服務(wù)器端為新的訪問端建立TCP連接,并記錄當(dāng)前連接數(shù)。上述步驟S3中如果CurLinkNum*CurBitRateTHRESHOLD_PAYLOAD條件成立,則將為每一個(gè)新建連接單獨(dú)分配環(huán)形緩沖區(qū)存放待發(fā)送碼流,而不再是公用同一個(gè)緩沖區(qū)。其中,CurLinkNum為當(dāng)前連
8、接數(shù),CurBitRate為當(dāng)前碼流碼率大小,THRESHOLD_PAYLOAD為負(fù)載閾值,根據(jù)實(shí)際網(wǎng)絡(luò)帶寬等條件設(shè)定。如果條件不成立,則仍然使用公共緩沖區(qū)存放待發(fā)送碼流。上述步驟S4中,通過步驟S2所建立之線程循環(huán)判斷,在公共緩沖區(qū)方式與使用新分配內(nèi)存方式間切換。與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果是:通過在服務(wù)器端為新的訪問點(diǎn)建立動(dòng)態(tài)內(nèi)存,有效提高視頻傳輸?shù)目煽啃?,解決了視頻網(wǎng)絡(luò)傳輸抖動(dòng)的問題。具體表現(xiàn)如下:1、基于TCP作為傳輸層協(xié)議,建立公共環(huán)形緩沖區(qū),以幀為單位將視頻圖像信息存放于其中,循環(huán)覆蓋,有效解決了視頻延時(shí)的問題;2、在高碼率多連接條件下,采用動(dòng)態(tài)獨(dú)立分配內(nèi)存的方法,有效保障了視
9、頻流的正常傳輸,解決了因碼率過大或者訪問端過多導(dǎo)致了視頻流傳輸丟包、亂序而產(chǎn)生的網(wǎng)絡(luò)抖動(dòng)問題。附圖說明附圖1為系統(tǒng)結(jié)構(gòu)圖。附圖2為公共環(huán)形緩沖區(qū)示意圖。附圖3多訪問端獨(dú)立分配環(huán)形緩沖區(qū)示意圖。具體實(shí)施方式下面結(jié)合附圖2、3和具體實(shí)施例對(duì)本發(fā)明的原理進(jìn)行詳細(xì)說明。本發(fā)明所建立的整個(gè)系統(tǒng)均實(shí)現(xiàn)于服務(wù)器端,服務(wù)器端進(jìn)行視頻實(shí)時(shí)采集、H264編碼,將碼流存放于發(fā)送緩沖區(qū)中;服務(wù)器端在設(shè)定的TCP端口進(jìn)行監(jiān)聽,等待來自客戶端的視頻連接請(qǐng)求,將視頻數(shù)據(jù)包通過TCP報(bào)文分發(fā)給客戶端;服務(wù)器端判斷當(dāng)前連接狀態(tài),決定是否啟用為每個(gè)客戶端獨(dú)立分配環(huán)形緩沖區(qū)的處理方式。步驟S1:初始化公共環(huán)形緩沖區(qū),結(jié)構(gòu)如圖2所示
10、,服務(wù)器端檢測到碼流狀態(tài)在未達(dá)到閾值時(shí),均使用此公共環(huán)形緩沖區(qū)存儲(chǔ)待傳輸視頻碼流。公共環(huán)形緩沖區(qū)通過鏈表實(shí)現(xiàn),如下代碼描述了緩沖區(qū)每個(gè)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu):structFifoElementtFifoElement*next;/鏈表指針,指向緩沖區(qū)隊(duì)列inttype;tElement*chunk;structElementpthread_mutex_tlock;/緩沖區(qū)操作鎖intref;tElement*next;/鏈表指針,指向每個(gè)緩沖區(qū)中的每個(gè)片區(qū)void*data;/緩沖區(qū)數(shù)據(jù)指針intsize;對(duì)于環(huán)形緩沖區(qū)的操作:系統(tǒng)定義兩個(gè)讀寫指針Pread/Pwrite,在完成緩沖區(qū)的初始化以后讀寫
11、指針重合。工作過程中,如果Pread不等于Pwrite,那么輸出當(dāng)前Pread指向的內(nèi)容,并將Pread移到下一個(gè)節(jié)點(diǎn),否則返回?zé)o數(shù)據(jù)狀態(tài)。如果Pwrite的下一個(gè)節(jié)點(diǎn)不是Pread,那么將數(shù)據(jù)寫入Pwrite指向節(jié)點(diǎn)的數(shù)據(jù)緩沖部分,并將Pwrite移向下一個(gè)節(jié)點(diǎn)。如果Pwrite的下一個(gè)節(jié)點(diǎn)是Pread,那么首先將Pread指向下一個(gè)節(jié)點(diǎn),同時(shí)將數(shù)據(jù)寫入Pwrite的指向節(jié)點(diǎn)的數(shù)據(jù)緩沖部分,最后將Pwrite指向下一個(gè)節(jié)點(diǎn)。覆蓋舊數(shù)據(jù)的寫入方式用于確保緩沖區(qū)數(shù)據(jù)的實(shí)時(shí)性。由于緩沖區(qū)的讀寫由兩個(gè)單獨(dú)的線程完成,因此需要在讀寫前對(duì)緩沖區(qū)指針進(jìn)行加鎖操作。在通常情況下,服務(wù)器使用上述公共緩沖池向多
12、個(gè)客戶端發(fā)送數(shù)據(jù),當(dāng)某一圖像幀發(fā)送給了當(dāng)前全部有效連接之后,方能移動(dòng)Pread至下一個(gè)節(jié)點(diǎn),以此保證每個(gè)視頻連接所接收數(shù)據(jù)幀的完整性。步驟S2:服務(wù)器建立TCP服務(wù)器,監(jiān)聽來自客戶端服務(wù)請(qǐng)求。步驟S3:定時(shí)檢測服務(wù)器端碼流及客戶端連接狀態(tài),如果CurLinkNum*CurBitRateTHRESHOLD_PAYLOAD條件成立,則將為每一個(gè)新建連接單獨(dú)分配內(nèi)存作為發(fā)送緩沖區(qū)存放待發(fā)送碼流,而不再是公用同一個(gè)緩沖區(qū)。其中,CurLinkNum為當(dāng)前連接數(shù),CurBitRate為當(dāng)前碼流碼率大小,THRESHOLD_PAYLOAD為負(fù)載閾值,根據(jù)實(shí)際網(wǎng)絡(luò)帶寬等條件設(shè)定。如果條件不成立,則仍然使用公
13、共緩沖區(qū)存放待發(fā)送碼流。以下代碼實(shí)現(xiàn)了在新建連接中初始化一個(gè)獨(dú)立的環(huán)形緩沖區(qū):structDispatchpthread_mutex_tlock;tFifoBuffer*rdFifo;tPool*pool;ReadSessionrdSessionMAX_READERS;/連接數(shù);intGetMemReadID()inti=0;tDispatch*pDispatch=&gDispatch;tFifoBuffer*fifoHead=NULL;tFifoBuffer*tFifo=NULL;pthread_mutex_lock(&pDispatch-lock);/加鎖for(i=0;irdSessio
14、ni.freeFlag)/有效連接建立pDispatch-rdSessioni.freeFlag=0;tFifo=fifo_buffer_init();/分配單獨(dú)緩沖區(qū)if(NULL=tFifo)i=-1;elsepDispatch-rdSessioni.readFifo=tFifo;if(NULL=pDispatch-rdFifo)pDispatch-rdFifo=tFifo;elsefor(fifoHead=pDispatch-rdFifo;fifoHead-next;fifoHead=fifoHead-next);fifoHead-next=tFifo;pthread_mutex_unl
15、ock(&pDispatch-lock);returni;pthread_mutex_unlock(&pDispatch-lock);return-1;通過上述代碼,為每個(gè)新建立的連接都分配了一個(gè)如圖3所示的緩沖區(qū),在此之后,經(jīng)H.264編碼后的視頻碼流直接復(fù)制于各個(gè)獨(dú)立的緩沖區(qū),并分別發(fā)送至客戶端,以下代碼實(shí)現(xiàn)了碼流存儲(chǔ)于獨(dú)立分配的緩沖區(qū):voidPutChunkForWrite(tElement*chunk)tDispatch*pDispatch=&gDispatch;tFifoBuffer*readFifo=NULL;tFifoElement*elm=NULL;tPool*pool=pD
16、ispatch-pool;intlen;char*pos=NULL;if(!chunk)return;pthread_mutex_lock(&pDispatch-lock);/線程鎖if(!pDispatch-rdFifo)pthread_mutex_unlock(&pDispatch-lock);pthread_mutex_lock(&chunk-lock);pool-free(pool,chunk);pthread_mutex_unlock(&chunk-lock);return;pthread_mutex_lock(&pool-mutex);/緩沖區(qū)鎖pthread_mutex_lock
17、(&chunk-lock);len=*(int*)(chunk-data);pos=(char*)(int*)(chunk-data)+1);for(readFifo=pDispatch-rdFifo;readFifo!=NULL;readFifo=readFifo-next)elm=readFifo-get(readFifo,BLOCK_ALLOW,_LIST_PRODUCER_);if(NULL=elm)continue;*(int*)elm-chunk-data)=*(int*)(&len);memcpy(char*)(int*)elm-chunk-data)+1),pos,len);/復(fù)制碼流至緩沖區(qū)readFifo-put(readFifo,elm,_LIST_CONSUMER_);chunk-ref=0;pthread_mutex_unlock(&pool-mutex);pool-free(pool
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《課間活動(dòng)》(教案)2024-2025學(xué)年數(shù)學(xué)二年級(jí)上冊
- 2025年美容院會(huì)員協(xié)議模板
- 學(xué)習(xí)2025年雷鋒精神六十二周年主題活動(dòng)方案 合計(jì)3份
- 2025年青海省安全員A證考試題庫
- 《游山西村》歷年中考古詩欣賞試題匯編(截至2024年)
- 全國河大音像版初中信息技術(shù)七年級(jí)下冊第一章第二節(jié)《文字素材的采集》教學(xué)設(shè)計(jì)
- 歷史-云南省師范大學(xué)附屬中學(xué)2025屆高三下學(xué)期開學(xué)考試試題和答案
- 2025年??谑袉握新殬I(yè)適應(yīng)性測試題庫附答案
- 2025年度兒童游樂場主題包裝與品牌推廣合作協(xié)議書
- 2025年度個(gè)人公司資金走賬專項(xiàng)管理合同協(xié)議
- 2024年知識(shí)競賽-煙花爆竹安全管理知識(shí)競賽考試近5年真題附答案
- 民航基礎(chǔ)知識(shí)應(yīng)用題庫100道及答案解析
- 2024年黑龍江省哈爾濱市中考數(shù)學(xué)試卷(附答案)
- 2025年全國計(jì)算機(jī)二級(jí)考試模擬考試題庫及答案(共280題)
- JJF(鄂) 143-2024 路面材料強(qiáng)度試驗(yàn)儀校準(zhǔn)規(guī)范
- 臺(tái)州事業(yè)單位筆試真題2024
- 父母房產(chǎn)繼承協(xié)議書范本
- 51個(gè)行業(yè)領(lǐng)域重大事故隱患判定標(biāo)準(zhǔn)和重點(diǎn)檢查事項(xiàng)匯編
- 2024年高二化學(xué)教案 選擇性必修2(配人教版)第1課時(shí)原子結(jié)構(gòu)與性質(zhì)
- 2024-2030年中國空氣閥行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報(bào)告
- 人工智能(人工智能大數(shù)據(jù)技術(shù)相關(guān)專業(yè))全套教學(xué)課件
評(píng)論
0/150
提交評(píng)論