本發(fā)明涉及一種網絡通訊領域,尤其涉及一種弱網環(huán)境流媒體傳輸方法。
背景技術:
在目前主流的數據分發(fā)接收服務應用中,對數據的傳輸實時性要求很高,而傳統的單播數據傳輸服務在對高并發(fā),低延遲受置于用戶數量以及傳輸帶寬,當并發(fā)的用戶量呈幾何倍數的增長,對服務器的壓力以及傳輸網絡的壓力就會激增,很大機率會導致服務假死和服務器癱瘓,同時帶給用戶實際操作體驗呈幾何倍數的下降,嚴重影響用戶體驗,本發(fā)明針對現有的直播傳輸中在弱網環(huán)境表現差的問題而提出一種方法,可以有效地改善直播傳輸在弱網環(huán)境的通信質量差的問題。
技術實現要素:
本發(fā)明一種加強弱網環(huán)境流媒體傳輸方法,發(fā)送服務器端與接收服務器端開啟并監(jiān)聽多個udp通信端口,發(fā)送端將輸入直播數據按播放時間切片,片數據再分成可以發(fā)送的udp數據包,對每個udp包編排好所屬片序號,片內序號;
具體方法步驟為:
(a1)、在發(fā)送服務器配置各節(jié)目的接受服務器ip;
(a2)、數據包分離標記切片時間以及每片數據的緩存時間;
(a3)、設定發(fā)送定時器時間間隔、心跳包時間間隔;
(a4)、數據源地址以及udp通信端口區(qū)間;
(a5)、發(fā)送服務器端與接收服務器端開啟并監(jiān)聽多個udp通信端口,建立傳輸會話;
(a6)、計算出每個定時一次發(fā)送該直播傳輸數據多少個udp包,具體計算方式為:總數=片數據/(數據切片時間/發(fā)送數據包間隔時間)傳輸開始;
(a7)、建立傳輸會話后發(fā)送服務器端從數據源地址發(fā)送流媒體數據包,接收服務器端接收發(fā)送服務器端已經切片的數據包并重新正常排序;
(a8)、每片數據包含一定數量的udp數據包,每個udp數據包的載荷數據前幾個字節(jié),存儲了該報文的片序號,片內包的總數,以及片內的數據包序號。
所述接收服務器端對接收到的數據包進行排序,檢查數據完整性,如果序號不連貫,則接收服務器端請求發(fā)送服務器端重新發(fā)送缺失的數據包;
具體步驟為:
(b1)、發(fā)送服務器端根據每片數據包包含的序號信息判定數據的完整性;
(b2)、如果序號不連貫則通過傳輸會話發(fā)送丟包重傳udp報文告訴發(fā)送服務器端重新傳輸該序號數據包;
(b3)、重新檢查數據包序號完整性,如果數據包與發(fā)送服務器端一致,則數據發(fā)送成功。
所述發(fā)送服務器端與接收服務器端即時檢查網絡傳輸質量;
具體步驟為:
(c1)、所述發(fā)送服務器端與接受服務器端建立傳輸通話后,發(fā)送服務器端定時向接受服務器端發(fā)送udp報文;
(c2)、接受服務器端收到報文后必須立即回應發(fā)送服務器端;
(c3)、如果發(fā)送服務器端長時間沒有接收到回應,則判定網絡故障;
(c4)、發(fā)送端服務器從發(fā)送端口選擇一個新的接口,重新發(fā)送;
(c5)、檢查回應消息,成功收到回應消息則繼續(xù)發(fā)送數據包;
(c6)、檢查回應消息,不能收到回應則繼續(xù)切換端口。
本發(fā)明大大加強了直播傳輸在弱網環(huán)境的通信質量差的問題,使跨地域傳輸速率明顯提高,在丟包率較高的網絡環(huán)境中也可以很好的傳輸流媒體數據。
附圖說明
圖1為本發(fā)明切片數據框圖;
圖2為udp通信端口服務器框圖;
圖3為發(fā)送服務器端建立傳輸回話框圖;
圖4為接受服務器端數據包、接收框圖;
圖5為發(fā)送服務器端數據包丟失重發(fā)框圖;
圖6為切換通信端口框圖。
具體實施方式
下面結合附圖對本發(fā)明作進一步說明。
本發(fā)明一種加強弱網環(huán)境流媒體傳輸方法,發(fā)送服務器端與接收服務器端開啟并監(jiān)聽多個udp通信端口,發(fā)送端將輸入直播數據按播放時間切片,片數據再分成可以發(fā)送的udp數據包,對每個udp包編排好所屬片序號,片內序號;
具體方法步驟為:
(a1)、在發(fā)送服務器配置各節(jié)目的接受服務器ip;
(a2)、數據包分離標記切片時間以及每片數據的緩存時間;
(a3)、設定發(fā)送定時器時間間隔、心跳包時間間隔;
(a4)、數據源地址以及udp通信端口區(qū)間;
(a5)、發(fā)送服務器端與接收服務器端開啟并監(jiān)聽多個udp通信端口,建立傳輸會話;
(a6)、計算出每個定時一次發(fā)送該直播傳輸數據多少個udp包,具體計算方式為:總數=片數據/(數據切片時間/發(fā)送數據包間隔時間)傳輸開始;
(a7)、建立傳輸會話后發(fā)送服務器端從數據源地址發(fā)送流媒體數據包,接收服務器端接收發(fā)送服務器端已經切片的數據包并重新正常排序;
(a8)、每片數據包含一定數量的udp數據包,每個udp數據包的載荷數據前幾個字節(jié),存儲了該報文的片序號,片內包的總數,以及片內的數據包序號。
所述接收服務器端對接收到的數據包進行排序,檢查數據完整性,如果序號不連貫,則接收服務器端請求發(fā)送服務器端重新發(fā)送缺失的數據包;
具體步驟為:
(b1)、發(fā)送服務器端根據每片數據包包含的序號信息判定數據的完整性;
(b2)、如果序號不連貫則通過傳輸會話發(fā)送丟包重傳udp報文告訴發(fā)送服務器端重新傳輸該序號數據包;
(b3)、重新檢查數據包序號完整性,如果數據包與發(fā)送服務器端一致,則數據發(fā)送成功。
所述發(fā)送服務器端與接收服務器端即時檢查網絡傳輸質量;
具體步驟為:
(c1)、所述發(fā)送服務器端與接受服務器端建立傳輸通話后,發(fā)送服務器端定時向接受服務器端發(fā)送udp報文;
(c2)、接受服務器端收到報文后必須立即回應發(fā)送服務器端;
(c3)、如果發(fā)送服務器端長時間沒有接收到回應,則判定網絡故障;
(c4)、發(fā)送端服務器從發(fā)送端口選擇一個新的接口,重新發(fā)送;
(c5)、檢查回應消息,成功收到回應消息則繼續(xù)發(fā)送數據包;
(c6)、檢查回應消息,不能收到回應則繼續(xù)切換端口。
本發(fā)明大大加強了直播傳輸在弱網環(huán)境的通信質量差的問題,使跨地域傳輸速率明顯提高,在丟包率較高的網絡環(huán)境中也可以很好的傳輸流媒體數據。
在發(fā)送服務器配置每路節(jié)目的接收服務器ip、切片時間、每片數據的緩存時間、發(fā)送定時器時間間隔,心跳包時間間隔、直播數據源的地址、udp通信端口區(qū)間,在接收端配置與發(fā)送端一樣的udp通信端口區(qū)間。首先發(fā)送服務器與接收服務器都打開并監(jiān)聽udp通信端口區(qū)間內所有的端口,當直播傳輸開始的時候,發(fā)送端根據配置的接收服務器ip與之建立直播傳輸會話,建立會話后發(fā)送端不停的從數據源讀取ts格式流媒體數據,發(fā)送端將ts格式流媒體切片為實際播時間長度的數據片,每片數據包含一定數量的udp數據包,每個udp數據包的載荷數據前幾個字節(jié),存儲了該報文的片序號,片內包的總數,以及片內的數據包序號,發(fā)送端還要計算出沒個定時一次發(fā)送該直播傳輸數據多少個udp包,具體計算方法總數=片數據/(數據切片時間/發(fā)送數據包間隔時間),四舍五入計算出每次發(fā)送個數,這樣就做到了盡可能的勻速發(fā)送,每次發(fā)送的數據量都比較少,不會導致網絡擁擠。接收服務器收到會話后,會不停的監(jiān)聽并接收發(fā)送端發(fā)過來的數據,并把接收到的數據按片排序,片內按包序號排序存放到內存中,如果發(fā)現序號不完整,則通過丟包重傳udp報文告訴發(fā)送端,哪些數據沒有接收到,如果收到完整的一片數據,則可以把數據提交下一個流程了,比如給向用戶推流的服務器給用戶推流。另外,因為網絡很好的時候,發(fā)送服務器端經常很久,才會收到接收端的請求重傳消息,這種情況與網絡擁擠導致的很久收不到丟包重傳的情況很雷同,因此本方法引入的傳輸會話心跳來幫助判斷直播傳輸的好壞,具體做法是在建立傳輸會話的時候,發(fā)送端就定時向接收端發(fā)送udp報文,接收端收到udp報文后,必須立即回復成功的udp報文,如果一定時間內沒有收到成功的udp報文,則判斷網絡出現嚴重故障,發(fā)送端會從端口區(qū)間,選擇一個新的端口,并選擇端口區(qū)間內服務器的一個新端口放到udp的發(fā)送地址中,這樣就避免了網絡上的一些智能路由器根據通信端口限制通信流量的問題。
以上內容是結合具體的優(yōu)選實施方式對本發(fā)明所作的進一步詳細說明,不能認定本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬技術領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干簡單推演或替換,都應當視為屬于本發(fā)明的保護范圍。