發明專利技術人提供一對多數據分發方法以及分發設備,其屬于流媒體領域,特別是一對多設備中流媒體的分發領域。其將待發送數據按MTU的大小劃分為多個數據塊,將上述多個數據塊分別存入循環塊緩沖區的不同的存儲單元中,所述循環緩沖區為從內存中預先分配的,循環緩沖區已按MTU大小劃分為多個存儲單元,每一個存儲單元對應一個計數值,每一存儲單元中的數據塊將通過TCP分別向接收端發送,當存儲單元中的數據塊通過TCP分發出去后,該存儲單元對應的計數值加1,當上述數據塊到達對應客戶端后,該存儲單元對應的計數值減1。其有利于保證網絡傳輸過程中的數據的完整性和可靠性。
【技術實現步驟摘要】
本專利技術屬于流媒體領域,特別是一對多設備中流媒體的分發領域。
技術介紹
流媒體服務在安防行業中主要用于提供攝像頭音視頻數據的采集和傳輸。目前安防監控領域實現的流媒體服務大多基于UDP方式傳輸音視頻流數據,而基于TCP方式傳輸實現的相對較少。隨著社會的發展,對音視頻的完整性和可靠性需求逐漸增加。基于UDP實現的流媒體服務對網絡環境的適應性較差,特別是在多級路由或交換機組網的網絡中,往往需要配置和映射端口 ;同時,基于UDP實現的流媒體服務可靠性差。而現有基于TCP實現的流媒體服務在1:N分發量較大時往往造成較大延時或分發性能不足。
技術實現思路
以下給出對一個或更多個方面的簡化概述,力圖提供對此類方面的基本理解。在此描述的不是所有能構想到的各方面的詳盡方案,并且也非旨在指認出所有方面的關鍵性或決定性要素,也非試圖界定任何或所有方面的范圍。其目的是要以簡化形式給出一個或更多個方面的描述,以便于理解稍后給出的更加具體的實施例。為實現上述目的,專利技術人提供了一對多數據分發方法,具有一個發送端和多個接收端,所述方法包括以下步驟,將待發送數據按固定大小劃分為多個數據塊并分別存入循環緩沖區內的各存儲單元中;通過TCP依序將各存儲單元中的數據塊分發至各接收端;將每一存儲單元分別設定計數值進行統計,未分發前計數值為初始值,其中的數據塊每分發一次則對應的計數值累加一固定值,當上述數據塊每到達一個接收端后,該存儲單元對應的計數值累減所述固定值;當計數值恢復至初始值時,該存儲單元等待存入下一待發送數據的數據塊。進一步,所述循環緩沖區為從內存中預先分配的,循環緩沖區已按數據塊劃分為多個存儲單元。進一步,所述每一存儲單元中的數據塊將通過TCP分別向接收端發送的步驟中,所述數據塊通過多線程異步的傳輸方式向客戶端發送。進一步,所述存儲單元中的數據塊按存入順序遍歷發送。進一步,所述存儲單元中的數據塊按存入順序遍歷發送具體為:循環緩沖區每存入一個數據塊,生成對應的ptr/cnt共享數據結構,并將該ptr/cnt共享數據結構放入待發送隊列,Ptr中存放數據塊的位置記號,cnt對應該數據塊的計數值;發送數據時,獲得共享數據結構中ptr指向的存儲單元中的數據塊,將該數據塊打包并發送到不同的接收端;當發送成功一個數據包,則cnt對應累加一固定值,若該數據包到達客戶端,則cnt累減一固定值,若cnt的值恢復初始值,則該存儲單元等待存入下一待發送數據的數據塊。進一步,所述循環緩沖區的空間大小根據正在使用的存儲單元的數量動態調整。專利技術人還提供用于實現上述方法的設備,所述設備包括存儲模塊、分發模塊、計數模塊、等待存入模塊;所述存儲模塊用于將待發送數據按固定大小劃分為多個數據塊并分別存入循環緩沖區內的各存儲單元中;所述分發模塊用于通過TCP依序將各存儲單元中的數據塊分發至各接收端;所述計數模塊用于將每一存儲單元分別設定計數值進行統計,未分發前計數值為初始值,其中的數據塊每分發一次則對應的計數值累加一固定值,當上述數據塊每到達一個接收端后,該存儲單元對應的計數值累減所述固定值;所述等待存入模塊用于當計數值恢復至初始值時,該存儲單元等待存入下一待發送數據的數據塊。進一步,所述循環緩沖區為從內存中預先分配的,循環緩沖區已按數據塊大小劃分為多個存儲單元。進一步,所述分發模塊用于通過多線程異步以及通過TCP向客戶端發送每一存儲單元中的數據塊。進一步,所述分發模塊用于將存儲單元中的數據塊按存入順序遍歷發送。進一步,所述分發模塊用于將存儲單元中的數據塊按存入順序遍歷發送具體為:循環緩沖區每存入一個數據塊,生成對應的ptr/cnt共享數據結構,并將該ptr/cnt共享數據結構放入待發送隊列,ptr中存放數據塊的位置記號,cnt對應該數據塊的計數值;發送數據時,獲得共享數據結構中ptr指向的存儲單元中的數據塊,將該數據塊打包并發送到不同的接收端;當發送成功一個數據包,則cnt對應累加一固定值,若該數據包到達客戶端,則cnt累減一固定值,若cnt的值恢復初始值,則該存儲單元等待存入下一待發送數據的數據塊。進一步,還包括循環塊緩沖區管理模塊,其用于根據正在使用的存儲單元的數量動態分配循環塊緩沖區的空間大小。與現有技術相比,本專利技術的一對多數據分發方法采用TCP數據包發送數據,保證了網絡傳輸過程中的數據的完整性和可靠性。本專利技術開辟專用的循環緩存區用于存儲待發送數據包的數據,減少了內存的消耗;循環緩沖區發送數據塊對應的ptr/cnt共享數據結構給待發送隊列,無需發送存儲單元中的數據塊給待發送隊列,減少了數據的傳輸量;同時,整個過程中,數據塊只需進行一次拷貝存入循環緩沖區操作,然后進行多次讀數據塊發送給客戶端,內存無釋放和銷毀操作,進一步減少了大量的內存和CPU資源的消耗,提高了發送端的并發數和實時性。【附圖說明】以下將結合附圖來描述所公開的方面,提供附圖是為了說明而非限定所公開的方面,附圖中相似的標號標示相似要素,并且在其中:圖1為一對多發數據發送的設備連接示意圖;圖2為【具體實施方式】所述待發送數據與循環緩沖區中存儲單元的對應關系;圖3為【具體實施方式】的一對多數據分發方法示意圖。【具體實施方式】為詳細說明技術方案的
技術實現思路
、構造特征、所實現目的及效果,以下結合具體實施例并配合附圖詳予說明。在以下描述中,出于解釋目的闡述了眾多的具體細節以提供對一個或更多個方面的透徹理解。但是顯而易見的是,沒有這些具體細節也可實踐此類方面。術語說明列表:最大傳輸單元(Maximum Transmiss1n Unit,MTU)是指一種通信協議的某一層上面所能通過的最大數據包大小(以字節為單位)。為了便于說明,一對多數據分發中的發送端也被稱為源端或發送設備,客戶端也被稱為接收端。專利技術人提供了一種一對多數據分發方法,具有一個發送端和多個接收端(例如圖1),將待發送數據按固定大小劃分多個數據塊并分別存入循環緩沖區內的各存儲單元中;(如圖2中,數據塊1234和存儲單元abed的對應關系),所述每個數據塊大小一致。所述循環緩沖區為從內存中預先分配的,循環緩沖區已按數據塊大小劃分為多個存儲單元。在一些優選的方案中,循環緩沖區按MTU大小劃分為多個存儲單元。每一個存儲單元對應一個計數值,每一存儲單元中的數據塊將通過TCP分別向接收端發送,當存儲單元中的數據塊通過TCP分發出去后,該存儲單元對應的計數值加1,當上述數據塊到達對應客戶端后,該存儲單元對應的計數值減1,若計數值為0,則銷毀該計數值對應的存儲單元中的數據塊,該存儲單元等待存入另一數據塊。在另一些實施例中,存儲單元的大小優選為小于等于MTU的大小。例如一對多數據分發方法可以是將待發送數據按MTU的大小劃分為多個數據塊并分別存入循環緩沖區內的各存儲單元中;通過TCP依序將各存儲單元中的數據塊分發至各接收端;將每一存儲單元分別設定計數值進行統計,未分發前計數值為初始值,其中的數據塊每分發一次則對應的計數值累加一固定值,當上述數據塊每到達一個接收端后,該存儲單元對應的計數值累減所述固定值;當計數值恢復至初始值時,該存儲單元等待存入下一待發送數據的數據塊。初始值可以是任意數值。請參考圖2,循環緩沖區為內存中分配的存儲空間,用于存儲待發送和正發送本文檔來自技高網...
【技術保護點】
一對多數據分發方法,具有一個發送端和多個接收端,其特征在于,所述方法包括下述步驟,將待發送數據按固定大小劃分多個數據塊并分別存入循環緩沖區內的各存儲單元中;通過TCP依序將各存儲單元中的數據塊分發至各接收端;將每一存儲單元分別設定計數值進行統計,未分發前計數值為初始值,其中的數據塊每分發一次則對應的計數值累加一固定值,當上述數據塊每到達一個接收端后,該存儲單元對應的計數值累減所述固定值;當計數值恢復至初始值時,該存儲單元等待存入下一待發送數據的數據塊。
【技術特征摘要】
【專利技術屬性】
技術研發人員:吳立志,邱新強,
申請(專利權)人:福建星網銳捷安防科技有限公司,
類型:發明
國別省市:福建;35
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。