專利名稱:一種視頻傳輸方法、嵌入式監(jiān)控終端及監(jiān)控平臺服務器的制作方法
技術領域:
本發(fā)明屬于網(wǎng)絡傳輸領域,尤其涉及一種視頻傳輸方法、嵌入式監(jiān)控終端 及監(jiān)控平臺服務器。
背景技術:
隨著人們公共安全意識的增強,各地政府機關都加大了公共場所的視頻監(jiān) 控力度,這樣促使了安防監(jiān)控產品的飛速發(fā)展,尤其是在車載視頻監(jiān)控方面, 通過在公共公交車上裝栽嵌入式視頻監(jiān)控終端,同時通過網(wǎng)絡將音視頻傳輸?shù)?政府監(jiān)控平臺,對公交公共場所的視頻監(jiān)控,有力的保障了廣大人民的財產和 利益,增強了社會的安全感。由于公交車的特殊性,音視頻的傳輸不可能由有 線來解決。但現(xiàn)有的移動網(wǎng)絡,由于各地發(fā)展的速度不一致,大部分城市還是
處于GSM、 GPRS、 CDMA1X、 EDGE等2G或2.5G系統(tǒng),處于3G的TD和 CDMA又由于基站建設的原因,并未發(fā)揮其3G的特點。另外,由于基站的盲 區(qū),以及公交車在各個小區(qū)的切換導致網(wǎng)絡不穩(wěn)定,無線傳輸?shù)膫鬏斔俾试?20Kbps - 100Kbps/S之間,但實際上大部分地方的實際傳輸速度是在70Kbps/S 以下,100Kbps/S左右的傳輸速度都很難達到,另外由于嵌入式視頻監(jiān)控終端 傳輸圖像是通過外接無線路由器來實現(xiàn)無線數(shù)據(jù)傳輸,利用的是移動公司提供 的數(shù)據(jù)傳輸包月業(yè)務。但由于移動公司的主營業(yè)務是話音,當網(wǎng)絡處于繁忙階 段時,采取的策略是語音優(yōu)先,這樣給視頻傳輸帶來更大的不穩(wěn)定因素。
在現(xiàn)有的網(wǎng)絡條件下,由于監(jiān)控行業(yè)對圖像的特殊要求,嵌入式監(jiān)控終端 對采集的圖像采用雙碼流編碼方式,也就是本地Dl碼流和網(wǎng)絡共同界面格式 (Common Intermediate Format, CIF)碼流,Dl碼流的畫質要求是逐4亍倒相 (Phase Alternating Line, PAL )制704*576,網(wǎng)絡CIF碼流的畫質要求是PAL制352*288。為了提供穩(wěn)定的圖像視頻傳輸,現(xiàn)在大部分廠商采取的方式是通 過傳輸圖片或者四分之一寸共同界面格式(Quarter Common Intermediate Format, QCIF)的圖像,但圖片傳輸不能滿足實時性和流暢性的要求,QCIF 圖像的畫質比較模糊,難辨認而成為雞肋。比較有實力的廠商通過在嵌入式視 頻監(jiān)控終端的DSP視頻編碼中加入編碼算法,通過?;吘壔驂嚎s圖像達到降 低每幀圖像的大小,但這樣由于設備成本的增加以及壓縮算法成效不大,另外 由于移動網(wǎng)絡的不穩(wěn)定根本因素,實際增強的效果也微乎其微,投入過大而得 不償失。
現(xiàn)有的視頻傳輸方案如圖1所示,嵌入式監(jiān)控終端的DSP編碼器當采集到 一幀圖像數(shù)據(jù)后,將采集到的圖像數(shù)據(jù)放入視頻幀的發(fā)送緩存區(qū),發(fā)送線程會 從發(fā)送緩存區(qū)的發(fā)送點提取一幀的視頻幀數(shù)據(jù),然后采用裝有移動數(shù)據(jù)傳輸卡 的無線路由器通過無線網(wǎng)絡傳輸提取到的視頻幀數(shù)據(jù);監(jiān)控平臺服務器的接收 線程收到完整的視頻幀數(shù)據(jù)后,會將接收到的視頻幀數(shù)據(jù)放入視頻幀數(shù)據(jù)的接
客戶端和監(jiān)控屏幕等監(jiān)控客戶端。
另外,由于移動窄帶網(wǎng)絡不穩(wěn)定、帶寬低、變化快,而現(xiàn)有視頻傳輸方案 一4殳采用傳!敘控制協(xié)i義(Transmission Control Protocol/Internet Protocol, TCP ) 或用戶凄t據(jù)4艮協(xié)議(User Datagram Protocol, UDP )傳輸協(xié)議,雖然處理邏輯 簡單,但對網(wǎng)絡穩(wěn)定性能要求高、帶寬要求大,使得監(jiān)控視頻圖像傳輸延時大、 流暢性差,導致馬賽克等問題,很難適應現(xiàn)有移動窄帶網(wǎng)絡的視頻傳輸,達到 對視頻監(jiān)控的要求。
發(fā)明內容
本發(fā)明實施例的目的在于提供一種視頻傳輸方法,旨在解決現(xiàn)有浮見頻傳輸 方案對網(wǎng)絡穩(wěn)定性能要求高、帶寬要求大,使得視頻圖像傳輸延時大、流暢性 差的問題。本發(fā)明實施例是這樣實現(xiàn)的, 一種視頻傳輸方法,所述方法包括下述步驟 服務器通過傳輸控制協(xié)議向相應終端發(fā)送視頻請求指令; 終端通過傳輸控制協(xié)議接收服務器發(fā)送的視頻請求指令; 終端根據(jù)接收到的視頻請求指令,采用用戶數(shù)據(jù)報協(xié)議向服務器發(fā)送相應 的視頻數(shù)據(jù);
服務器通過用戶數(shù)據(jù)報協(xié)議接收終端發(fā)送的視頻數(shù)據(jù)。 本發(fā)明實施例的另 一 目的在于提供一種嵌入式監(jiān)控終端,所述嵌入式監(jiān)控 終端包括
控制指令接收單元,通過傳輸控制協(xié)議接收視頻請求指令;以及 視頻傳輸單元,根據(jù)所述控制指令接收單元接收到的視頻請求指令,采用
用戶數(shù)據(jù)報協(xié)議發(fā)送相應的視頻數(shù)據(jù)。
本發(fā)明實施例的另一目的在于提供一種監(jiān)控平臺服務器,所述監(jiān)控平臺服
務器包括
控制指令發(fā)送單元,用于通過傳輸控制協(xié)議向相應終端發(fā)送^L頻請求指令;
以及
視頻接收單元,用于通過用戶數(shù)據(jù)報協(xié)議接收視頻數(shù)據(jù)。 在本發(fā)明實施例中,終端與服務器分別采用TCP協(xié)議傳輸控制指令,采用 UDP協(xié)議傳輸相應的視頻數(shù)據(jù),實現(xiàn)了一種^L頻傳輸方法,保證了控制指令的 不容易丟失和視頻數(shù)據(jù)傳輸?shù)膶崟r性,對網(wǎng)絡穩(wěn)定性能要求低、帶寬要求小, 使得-f見頻圖像傳輸延時小、流暢性高。
圖l是現(xiàn)有技術提供的視頻傳輸方案的示意圖2是本發(fā)明實施例提供的視頻傳輸方法的實現(xiàn)流程圖3是本發(fā)明實施例提供的數(shù)據(jù)包的結構示意圖4是本發(fā)明實施例提供的服務器對接收緩存中數(shù)據(jù)包處理的設計示意圖5是本發(fā)明實施例提供的終端處理的實現(xiàn)流程圖; 圖6是本發(fā)明實施例提供的嵌入式監(jiān)控終端的結構圖; 圖7是本發(fā)明實施例提供的監(jiān)控平臺服務器的結構圖。
具體實施例方式
為了使本發(fā)明的目的、忮術方案及優(yōu)點更加清楚明白,以下結合附圖及實 施例,對本發(fā)明進行進一步詳細說明。應當理解,此處所描述的具體實施例僅 僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
在本發(fā)明實施例中,終端與服務器分別采用TCP協(xié)議傳輸控制指令,采用 UDP協(xié)議傳輸相應的視頻數(shù)據(jù)。 '
圖2示出了本發(fā)明實施例提供的視頻傳輸方法的實現(xiàn)流程,詳述如下 在步驟S201中,服務器通過TCP協(xié)議向相應終端發(fā)送視頻請求指令; 在步驟S202中,終端通過TCP協(xié)議接收服務器發(fā)送的視頻請求指令; 在步驟S203中,終端根據(jù)接收到的視頻請求指令,采用UDP協(xié)議向服務 器發(fā)送相應的視頻數(shù)據(jù);
在步驟S204中,服務器通過UDP協(xié)議接收終端發(fā)送的視頻數(shù)據(jù)。 在本發(fā)明實施例中,終端與服務器釆用TCP和UDP協(xié)議的雙通信方式對 視頻數(shù)據(jù)包進行傳輸和控制用UDP協(xié)議進行視頻數(shù)據(jù)傳輸,保證了視頻數(shù)據(jù) 傳輸?shù)膶崟r性;用TCP協(xié)議傳輸視頻請求指令,保證了視頻請求指令等控制指 令的不容易丟失。服務器是對多個終端進行管理和服務,終端的個數(shù)可以由幾 百到幾千不等,服務器和終端的連接通信一一相對應。另外,由于一個服務器 常常需要同時管理多個終端,并且由于終端的分散性、網(wǎng)絡的多變性,所以通 過月良務器主動控制終端可以更好的適應網(wǎng)絡的變化,月l務器主動性的改變成本 將大大少于因網(wǎng)絡狀態(tài)變化而引起終端升級所帶來的成本。
這里,將中間無線傳輸?shù)倪^程省略,因為傳輸是通過無線路由器來發(fā)送數(shù)
9據(jù),終端是多攝像頭的傳輸,對每個攝像頭的視頻傳輸處理方法一致,所以僅 用一個攝像頭視頻的傳輸來說明。并且,終端發(fā)送的視頻數(shù)據(jù)采用二級緩存策 略發(fā)送數(shù)據(jù)包,記錄已經(jīng)發(fā)送的數(shù)據(jù)包,回傳用戶數(shù)據(jù)報協(xié)議傳輸失敗丟失的
數(shù)據(jù)包。上述步驟S203具體為
1. 根據(jù)接收到的視頻請求指令,將編碼器產生的視頻幀數(shù)據(jù)放入一級緩存;
2. 根據(jù)二級緩存的數(shù)據(jù)包大小,將從一級緩存中取出的一幀視頻數(shù)據(jù)分成 數(shù)據(jù)包;
3. 將分成的數(shù)據(jù)包放入二級緩存并發(fā)送給服務器;
4. 通過TCP協(xié)議接收到丟包重傳指令后,從二級緩存中獲取相應的數(shù)據(jù) 包進行重發(fā)。
這里,終端的DSP編碼器會根據(jù)預設的碼率和幀率產生CIF碼流(即視頻 幀數(shù)據(jù))。當終端接收到視頻請求指令后第一次打開視頻時,DSP編碼器會首 先強制產生一個關鍵幀(KeyFrame),并將產生的視頻幀數(shù)據(jù)放入一級緩存, 然后分割幀成包發(fā)送線程會從一級緩存中提取完整一幀的視頻數(shù)據(jù),將它逐個 分成二級緩存的包大小。其中,二級緩存的數(shù)據(jù)包由包頭區(qū)和數(shù)據(jù)區(qū)組成,包 頭區(qū)用于接收端(即服務器)校驗和包的排序和幀重組,二級緩存的包大小為 移動網(wǎng)絡允許的最大傳輸單元(Maximum Transmission Unit, MTU)之內的值, 該值可以修改,最大不超過1500字節(jié)(byte)。由于數(shù)據(jù)包太大會造成數(shù)據(jù)傳 輸失敗或不完整,而數(shù)據(jù)包太小又會造成傳輸效率低,所以包的大小將根據(jù)移 動網(wǎng)絡的狀況設置一個適中的值。二級緩存用來記錄已經(jīng)發(fā)送的數(shù)據(jù)包,用來 回傳UDP傳輸失敗而丟失的數(shù)據(jù)包。關鍵幀檢查判斷用來保證當一級緩存丟失 關鍵幀后,下一個傳輸點將從下一個關鍵幀開始傳輸。重傳指令中包含了需要 重傳的包序列號,終端收到重傳指令后會重傳二級緩存中對應包序列號的視頻 數(shù)據(jù)。
數(shù)據(jù)包的大小為移動網(wǎng)絡下最大MTU以下的任意一個值,可以根據(jù)實際 情況適當調節(jié)數(shù)據(jù)包的大小以最大限度地適應移動網(wǎng)絡傳輸?shù)挠行?。?shù)據(jù)包
10的結構如圖3所示,包頭由S個字節(jié)組成。在本發(fā)明實施例中,前六個字節(jié)為 有效位,其他留著擴展備用。其中,第一個字節(jié)存儲的是終端打開的通道識別 碼(Identity, ID )(終端有多個通道);第二個字節(jié)存儲的是完整幀識別碼(ID), 標識數(shù)據(jù)包是否是完整幀的最后一個包標志;第三、四字節(jié)存儲數(shù)據(jù)包檢驗組, 用于檢驗數(shù)據(jù)包的包序列號,數(shù)據(jù)包的包序列號用于標識終端發(fā)送的各數(shù)據(jù)包; 第五、六個字節(jié)存儲關鍵幀檢驗組,用于檢驗數(shù)據(jù)包是否是關鍵幀。 第三字節(jié)=(包序列號+通道ID傘Q + P氺(^總通道ID數(shù))/256; 第四字節(jié)=(包序列號+通道H^Q + P承Q承總通道ID數(shù))%256。 其中,包序列號標識該數(shù)據(jù)包在二級緩存中的位置,Q為二級緩存能存儲 數(shù)據(jù)包的最大值,P為二級緩存存儲數(shù)據(jù)包的循環(huán)號,也就是當二級緩存存滿 后,再循環(huán)存儲時,P將加一,包序列號為0-Q之間的值,總通道ID數(shù)為終 端包含的通道數(shù)量。
第五字節(jié)-最后一個關鍵幀的包序列號/256; 第六個字節(jié)=最后一個關鍵幀的包序列號%256。 然后,服務器接收終端發(fā)送的視頻數(shù)據(jù),上述步驟S204具體為 1 .檢驗接收到的數(shù)據(jù)包是否有效,將接收到的有效數(shù)據(jù)包放入接收緩存; 2.對接收緩存中的數(shù)據(jù)包進行丟包檢驗和組幀,并在檢測到丟包時,向相 應終端發(fā)送丟包重傳指令。
當服務器的視頻接收線程通過UDP協(xié)議收到視頻包數(shù)據(jù)后,根據(jù)數(shù)據(jù)包的 包頭進行有效性校驗,當驗證數(shù)據(jù)包為合格數(shù)據(jù)后會放入相應終端的接收緩存, 對于接收緩存內的數(shù)據(jù)有丟包重傳線程和視頻包組幀線程兩個線程進行處理 丟包重傳線程會對接收緩存區(qū)逐個檢查數(shù)據(jù)是否收到,當檢查到有丟包后會通 過TCP協(xié)議向終端發(fā)送重傳控制指令,重傳指令中包含了需要重傳的包序列 號;視頻幀重組線程,會從視頻包緩存區(qū)中將收到的完整一幀的視頻數(shù)據(jù)進行 幀重組。當然,服務器的接收緩存能存儲的數(shù)據(jù)包個數(shù)與終端二級緩存能存儲 的數(shù)據(jù)包個數(shù)一致,通過接收到的數(shù)據(jù)包的包頭信息可以獲取通道ID、完整幀識別ID、包序列號、二級緩存存儲數(shù)據(jù)包的循環(huán)號和關鍵幀的包序列號。 通道ID-包頭第一個字節(jié); 完整幀識別ID=包頭第二個字節(jié);
循環(huán)號P- (第三個字節(jié)*256 +第四字節(jié))/ (Q氣t、通道ID數(shù)); 包序列號=(第三字節(jié)* 256 +第四字節(jié))% (Q*總通道ID數(shù)); 關鍵幀的包序列號=第五個字節(jié)* 256 +第六個字節(jié)。 其中,包序列號為0-Q之間的一個值,這樣連續(xù)累加的接收包序列號值 應該為
累加包序列號=循環(huán)號?*(^ +包序列號。
這樣可以避免累加的包序列號太大,超過了單個字節(jié)所能代表的最大值。 根據(jù)收到的數(shù)據(jù)包的包頭信息可以有效性地判斷并將數(shù)據(jù)包放入對應的緩存 中。
服務器對接收緩存中數(shù)據(jù)包處理的設計示意圖如圖4所示,接收點R為累 加的最大接收包序列號對最大緩存包數(shù)Q求余值所在的緩存區(qū)位置,丟包檢測 點L為累加的處理丟包重傳的包序列號對最大緩存包數(shù)Q求余值所在的緩存區(qū) 位置,視頻幀重組點N為累加的重組包序列號對最大緩存包數(shù)Q求余值所在的 緩存區(qū)位置。如果收到的包序列號為NUM,則當NUM〈N時,NUM為無效 的包序列列號;當NUM〉R時,R的值設為為該包的序列號NUM值,丟包檢 測點L將從視頻幀重組點N開始,到接收點R逐個檢測包的接收情況,并且當 檢測到丟包會向終端發(fā)送重傳指令,然后L后移,并記錄該數(shù)據(jù)包發(fā)送重傳指 令的時間,然后再輪訓檢測,監(jiān)控該數(shù)據(jù)包重傳是否超時。視頻幀重組點將從 N點開始檢測,到L點,檢測是否有完整的一幀數(shù)據(jù)收到,如果有,則重組后, 重組點后移,如果沒有,則繼續(xù)檢測。
進一步地,服務器還可以將組幀后得到的視頻幀數(shù)據(jù)分發(fā)給相應的監(jiān)控客 戶端。此時,當服務器的視頻幀重組線程首次打開視頻時,會檢測重組的第一 幀是否是關鍵幀,如果是,則將重組后的視頻幀數(shù)據(jù)放入分發(fā)緩存,由視頻幀分發(fā)線程將分發(fā)緩存中的視頻幀數(shù)據(jù)分發(fā)給相應的監(jiān)控客戶端,如果不是則要 重新組成下一個關4建幀。
另外,為了保證數(shù)據(jù)包發(fā)送的效率,服務器會監(jiān)控重傳數(shù)據(jù)包是否超時, 如果超時,會向終端發(fā)送結束重傳指令。終端接收到服務器發(fā)送的結束重傳指 令后,清空對應二級緩存中的數(shù)據(jù)包。
為了保證視頻數(shù)據(jù)的實時性和流暢性,作為本發(fā)明的一個優(yōu)選實施例,視
頻傳輸方法還包括
服務器檢測網(wǎng)絡的連接狀態(tài),在網(wǎng)絡連接成功后向相應終端發(fā)送視頻請求 指令;
服務器檢測視頻數(shù)據(jù)的傳輸時間,在視頻數(shù)據(jù)傳輸超時時向相應終端重新 發(fā)送視頻請求指令;
服務器檢測接收視頻數(shù)據(jù)狀況,根據(jù)接收視頻數(shù)據(jù)包的狀況向相應終端發(fā) 送視頻傳輸幀率控制指令,控制相應終端的視頻傳輸幀率;
終端根據(jù)接收到的視頻傳輸幀率控制指令設置編碼器產生視頻幀數(shù)據(jù)的碼 率和幀率。
在本發(fā)明實施例中,服務器端提供了網(wǎng)絡連接檢測線程、視頻傳輸超時檢 測線程和網(wǎng)絡狀態(tài)檢測線程來分別對網(wǎng)絡連接狀態(tài)、視頻數(shù)據(jù)傳輸時間和接收 視頻數(shù)據(jù)包的狀況進行檢測。服務器端的網(wǎng)絡連接檢測線程用于檢測當前網(wǎng)絡 下服務器與終端的網(wǎng)絡連接狀態(tài),當出現(xiàn)連接斷開后,如果網(wǎng)絡連接恢復,此 線程會把曾經(jīng)打開的視頻重新打開,即向相應終端發(fā)送視頻請求指令;視頻傳 輸超時檢測線程用于檢測當前打開的視頻接收數(shù)據(jù)是否正常,如果在設定的超 時時間tl內都收不到包,同時網(wǎng)絡連接線程又沒有檢測到網(wǎng)絡斷開時,此線程 會向相應終端重新發(fā)送視頻請求指令;網(wǎng)絡狀態(tài)線程用于檢測當前網(wǎng)絡的傳輸 質量,根據(jù)接收視頻數(shù)據(jù)包的速度和緩存區(qū)內的有效包個數(shù)來判斷是否是要發(fā) 送降低或是提高終端發(fā)送視頻的幀率和碼率的控制指令,即根據(jù)丟包檢測點L 跟視頻幀重組點N的差值來判斷當前網(wǎng)絡的狀態(tài)如果測定某地的移動傳輸數(shù)
13據(jù)包的緩存闊值為fl - f2,即當L跟N的差值在fl - f2之間時,視頻可以流暢 的傳輸,不需要改變幀率,當L-N〈fl時,說明緩存區(qū)偏小,當前網(wǎng)絡狀況 變差,需要發(fā)送降幀控制指令,當L-N〉f2時,說明緩存區(qū)偏大,當前網(wǎng)絡 狀況很好,需要發(fā)送提高幀率控制指令。同時,終端通過TCP協(xié)議接收服務器 發(fā)送的碼率控制信息,DSP編碼器根據(jù)接收到的碼率控制信息產生相應碼率和 幀率的CIF碼。
圖5示出了本發(fā)明實施例提供的終端處理的流程。終端的控制指令接收線 程接收服務器發(fā)送的控制指令,在接收到服務器發(fā)送的控制指令后,判斷該指 令為視頻請求指令,則進入視頻數(shù)據(jù)發(fā)送;判斷該指令為視頻傳輸幀率控制指 令,則根據(jù)該指令修改DSP編碼器產生視頻幀數(shù)據(jù)的碼率和幀率;判斷該指令 為丟包重傳指令,則從二級緩存中獲取相應的數(shù)據(jù)包進行重發(fā)。在判斷接收到 的控制指令為視頻請求指令后,DSP編碼器首先強制產生一個關鍵幀放入一級 緩存,然后判斷一級緩存的放入點是否將覆蓋發(fā)送點數(shù)據(jù),如果否,則放入DSP 編碼器產生的視頻幀數(shù)據(jù),發(fā)送線程優(yōu)先將剩余的數(shù)據(jù)分割為一個加入包頭后
的MTU大小的數(shù)據(jù)包,發(fā)送分割得到的數(shù)據(jù)包并將改數(shù)據(jù)包放入二級緩存, 如果沒有未發(fā)數(shù)據(jù),則分割幀成包發(fā)送線程從發(fā)送點發(fā)送添加包頭后的一個 MTU大小的數(shù)據(jù)包,放入二級緩存,并在發(fā)送點完整發(fā)送一幀的數(shù)據(jù)后,發(fā)送 點后移一位;如果是,則判斷當前發(fā)送點的數(shù)據(jù)是否發(fā)送完畢,發(fā)送完畢則根 據(jù)幀頭找到下一個關鍵幀,作為下一個發(fā)送數(shù)據(jù)包的發(fā)送點,未發(fā)送完畢則將 剩余的數(shù)據(jù)拷貝到剩余數(shù)據(jù)發(fā)送區(qū),發(fā)送線程優(yōu)先發(fā)送剩余的數(shù)據(jù)。
這樣,服務器根據(jù)網(wǎng)絡變化即時調整對終端的控制能有效的解決監(jiān)控視頻 的圖像延時大,流暢性差,馬賽克等問題,保證圖像傳輸?shù)膶崟r性,流暢性。
進一步地,終端還可以在發(fā)生報警或異常情況的時候,通過TCP協(xié)議向向 服務器發(fā)送報警信息,服務器根據(jù)接收到的報警信息確定是否進一步請求相應 終端的視頻等。在與服務器之間的連接斷開后,終端還可以根據(jù)服務器發(fā)送的 重連指令重新進行連接。圖6示出了本發(fā)明實施例提供的嵌入式監(jiān)控終端的結構,為了便于說明僅 示出了與本發(fā)明實施例相關的部分,其中
控制指令接收單元601,通過TCP協(xié)議接收視頻請求指令,其實現(xiàn)方式如 上所述,不再贅述。
視頻傳輸單元602,根據(jù)控制指令接收單元601接收到的視頻請求指令, 采用UDP協(xié)議發(fā)送相應的4見頻數(shù)據(jù)。
另外,視頻傳輸單元602包括編碼器6021、 一級緩存6022、分割模塊6023、 發(fā)送模塊6024、 二級緩存6025和重發(fā)模塊6026:
編碼器6021,在接收到視頻請求指令后,根據(jù)預設的碼率和幀率產生視頻 幀數(shù)據(jù),并將產生的視頻幀數(shù)據(jù)放入一級緩存6022,其實現(xiàn)方式如上所述,不 再贅述。
分割模塊6023,根據(jù)二級緩存6025的包大小,將從一級緩存6022中取出 的一幀視頻數(shù)據(jù)分成數(shù)據(jù)包,其實現(xiàn)方式如上所述,不再贅述。
發(fā)送模塊6024,將分成的數(shù)據(jù)包發(fā)送并放入二級緩存6025,其實現(xiàn)方式如 上所述,不再贅述。
重發(fā)模塊6026,接收到丟包重傳指令后,從二級緩存6025中獲取相應的 數(shù)據(jù)包進行重發(fā)。此時,控制指令接收單元601通過TCP協(xié)議接收服務器發(fā)送 的丟包重傳指令,并將接收到的丟包重傳指令輸出給重發(fā)模塊6026。
為了便于服務器對終端進行控制,作為本發(fā)明的一個優(yōu)選實施例,嵌入式 監(jiān)控終端還包括
設置模塊6027,根據(jù)接收到的視頻傳輸幀率控制指令設置編碼器6021產 生^L頻幀數(shù)據(jù)的碼率和幀率。
此時,控制指令接收單元601通過TCP協(xié)議接收服務器發(fā)送的視頻傳輸幀 率控制指令,并將接收到的視頻傳輸幀率控制指令輸出給設置模塊6027。
圖7示出了本發(fā)明實施例提供的監(jiān)控平臺服務器的結構,為了便于說明僅 示出了與本發(fā)明實施例相關的部分,其中
15控制指令發(fā)送單元701,通過TCP協(xié)議向相應終端發(fā)送視頻請求指令。 視頻接收單元702,通過UDP協(xié)議接收^L頻數(shù)據(jù)。
另外,視頻接收單元702包括有效包檢驗模塊7021、接收緩存7022、丟包 檢驗才莫塊7023和組幀模塊7024:
有效包檢驗模塊7021,檢驗接收到的數(shù)據(jù)包是否有效,將接收到的有效數(shù) 據(jù)包放入接收緩存7022。
丟包檢驗模塊7023,對接收緩存7022中的數(shù)據(jù)包進行丟包檢驗,并在檢 測到丟包時,通過控制指令發(fā)送單元701向相應終端發(fā)送丟包重傳指令,其實 現(xiàn)方式如上所述,不再贅述。
組幀模塊7024,對接收緩存7022中的數(shù)據(jù)包進行組幀,其實現(xiàn)方式如上 所述,不再贅述。
進一步地,監(jiān)控平臺服務器還包括
視頻數(shù)據(jù)分發(fā)單元703,將視頻接收單元702組幀后得到的視頻幀數(shù)據(jù)分 發(fā)給相應的監(jiān)控客戶端,其實現(xiàn)方式如上所述,不再贅述。
為了保i正纟見頻凄丈據(jù)的實時性和流暢性,作為本發(fā)明的一個優(yōu)選實施例,監(jiān) 控平臺服務器還包括
網(wǎng)絡檢測單元704,檢測網(wǎng)絡的連接狀態(tài)、視頻數(shù)據(jù)的傳輸時間和接收視 頻數(shù)據(jù)狀況,根據(jù)檢測結果通過控制指令發(fā)送單元701向相應終端發(fā)送視頻請 求指令、視頻傳輸幀率控制指令,其實現(xiàn)方式如上所述,不再贅述。
在本發(fā)明實施例中,終端與服務器分別采用TCP協(xié)議傳輸控制指令,采用 UDP協(xié)議傳輸相應的一見頻數(shù)據(jù),實現(xiàn)了一種一見頻傳輸方法,保證了控制指令的 不容易丟失和視頻數(shù)據(jù)傳輸?shù)膶崟r性,對網(wǎng)絡穩(wěn)定性能要求低、帶寬要求小, 使得視頻圖像傳輸延時小、流暢性高。
并且,通過服務器主動控制終端可以更好的適應網(wǎng)絡的變化,有效的解決 監(jiān)控視頻的圖像延時大,流暢性差,馬賽克等問題,保證圖像傳輸?shù)膶崟r性, 流暢性。本領域普通技術人員可以理解,實現(xiàn)上述實施例方法中的全部或部分步驟 是可以通過程序來指令相關的硬件來完成,所述的程序可以在存儲于一計算機
可讀取存儲介質中,所述的存儲介質,如ROM/RAM、磁盤、光盤等。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā) 明的精神和原則之內所作的任何修改、等同替換和改進等,均應包含在本發(fā)明 的寸呆護范圍之內。
權利要求
1、一種視頻傳輸方法,其特征在于,所述方法包括下述步驟服務器通過傳輸控制協(xié)議向終端發(fā)送視頻請求指令;終端通過傳輸控制協(xié)議接收服務器發(fā)送的視頻請求指令;終端根據(jù)接收到的視頻請求指令,通過用戶數(shù)據(jù)報協(xié)議向服務器發(fā)送相應的視頻數(shù)據(jù);服務器通過用戶數(shù)據(jù)報協(xié)議接收終端發(fā)送的視頻數(shù)據(jù)。
2、 如權利要求1所述的方法,其特征在于,在所述通過用戶數(shù)據(jù)報協(xié)議向 服務器發(fā)送相應的視頻數(shù)據(jù)的步驟中采用二級緩存策略發(fā)送數(shù)據(jù)包,記錄已經(jīng) 發(fā)送的數(shù)據(jù)包,回傳用戶數(shù)據(jù)報協(xié)議傳輸失敗丟失的數(shù)據(jù)包。
3、 如權利要求2所述的方法,其特征在于,所述終端根據(jù)接收到的視頻請 求指令,通過用戶數(shù)據(jù)報協(xié)議向服務器發(fā)送相應的視頻數(shù)據(jù)的步驟具體包括根據(jù)接收到的視頻請求指令,將編碼器產生的視頻幀數(shù)據(jù)放入一級緩存; 根據(jù)二級緩存的數(shù)據(jù)包大小,將從一級緩存中取出的一幀視頻數(shù)據(jù)分成數(shù) 據(jù)包;將分成的數(shù)據(jù)包放入二級緩存并發(fā)送給服務器;通過傳輸控制協(xié)議接收到丟包重傳指令后,從二級緩存中獲取相應的數(shù)據(jù) 包進行重發(fā)。
4、 如權利要求3所述的方法,其特征在于,所述數(shù)據(jù)包的包頭存儲終端打 開的通道識別碼、標識數(shù)據(jù)包是否是完整幀的最后一個數(shù)據(jù)包的完整幀識別碼、 用于檢驗數(shù)據(jù)包包序列號的數(shù)據(jù)包檢驗組和用于檢驗數(shù)據(jù)包是否是關鍵幀的關 鍵幀檢驗組。
5、 如權利要求4所述的方法,其特征在于,用兩個字節(jié)存儲所述數(shù)據(jù)包檢 驗組,數(shù)據(jù)包4全驗組的第一個字節(jié)=(包序列號+通道識別碼* Q + P *(^*通道總 數(shù))/256,數(shù)據(jù)包枱、瞼組的第二個字節(jié)=(包序列號+通道識別碼* Q + P *(^*通道總 數(shù))%256,所述包序列號標識數(shù)據(jù)包在所述二級緩存中的位置,Q為二級緩存能存儲 數(shù)據(jù)包的最大值,P為二級緩存存儲數(shù)據(jù)包的循環(huán)號,通道總數(shù)為終端包含的 通道數(shù)量;用兩個字節(jié)存儲所述關鍵幀檢驗組,關鍵幀檢驗組的第一個字節(jié)=最后一個關鍵幀的包序列號/256, 關鍵幀檢驗組的第二個字節(jié)=最后一個關鍵幀的包序列號%256。
6、 如權利要求5所述的方法,其特征在于,所述服務器通過用戶數(shù)據(jù)報協(xié) 議接收終端發(fā)送的視頻數(shù)據(jù)的步驟具體為檢驗接收到的數(shù)據(jù)包是否有效,將接收到的有效數(shù)據(jù)包放入接收緩存; 對接收緩存中的數(shù)據(jù)包進行丟包纟企驗和組幀,并在4企測到丟包時,向相應 終端發(fā)送丟包重傳指令。
7、 如權利要求6所述的方法,其特征在于,所述檢驗接收到的數(shù)據(jù)包是否 有效的步驟具體為計算接收到的數(shù)據(jù)包的累加包序列號;判斷接收到的數(shù)據(jù)包的累加包序列號是否大于當前視頻幀的重組點,如果 是則判斷該數(shù)據(jù)包有效,否則判斷該數(shù)據(jù)包無效;其中,循環(huán)號=(數(shù)據(jù)包檢驗組的第一個字節(jié)*256 +數(shù)據(jù)包檢驗組第二個 字節(jié))/ (()*通道總數(shù)),包序列號=(數(shù)據(jù)包檢驗組的第二個字節(jié)* 256 +數(shù)據(jù)包檢驗組第二個字 節(jié))% (Q *通道總數(shù)),累加包序列號=循環(huán)號* Q +包序列號,Q為所述接收緩存能存儲的數(shù)據(jù)包個數(shù),所述接收緩存能存儲的數(shù)據(jù)包個 數(shù)與終端二級緩存能存儲的數(shù)據(jù)包個數(shù)一致。
8、 如權利要求l所述的方法,其特征在于,所述方法還包括服務器檢測網(wǎng)絡的連接狀態(tài),在網(wǎng)絡連接成功后向相應終端發(fā)送視頻請求指令;服務器檢測視頻數(shù)據(jù)的傳輸時間,在3見頻數(shù)據(jù)傳輸超時時向相應終端發(fā)送 視頻請求指令;服務器檢測接收視頻數(shù)據(jù)狀況,根據(jù)接收視頻數(shù)據(jù)包的狀況向相應終端發(fā) 送視頻傳輸幀率控制指令,控制相應終端的視頻傳輸幀率;或終端根據(jù)接收到的視頻傳輸幀率控制指令設置編碼器產生視頻幀數(shù)據(jù)的碼 率和幀率。
9、 一種嵌入式監(jiān)控終端,其特征在于,所述嵌入式監(jiān)控終端包括 控制指令接收單元,通過傳輸控制協(xié)議接收視頻請求指令;以及 視頻傳輸單元,根據(jù)所述控制指令接收單元接收到的視頻請求指令,通過用戶數(shù)據(jù)報協(xié)議發(fā)送相應的視頻數(shù)據(jù)。
10、 如權利要求9所述的嵌入式監(jiān)控終端,其特征在于,所述視頻傳輸單 元包括編碼器、 一級緩存、分割模塊、發(fā)送模塊和二級緩存;所述編碼器用于在接收到視頻請求指令后,根據(jù)預設的碼率和幀率產生視 頻幀數(shù)據(jù),并將產生的視頻幀數(shù)據(jù)放入所述一級緩存;所述分割模塊用于根據(jù)所述二級緩存的包大小,將從一級緩存中取出的一 幀-觀頻數(shù)據(jù)分成數(shù)據(jù)包;所述發(fā)送模塊用于將分成的數(shù)據(jù)包發(fā)送并放入所述二級緩存。
11、 一種監(jiān)控平臺服務器,其特征在于,所述監(jiān)控平臺服務器包括 控制指令發(fā)送單元,用于通過傳輸控制協(xié)議向相應終端發(fā)送視頻請求指令;以及視頻接收單元,用于通過用戶數(shù)據(jù)報協(xié)議接收視頻數(shù)據(jù)。
12、 如權利要求11所述的監(jiān)控平臺服務器,其特征在于,所述視頻接收單 元包括有效包檢驗模塊、接收緩存、丟包檢驗模塊和組幀模塊;所述有效包檢驗模塊用于4企驗接收到的數(shù)據(jù)包是否有效,將接收到的有效數(shù)據(jù)包放入所述接收緩存;所述丟包檢驗模塊用于對所述接收緩存中的數(shù)據(jù)包進行丟包檢驗,并在檢 測到丟包時,通過所述控制指令發(fā)送單元向相應終端發(fā)送丟包重傳指令;所述組幀模塊用于對所述接收緩存中的數(shù)據(jù)包進行組幀。
13、如權利要求11或12所述的監(jiān)控平臺服務器,其特征在于,所述的監(jiān) 控平臺服務器還包括視頻數(shù)據(jù)分發(fā)單元,用于將所述視頻接收單元組幀后得到的視頻幀數(shù)據(jù)分 發(fā)給相應的監(jiān)控客戶端;和/或網(wǎng)絡檢測單元,用于檢測網(wǎng)絡的連接狀態(tài)、視頻數(shù)據(jù)的傳輸時間和接收視 頻數(shù)據(jù)狀況,根據(jù)檢測結果通過控制指令發(fā)送單元向相應終端發(fā)送視頻請求指 令、視頻傳輸幀率控制指令。
全文摘要
本發(fā)明適用于網(wǎng)絡傳輸領域,提供了一種視頻傳輸方法、嵌入式監(jiān)控終端及監(jiān)控平臺服務器,所述視頻傳輸方法包括下述步驟服務器通過傳輸控制協(xié)議向相應終端發(fā)送視頻請求指令;終端通過傳輸控制協(xié)議接收服務器發(fā)送的視頻請求指令;終端根據(jù)接收到的視頻請求指令,采用用戶數(shù)據(jù)報協(xié)議向服務器發(fā)送相應的視頻數(shù)據(jù);服務器通過用戶數(shù)據(jù)報協(xié)議接收終端發(fā)送的視頻數(shù)據(jù)。在本發(fā)明中,終端與服務器分別采用TCP協(xié)議傳輸控制指令,采用UDP協(xié)議傳輸相應的視頻數(shù)據(jù),實現(xiàn)了一種視頻傳輸方法,保證了控制指令的不容易丟失和視頻數(shù)據(jù)傳輸?shù)膶崟r性,對網(wǎng)絡穩(wěn)定性能要求低、帶寬要求小,使得視頻圖像傳輸延時小、流暢性高。
文檔編號H04L29/06GK101488967SQ20091010504
公開日2009年7月22日 申請日期2009年1月14日 優(yōu)先權日2009年1月14日
發(fā)明者周國良 申請人:深圳市同洲電子股份有限公司