基于多條tcp連接的http流媒體直播方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了基于多條TCP連接的HTTP流媒體直播方法和系統(tǒng),能夠顯著提升傳輸速率,解決網(wǎng)絡(luò)擁塞或丟包帶來的播放卡頓問題,能夠支持更高碼率的直播播放,提升用戶體驗。其技術(shù)方案為:本發(fā)明通過連接綁定技術(shù),在服務(wù)端將若干個TCP連接關(guān)聯(lián)起來,流式數(shù)據(jù)分散到各個連接中進(jìn)行傳輸??蛻舳藢⒏鱾€連接收到的分段流式數(shù)據(jù)拼接起來即可進(jìn)行播放。
【專利說明】基于多條TCP連接的HTTP流媒體直播方法和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及HTTP流媒體直播的技術(shù),尤其涉及高碼率的HTTP流媒體直播方法和系統(tǒng)。
【背景技術(shù)】
[0002]HTTP流媒體直播是使用HTTP (超文本傳輸協(xié)議)進(jìn)行流媒體直播的流式數(shù)據(jù)的傳輸。目前市場主流的協(xié)議包括Apple的HLS (HTTP Live Streaming)、Adobe的HDS (HTTPDynamic Streaming)以及 Microsoft 的 HSS (HTTP Smooth Streaming)。上述三種協(xié)議的核心機(jī)制是將直播流式數(shù)據(jù)進(jìn)行切片,并生成不斷更新的文件列表信息來告知播放端去下載、拼接和播放切片數(shù)據(jù)。其優(yōu)勢在于傳輸協(xié)議簡單,劣勢在于切片數(shù)據(jù)受關(guān)鍵幀間隔影響,交互流程復(fù)雜,客戶端需要累積若干個切片后才能播放,直播的播放延遲較大。
[0003]業(yè)界常見的另一種HTTP直播協(xié)議是將直播流式數(shù)據(jù)虛擬成為一個無限大的FLV(FLASH VIDEO)文件,并通過HTTP協(xié)議進(jìn)行傳輸。該協(xié)議保持HTTP協(xié)議的簡單性和高可用性,并簡化交互協(xié)議,播放延遲可以大幅縮短。該協(xié)議通常被稱為HDL,即HTTP DownloadLive streaming。
[0004]HDL協(xié)議的工作原理如下:客戶端僅發(fā)送一次HTTP GET請求,請求中攜帶需要訪問的直播流名,服務(wù)器返回HTTP響應(yīng),不攜帶消息體內(nèi)容長度直接發(fā)送無限長FLV文件內(nèi)容,或者使用HTTP CHUNK模式將無限長FLV文件按分段模式發(fā)送??蛻舳双@得HTTP消息體中的FLV內(nèi)容時即可播放。
[0005]例如請求直播流http://flv.drag.test, com/live/livestream.flv, HTTP 交互如下:
[0006]請求:
[0007]GET/live/livestream.flv?wsHost=flv.drag.test, com HTTP/1.1
[0008]accept:*/*
[0009]accept-encoding:gzip, deflate
[0010]accept-language:zh_CN
[0011]connection:Keep-Alive
[0012]host:www.abc.com
[0013]referer:http: //www.abc.com/vplayer.swf
[0014]響應(yīng):
[0015]HTTP/1.12000K
[0016]Content-Type: video/χ-fIv
[0017]FLV..................................................................[0018]HDL協(xié)議的缺點是:其數(shù)據(jù)傳輸依賴于單連接的TCP傳輸,當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞或者丟包時,TCP傳輸效率容易受到影響,導(dǎo)致直播流式數(shù)據(jù)無法及時傳輸?shù)娇蛻舳耍M(jìn)而導(dǎo)致客戶端播放出現(xiàn)卡頓甚至無法播放,影響用戶體驗。當(dāng)直播碼率較高時該現(xiàn)象更為明顯。
【發(fā)明內(nèi)容】
[0019]本發(fā)明的目的在于解決上述問題,提供了ー種基于多條TCP連接的HTTP流媒體直播方法和系統(tǒng),能夠顯著提升傳輸速率,解決網(wǎng)絡(luò)擁塞或丟包帶來的播放卡頓問題,能夠支持更高碼率的直播播放,提升用戶體驗。
[0020]本發(fā)明的技術(shù)方案為:本發(fā)明掲示了ー種基于多條TCP連接的HTTP流媒體直播方法,包括:
[0021]客戶端發(fā)起若干個TCP連接并完成綁定;
[0022]服務(wù)端將流式數(shù)據(jù)進(jìn)行分段井分散在已完成綁定的若干個TCP連接中進(jìn)行數(shù)據(jù)傳輸;
[0023]客戶端將各個TCP連接收到的分段流式數(shù)據(jù)拼接起來后進(jìn)行播放。
[0024]根據(jù)本發(fā)明的基于多條TCP連接的HTTP流媒體直播方法的ー實施例,在數(shù)據(jù)傳輸期間,客戶端實時根據(jù)網(wǎng)絡(luò)狀態(tài)的變化動態(tài)調(diào)整TCP連接的個數(shù)。
[0025]根據(jù)本發(fā)明的基于多條TCP連接的HTTP流媒體直播方法的ー實施例,客戶端發(fā)起若干個TCP連接并完成綁定的步驟進(jìn)ー步包括:
[0026]客戶端發(fā)起第一個連接并發(fā)送HTTP請求;
[0027]服務(wù)端為該請求分配全局唯一的會話標(biāo)識,并在HTTP響應(yīng)中發(fā)送給客戶端,同時開始傳輸流式數(shù)據(jù);
[0028]客戶端從HTTP響應(yīng)中獲取會話標(biāo)識,并連續(xù)發(fā)起第2至N個連接,在HTTP請求中攜帶該會話標(biāo)識;
[0029]服務(wù)端根據(jù)每個請求中的會話標(biāo)識,將第2至第N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)ー個新的連接,該新的連接加入到流式數(shù)據(jù)的傳輸中。
[0030]根據(jù)本發(fā)明的基于多條TCP連接的HTTP流媒體直播方法的ー實施例,客戶端發(fā)起若干個TCP連接并完成綁定的步驟進(jìn)ー步包括:
[0031]客戶端隨機(jī)生成近似全局唯一的會話標(biāo)識;
[0032]客戶端連續(xù)發(fā)起第I至N個連接,在HTTP請求中攜帶所述會話標(biāo)識,其中N是自然數(shù);
[0033]服務(wù)端根據(jù)每個請求中的會話標(biāo)識,將第2至N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)ー個新的連接,該新的連接加入到流式數(shù)據(jù)的傳輸中。
[0034]根據(jù)本發(fā)明的基于多條TCP連接的HTTP流媒體直播方法的ー實施例,客戶端對TCP連接個數(shù)的動態(tài)調(diào)整包括:
[0035]客戶端動態(tài)檢測數(shù)據(jù)的傳輸狀態(tài),以確認(rèn)是否滿足直播播放的需求;
[0036]當(dāng)傳輸速率低于直播播放需求時,啟動TCP連接動態(tài)增加過程,動態(tài)增加是指客戶端發(fā)起若干個新連接并發(fā)送HTTP請求,HTTP請求中攜帯直播流名稱以及會話標(biāo)識;
[0037]服務(wù)端逐個處理新的請求HTTP,并根據(jù)會話標(biāo)識與原有的N個連接進(jìn)行關(guān)聯(lián),新關(guān)聯(lián)的連接加入到流式數(shù)據(jù)的傳輸中。
[0038]本發(fā)明還掲示了ー種基于多條TCP連接的HTTP流媒體直播系統(tǒng),包括:
[0039]連接建立綁定裝置,客戶端發(fā)起若干個TCP連接并完成綁定;[0040]分散傳輸裝置,服務(wù)端將流式數(shù)據(jù)進(jìn)行分段井分散在已完成綁定的若干個TCP連接中進(jìn)行數(shù)據(jù)傳輸;
[0041]拼接播放裝置,客戶端將各個TCP連接收到的分段流式數(shù)據(jù)拼接起來后進(jìn)行播放。
[0042]根據(jù)本發(fā)明的基于多條TCP連接的HTTP流媒體直播系統(tǒng)的ー實施例,系統(tǒng)還包括:
[0043]連接數(shù)量調(diào)整裝置,在數(shù)據(jù)傳輸期間實時根據(jù)網(wǎng)絡(luò)狀態(tài)的變化動態(tài)調(diào)整TCP連接的個數(shù)。
[0044]根據(jù)本發(fā)明的基于多條TCP連接的HTTP流媒體直播系統(tǒng)的ー實施例,連接建立綁定裝置進(jìn)ー步包括:
[0045]HTTP請求發(fā)起模塊,客戶端發(fā)起第一個連接并發(fā)送HTTP請求;
[0046]會話標(biāo)識分配模塊,服務(wù)端為該請求分配全局唯一的會話標(biāo)識,并在HTTP響應(yīng)中發(fā)送給客戶端,同時開始傳輸流式數(shù)據(jù);
[0047]會話標(biāo)識攜帶模塊,客戶端從HTTP響應(yīng)中獲取會話標(biāo)識,并連續(xù)發(fā)起第2至N個連接,在HTTP請求中攜帶該會話標(biāo)識;
[0048]連接關(guān)聯(lián)模塊,服務(wù)端根據(jù)每個請求中的會話標(biāo)識,將第2至第N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)ー個新的連接,該新的連接加入到流式數(shù)據(jù)的傳輸中。
[0049]根據(jù)本發(fā)明的基于多條TCP連接的HTTP流媒體直播系統(tǒng)的ー實施例,連接建立綁定裝置進(jìn)ー步包括:
[0050]會話標(biāo)識生成模塊,客戶端隨機(jī)生成近似全局唯一的會話標(biāo)識;
[0051]會話標(biāo)識攜帯模塊,客戶端連續(xù)發(fā)起第I至N個連接,在HTTP請求中攜帯所述會話標(biāo)識,其中N是自然數(shù);
[0052]連接關(guān)聯(lián)模塊,服務(wù)端根據(jù)每個請求中的會話標(biāo)識,將第2至N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)ー個新的連接,該新的連接加入到流式數(shù)據(jù)的傳輸中。
[0053]根據(jù)本發(fā)明的基于多條TCP連接的HTTP流媒體直播系統(tǒng)的ー實施例,連接數(shù)量調(diào)整裝置包括:
[0054]狀態(tài)檢測模塊,客戶端動態(tài)檢測數(shù)據(jù)的傳輸狀態(tài),以確認(rèn)是否滿足直播播放的需求;
[0055]連接增加模塊,當(dāng)傳輸速率低于直播播放需求時,啟動TCP連接動態(tài)增加過程,動態(tài)增加是指客戶端發(fā)起若干個新連接并發(fā)送HTTP請求,HTTP請求中攜帯直播流名稱以及會話標(biāo)識;
[0056]新增連接關(guān)聯(lián)模塊,服務(wù)端逐個處理新的請求HTTP,并根據(jù)會話標(biāo)識與原有的N個連接進(jìn)行關(guān)聯(lián),新關(guān)聯(lián)的連接加入到流式數(shù)據(jù)的傳輸中。
[0057]本發(fā)明對比現(xiàn)有技術(shù)有如下的有益效果:本發(fā)明用多個TCP連接來傳輸直播流式數(shù)據(jù)。其核心思想是通過連接綁定技木,在服務(wù)端將若干個TCP連接關(guān)聯(lián)起來,流式數(shù)據(jù)分散到各個連接中進(jìn)行傳輸??蛻舳藢⒏鱾€連接收到的分段流式數(shù)據(jù)拼接起來即可進(jìn)行播放。相較于傳統(tǒng)技術(shù),本發(fā)明解決HDL協(xié)議單TCP連接傳輸速率抖動厲害,無法流暢觀看直播尤其是高清碼率的問題。這種HTTP直播傳輸方案達(dá)到更快速更穩(wěn)定的直播內(nèi)容傳輸,顯著提升播放用戶體驗?!緦@綀D】
【附圖說明】
[0058]圖1示出了本發(fā)明的基于多條TCP連接的HTTP流媒體直播方法的第一實施例的流程圖。
[0059]圖2示出了本發(fā)明的基于多條TCP連接的HTTP流媒體直播方法的第二實施例的流程圖。
[0060]圖3示出了本發(fā)明的TCP連接建立和綁定的第一種實施方式的細(xì)化流程圖。
[0061]圖4示出了本發(fā)明的TCP連接建立和綁定的第二種實施方式的細(xì)化流程圖。
[0062]圖5示出了本發(fā)明的TCP連接數(shù)量動態(tài)調(diào)整的細(xì)化流程圖。
[0063]圖6示出了本發(fā)明的基于多條TCP連接的HTTP流媒體直播系統(tǒng)的第一實施例的結(jié)構(gòu)圖。
[0064]圖7示出了本發(fā)明的基于多條TCP連接的HTTP流媒體直播系統(tǒng)的第二實施例的結(jié)構(gòu)圖。
[0065]圖8示出了本發(fā)明的連接建立綁定裝置的第一種示例的細(xì)化結(jié)構(gòu)圖。
[0066]圖9示出了本發(fā)明的連接建立綁定裝置的第二種示例的細(xì)化結(jié)構(gòu)圖。
[0067]圖10示出了本發(fā)明的連接數(shù)量調(diào)整裝置的細(xì)化結(jié)構(gòu)圖。
【具體實施方式】
[0068]下面結(jié)合附圖和實施例對本發(fā)明作進(jìn)一步的描述。
[0069]基于多條TCP連接的HTTP流媒體肓播方法的第一實施例
[0070]圖1示出了本發(fā)明的基于多條TCP連接的HTTP流媒體直播方法的第一實施例的流程。請參見圖1,本實施例的HTTP流媒體直播方法的實施步驟詳述如下。
[0071]步驟Sll:客戶端發(fā)起若干個TCP連接并完成綁定。
[0072]在客戶端和服務(wù)端建立多個TCP連接并通過連接綁定技術(shù)進(jìn)行關(guān)聯(lián)。
[0073]客戶端對于TCP連接并完成綁定的步驟可以通過兩種方式來實現(xiàn)。
[0074]第一種方式如圖3所示,請同時參見圖3,TCP連接建立和綁定的第一種方式的細(xì)化步驟詳述如下。
[0075]步驟SllO:客戶端發(fā)起和服務(wù)端的第一個TCP連接并發(fā)送HTTP請求。HTTP請求中僅包含直播流名稱,沒有會話標(biāo)識(Session ID)。
[0076]步驟S112:服務(wù)端發(fā)現(xiàn)HTTP請求為新請求時(即無Session ID),則為該請求分配一個全局唯一的會話標(biāo)識,通過這一會話標(biāo)識管理第一個連接,并將這一會話標(biāo)識放入HTTP響應(yīng)中返回給客戶端,此時第一個連接可以同時開始傳輸FLV流式數(shù)據(jù)。
[0077]步驟S114:客戶端從HTTP響應(yīng)中獲取會話標(biāo)識,并連續(xù)發(fā)起和服務(wù)端的第2至N個連接并發(fā)送HTTP請求,在HTTP請求中攜帶直播流名稱和會話標(biāo)識。
[0078]步驟S116:服務(wù)端處理第2至N個連接及請求,從請求中獲取會話標(biāo)識,通過這一會話標(biāo)識找到第I個連接,將第2至第N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)一個新的TCP連接,該新的連接加入到FLV流式數(shù)據(jù)的傳輸中。
[0079]第二種方式如圖4所示,請同時參見圖4,TCP連接建立和綁定的第二種方式的細(xì)化步驟詳述如下。[0080]步驟Slll:客戶端隨機(jī)生成近似全局唯一的會話標(biāo)識。
[0081]步驟S113:客戶端連續(xù)發(fā)起第I至第N個連接,發(fā)送攜帯相同直播流名稱和會話標(biāo)識的HTTP請求,其中N是自然數(shù)。
[0082]步驟SI 15:服務(wù)端逐個處理第I至第N個請求,根據(jù)每個請求中的會話標(biāo)識,將第2至N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)ー個新的連接,該新的連接加入到FLV流式數(shù)據(jù)的傳輸中。
[0083]服務(wù)端在處理當(dāng)前的請求吋,當(dāng)發(fā)現(xiàn)會話標(biāo)識為未知標(biāo)識吋,認(rèn)為該連接為新連接,通過該會話標(biāo)識來管理該連接,當(dāng)發(fā)現(xiàn)會話標(biāo)識和其余某個連接的會話標(biāo)識相同吋,即可歸入到同一個會話標(biāo)識進(jìn)行管理,完成關(guān)聯(lián)。
[0084]步驟S12:服務(wù)端將流式數(shù)據(jù)進(jìn)行分段井分散在已完成綁定的若干個TCP連接中進(jìn)行數(shù)據(jù)傳輸。
[0085]FLV流式數(shù)據(jù)的分段可以有很多種方法,如將虛擬FLV大文件進(jìn)行定長分段,并為每段添加頭部信息,包含分段編號、分段長度等。本發(fā)明并不限制具體的分段方法。
[0086]服務(wù)端通過監(jiān)測每個連接的傳輸狀態(tài),選擇最空閑的TCP連接來傳輸最新的分段數(shù)據(jù)。連接傳輸狀態(tài)的監(jiān)測可以有很多種方法,如檢查操作系統(tǒng)TCP發(fā)送緩沖區(qū)長度,緩沖區(qū)最短的即為最空閑的連接。本發(fā)明并不限制具體的檢測方法。
[0087]步驟S13:客戶端將各個TCP連接收到的分段流式數(shù)據(jù)拼接起來后進(jìn)行播放。
[0088]客戶端從各TCP連接收到HTTP響應(yīng),其中HTTP消息體中包含了無限的分段數(shù)據(jù),通過每個分段的頭部信息,完成數(shù)據(jù)的還原。
[0089]基于多條TCP連接的HTTP流媒體肓播方法的第二實施例
[0090]圖2示出了本發(fā)明的基于多條TCP連接的HTTP流媒體直播方法的第二實施例的流程。請參見圖2,本實施例的HTTP流媒體直播方法的實施步驟詳述如下。
[0091]步驟S21:客戶端發(fā)起若干個TCP連接并完成綁定。
[0092]在客戶端和服務(wù)端建立多個TCP連接并通過連接綁定技術(shù)進(jìn)行關(guān)聯(lián)。
[0093]客戶端對于TCP連接并完成綁定的步驟可以通過兩種方式來實現(xiàn)。
[0094]第一種方式如圖3所示,請同時參見圖3,TCP連接建立和綁定的第一種方式的細(xì)化步驟詳述如下。
[0095]步驟SllO:客戶端發(fā)起和服務(wù)端的第一個TCP連接并發(fā)送HTTP請求。HTTP請求中僅包含直播流名稱,沒有會話標(biāo)識(Session ID)。
[0096]步驟S112:服務(wù)端發(fā)現(xiàn)HTTP請求為新請求時(即無Session ID),則為該請求分配ー個全局唯一的會話標(biāo)識,通過這ー會話標(biāo)識管理第一個連接,并將這一會話標(biāo)識放入HTTP響應(yīng)中返回給客戶端,此時第一個連接可以同時開始傳輸FLV流式數(shù)據(jù)。
[0097]步驟S114:客戶端從HTTP響應(yīng)中獲取會話標(biāo)識,并連續(xù)發(fā)起和服務(wù)端的第2至N個連接并發(fā)送HTTP請求,在HTTP請求中攜帯直播流名稱和會話標(biāo)識。
[0098]步驟S116:服務(wù)端處理第2至N個連接及請求,從請求中獲取會話標(biāo)識,通過這ー會話標(biāo)識找到第I個連接,將第2至第N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)ー個新的TCP連接,該新的連接加入到FLV流式數(shù)據(jù)的傳輸中。
[0099]第二種方式如圖4所示,請同時參見圖4,TCP連接建立和綁定的第二種方式的細(xì)化步驟詳述如下。[0100]步驟Slll:客戶端隨機(jī)生成近似全局唯一的會話標(biāo)識。
[0101]步驟S113:客戶端連續(xù)發(fā)起第I至第N個連接,發(fā)送攜帶相同直播流名稱和會話標(biāo)識的HTTP請求,其中N是自然數(shù)。
[0102]步驟S115:服務(wù)端逐個處理第I至第N個請求,根據(jù)每個請求中的會話標(biāo)識,將第2至N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)一個新的連接,該新的連接加入到FLV流式數(shù)據(jù)的傳輸中。
[0103]服務(wù)端在處理當(dāng)前的請求時,當(dāng)發(fā)現(xiàn)會話標(biāo)識為未知標(biāo)識時,認(rèn)為該連接為新連接,通過該會話標(biāo)識來管理該連接,當(dāng)發(fā)現(xiàn)會話標(biāo)識和其余某個連接的會話標(biāo)識相同時,即可歸入到同一個會話標(biāo)識進(jìn)行管理,完成關(guān)聯(lián)。
[0104]步驟S22:服務(wù)端將流式數(shù)據(jù)進(jìn)行分段并分散在已完成綁定的若干個TCP連接中進(jìn)行數(shù)據(jù)傳輸。
[0105]FLV流式數(shù)據(jù)的分段可以有很多種方法,如將虛擬FLV大文件進(jìn)行定長分段,并為每段添加頭部信息,包含分段編號、分段長度等。本發(fā)明并不限制具體的分段方法。
[0106]服務(wù)端通過監(jiān)測每個連接的傳輸狀態(tài),選擇最空閑的TCP連接來傳輸最新的分段數(shù)據(jù)。連接傳輸狀態(tài)的監(jiān)測可以有很多種方法,如檢查操作系統(tǒng)TCP發(fā)送緩沖區(qū)長度,緩沖區(qū)最短的即為最空閑的連接。本發(fā)明并不限制具體的檢測方法。
[0107]步驟S23:在數(shù)據(jù)傳輸期間,客戶端實時根據(jù)網(wǎng)絡(luò)狀態(tài)的變化動態(tài)調(diào)整TCP連接的個數(shù)。
[0108]客戶端對TCP連接個數(shù)的動態(tài)調(diào)整的細(xì)化步驟請同時參見圖5,詳述如下。
[0109]步驟S230:在傳輸過程中,客戶端動態(tài)檢測數(shù)據(jù)的傳輸狀態(tài),以確認(rèn)是否滿足直播播放的需求。檢測的方法有很多,如統(tǒng)計所有連接數(shù)據(jù)的到達(dá)速率,與預(yù)期碼率進(jìn)行對比。
[0110]步驟S231:當(dāng)傳輸速率低于直播播放需求時,啟動TCP連接動態(tài)增加過程,動態(tài)增加是指客戶端發(fā)起若干個新連接并發(fā)送HTTP請求,HTTP請求中攜帶直播流名稱以及會話標(biāo)識。
[0111]步驟S232:服務(wù)端逐個處理新的請求HTTP,并根據(jù)會話標(biāo)識與原有的N個連接進(jìn)行關(guān)聯(lián),新關(guān)聯(lián)的連接加入到FLV流式數(shù)據(jù)的傳輸中。
[0112]步驟S24:客戶端將各個TCP連接收到的分段流式數(shù)據(jù)拼接起來后進(jìn)行播放。
[0113]客戶端從各TCP連接收到HTTP響應(yīng),其中HTTP消息體中包含了無限的分段數(shù)據(jù),通過每個分段的頭部信息,完成數(shù)據(jù)的還原。
[0114]基于多條TCP連接的HTTP流媒體肓播系統(tǒng)的第一實施例
[0115]圖6示出了本發(fā)明的基于多條TCP連接的HTTP流媒體直播系統(tǒng)的第一實施例的結(jié)構(gòu)。請參見圖6,本實施例的HTTP流媒體直播系統(tǒng)包括:連接建立綁定裝置11、分散傳輸裝置12、拼接播放裝置13。連接建立綁定裝置11的輸出端連接分散傳輸裝置12,分散傳輸裝置12的輸出端連接拼接播放裝置13。
[0116]連接建立綁定裝置11中,客戶端發(fā)起若干個TCP連接并完成綁定。在客戶端和服務(wù)端建立多個TCP連接并通過連接綁定技術(shù)進(jìn)行關(guān)聯(lián)。
[0117]連接建立綁定裝置11的具體實現(xiàn)可以有兩種方式,第一種方式如圖8所示,第二種方式如圖9所示。[0118]請同時參見圖8,第一種方式的連接建立綁定裝置11包括:HTTP請求發(fā)起模塊
110、會話標(biāo)識分配模塊112、會話標(biāo)識攜帯模塊114、以及連接關(guān)聯(lián)模塊116。
[0119]HTTP請求發(fā)起模塊110的輸出端連接會話標(biāo)識分配模塊112,會話標(biāo)識分配模塊112的輸出端連接會話標(biāo)識攜帯模塊114,會話標(biāo)識攜帯模塊114的輸出端連接連接關(guān)聯(lián)模塊 116。
[0120]HTTP請求發(fā)起模塊110中,客戶端發(fā)起和服務(wù)端的第一個TCP連接并發(fā)送HTTP請求。HTTP請求中僅包含直播流名稱,沒有會話標(biāo)識(Session ID)。
[0121]會話標(biāo)識分配模塊112中,服務(wù)端發(fā)現(xiàn)HTTP請求為新請求時(即無Session ID),則為該請求分配ー個全局唯一的會話標(biāo)識,通過這ー會話標(biāo)識管理第一個連接,并將這一會話標(biāo)識放入HTTP響應(yīng)中返回給客戶端,此時第一個連接可以同時開始傳輸FLV流式數(shù)據(jù)。
[0122]會話標(biāo)識攜帶模塊114中,客戶端從HTTP響應(yīng)中獲取會話標(biāo)識,并連續(xù)發(fā)起和服務(wù)端的第2至N個連接并發(fā)送HTTP請求,在HTTP請求中攜帯直播流名稱和會話標(biāo)識。
[0123]連接關(guān)聯(lián)模塊116中,服務(wù)端處理第2至N個連接及請求,從請求中獲取會話標(biāo)識,通過這ー會話標(biāo)識找到第I個連接,將第2至第N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)ー個新的TCP連接,該新的連接加入到FLV流式數(shù)據(jù)的傳輸中。
[0124]請同時參見圖9,第二種方式的連接建立綁定裝置11包括:會話標(biāo)識生成模塊
111、會話標(biāo)識攜帯模塊113、以及連接關(guān)聯(lián)模塊115。會話標(biāo)識生成模塊111的輸出端連接會話標(biāo)識攜帯模塊113,會話標(biāo)識攜帯模塊113的輸出端連接連接關(guān)聯(lián)模塊115。
[0125]會話標(biāo)識生成模塊111中,客戶端隨機(jī)生成近似全局唯一的會話標(biāo)識;
[0126]會話標(biāo)識攜帯模塊113中,客戶端連續(xù)發(fā)起第I至N個連接,在HTTP請求中攜帯所述會話標(biāo)識,其中N是自然數(shù)。
[0127]連接關(guān)聯(lián)模塊115中,服務(wù)端逐個處理第I至第N個請求,根據(jù)每個請求中的會話標(biāo)識,將第2至N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)ー個新的連接,該新的連接加入到FLV流式數(shù)據(jù)的傳輸中。
[0128]服務(wù)端在處理當(dāng)前的請求時,當(dāng)發(fā)現(xiàn)會話標(biāo)識為未知標(biāo)識時,認(rèn)為該連接為新連接,通過該會話標(biāo)識來管理該連接,當(dāng)發(fā)現(xiàn)會話標(biāo)識和其余某個連接的會話標(biāo)識相同吋,即可歸入到同一個會話標(biāo)識進(jìn)行管理,完成關(guān)聯(lián)。
[0129]分散傳輸裝置12中,服務(wù)端將流式數(shù)據(jù)進(jìn)行分段井分散在已完成綁定的若干個TCP連接中進(jìn)行數(shù)據(jù)傳輸。
[0130]拼接播放裝置13中,客戶端將各個TCP連接收到的分段流式數(shù)據(jù)拼接起來后進(jìn)行播放。
[0131]基于多條TCP連接的HTTP流媒體肓播系統(tǒng)的第二實施例
[0132]圖7示出了本發(fā)明的連接建立綁定裝置的第二種示例的細(xì)化結(jié)構(gòu)。請參見圖7,本實施例的HTTP流媒體直播系統(tǒng)包括:連接建立綁定裝置21、分散傳輸裝置22、連接數(shù)量調(diào)整裝置23、以及拼接播放裝置24。連接建立綁定裝置21的輸出端連接分散傳輸裝置22,分散傳輸裝置22的輸出端連接連接數(shù)量調(diào)整裝置23,連接數(shù)量調(diào)整裝置23的輸出端連接拼接播放裝置24。
[0133]連接建立綁定裝置21中,客戶端發(fā)起若干個TCP連接并完成綁定。在客戶端和服務(wù)端建立多個TCP連接并通過連接綁定技術(shù)進(jìn)行關(guān)聯(lián)。
[0134]連接建立綁定裝置21的具體實現(xiàn)可以有兩種方式,第一種方式如圖8所示,第二種方式如圖9所示。
[0135]請同時參見圖8,第一種方式的連接建立綁定裝置21包括:HTTP請求發(fā)起模塊
110、會話標(biāo)識分配模塊112、會話標(biāo)識攜帶模塊114、以及連接關(guān)聯(lián)模塊116。
[0136]HTTP請求發(fā)起模塊110的輸出端連接會話標(biāo)識分配模塊112,會話標(biāo)識分配模塊112的輸出端連接會話標(biāo)識攜帶模塊114,會話標(biāo)識攜帶模塊114的輸出端連接連接關(guān)聯(lián)模塊 116。
[0137]HTTP請求發(fā)起模塊110中,客戶端發(fā)起和服務(wù)端的第一個TCP連接并發(fā)送HTTP請求。HTTP請求中僅包含直播流名稱,沒有會話標(biāo)識(Session ID)。
[0138]會話標(biāo)識分配模塊112中,服務(wù)端發(fā)現(xiàn)HTTP請求為新請求時(即無Session ID),則為該請求分配一個全局唯一的會話標(biāo)識,通過這一會話標(biāo)識管理第一個連接,并將這一會話標(biāo)識放入HTTP響應(yīng)中返回給客戶端,此時第一個連接可以同時開始傳輸FLV流式數(shù)據(jù)。
[0139]會話標(biāo)識攜帶模塊114中,客戶端從HTTP響應(yīng)中獲取會話標(biāo)識,并連續(xù)發(fā)起和服務(wù)端的第2至N個連接并發(fā)送HTTP請求,在HTTP請求中攜帶直播流名稱和會話標(biāo)識。
[0140]連接關(guān)聯(lián)模塊116中,服務(wù)端處理第2至N個連接及請求,從請求中獲取會話標(biāo)識,通過這一會話標(biāo)識找到第I個連接,將第2至第N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)一個新的TCP連接,該新的連接加入到FLV流式數(shù)據(jù)的傳輸中。
[0141]請同時參見圖9,第二種方式的連接建立綁定裝置21包括:會話標(biāo)識生成模塊
111、會話標(biāo)識攜帶模塊113、以及連接關(guān)聯(lián)模塊115。會話標(biāo)識生成模塊111的輸出端連接會話標(biāo)識攜帶模塊113,會話標(biāo)識攜帶模塊113的輸出端連接連接關(guān)聯(lián)模塊115。
[0142]會話標(biāo)識生成模塊111中,客戶端隨機(jī)生成近似全局唯一的會話標(biāo)識;
[0143]會話標(biāo)識攜帶模塊113中,客戶端連續(xù)發(fā)起第I至N個連接,在HTTP請求中攜帶所述會話標(biāo)識,其中N是自然數(shù)。
[0144]連接關(guān)聯(lián)模塊115中,服務(wù)端逐個處理第I至第N個請求,根據(jù)每個請求中的會話標(biāo)識,將第2至N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)一個新的連接,該新的連接加入到FLV流式數(shù)據(jù)的傳輸中。
[0145]服務(wù)端在處理當(dāng)前的請求時,當(dāng)發(fā)現(xiàn)會話標(biāo)識為未知標(biāo)識時,認(rèn)為該連接為新連接,通過該會話標(biāo)識來管理該連接,當(dāng)發(fā)現(xiàn)會話標(biāo)識和其余某個連接的會話標(biāo)識相同時,即可歸入到同一個會話標(biāo)識進(jìn)行管理,完成關(guān)聯(lián)。
[0146]分散傳輸裝置22中,服務(wù)端將流式數(shù)據(jù)進(jìn)行分段并分散在已完成綁定的若干個TCP連接中進(jìn)行數(shù)據(jù)傳輸。
[0147]連接數(shù)量調(diào)整裝置23中,在數(shù)據(jù)傳輸期間實時根據(jù)網(wǎng)絡(luò)狀態(tài)的變化動態(tài)調(diào)整TCP連接的個數(shù)。
[0148]圖10示出了連接數(shù)量調(diào)整裝置23的細(xì)化結(jié)構(gòu)。請參見圖10,連接數(shù)量調(diào)整裝置23包括:狀態(tài)檢測模塊230、連接增加模塊231、新增連接關(guān)聯(lián)模塊232。狀態(tài)檢測模塊230的輸出端連接連接增加模塊231,連接增加模塊231的輸出端連接新增連接關(guān)聯(lián)模塊232。
[0149]狀態(tài)檢測模塊230中,客戶端動態(tài)檢測數(shù)據(jù)的傳輸狀態(tài),以確認(rèn)是否滿足直播播放的需求。檢測的方法有很多,如統(tǒng)計所有連接數(shù)據(jù)的到達(dá)速率,與預(yù)期碼率進(jìn)行對比。
[0150]連接增加模塊231中,當(dāng)傳輸速率低于直播播放需求時,啟動TCP連接動態(tài)增加過程,動態(tài)增加是指客戶端發(fā)起若干個新連接并發(fā)送HTTP請求,HTTP請求中攜帯直播流名稱以及會話標(biāo)識。
[0151]新增連接關(guān)聯(lián)模塊232中,服務(wù)端逐個處理新的請求HTTP,并根據(jù)會話標(biāo)識與原有的N個連接進(jìn)行關(guān)聯(lián),新關(guān)聯(lián)的連接加入到FLV流式數(shù)據(jù)的傳輸中。
[0152]拼接播放裝置24中,客戶端將各個TCP連接收到的分段流式數(shù)據(jù)拼接起來后進(jìn)行播放。
[0153]上述實施例是提供給本領(lǐng)域普通技術(shù)人員來實現(xiàn)和使用本發(fā)明的,本領(lǐng)域普通技術(shù)人員可在不脫離本發(fā)明的發(fā)明思想的情況下,對上述實施例做出種種修改或變化,因而本發(fā)明的保護(hù)范圍并不被上述實施例所限,而應(yīng)該是符合權(quán)利要求書所提到的創(chuàng)新性特征的最大范圍。
【權(quán)利要求】
1.一種基于多條TCP連接的HTTP流媒體直播方法,包括: 客戶端發(fā)起若干個TCP連接并完成綁定; 服務(wù)端將流式數(shù)據(jù)進(jìn)行分段并分散在已完成綁定的若干個TCP連接中進(jìn)行數(shù)據(jù)傳輸; 客戶端將各個TCP連接收到的分段流式數(shù)據(jù)拼接起來后進(jìn)行播放。
2.根據(jù)權(quán)利要求1所述的基于多條TCP連接的HTTP流媒體直播方法,其特征在于,在數(shù)據(jù)傳輸期間,客戶端實時根據(jù)網(wǎng)絡(luò)狀態(tài)的變化動態(tài)調(diào)整TCP連接的個數(shù)。
3.根據(jù)權(quán)利要求1所述的基于多條TCP連接的HTTP流媒體直播方法,其特征在于,客戶端發(fā)起若干個TCP連接并完成綁定的步驟進(jìn)一步包括: 客戶端發(fā)起第一個連接并發(fā)送HTTP請求; 服務(wù)端為該請求分配全局唯一的會話標(biāo)識,并在HTTP響應(yīng)中發(fā)送給客戶端,同時開始傳輸流式數(shù)據(jù); 客戶端從HTTP響應(yīng)中獲取會話標(biāo)識,并連續(xù)發(fā)起第2至N個連接,在HTTP請求中攜帶該會話標(biāo)識; 服務(wù)端根據(jù)每個請求中的會話標(biāo)識,將第2至第N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)一個新的連接,該新的連接加入到流式數(shù)據(jù)的傳輸中。
4.根據(jù)權(quán)利要求1所述的基于多條TCP連接的HTTP流媒體直播方法,其特征在于,客戶端發(fā)起若干個TCP連接并完成綁定的步驟進(jìn)一步包括: 客戶端隨機(jī)生成近似全局唯一的會話標(biāo)識;` 客戶端連續(xù)發(fā)起第I至N個連接,在HTTP請求中攜帶所述會話標(biāo)識,其中N是自然數(shù);服務(wù)端根據(jù)每個請求中的會話標(biāo)識,將第2至N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)一個新的連接,該新的連接加入到流式數(shù)據(jù)的傳輸中。
5.根據(jù)權(quán)利要求2所述的基于多條TCP連接的HTTP流媒體直播方法,其特征在于,客戶端對TCP連接個數(shù)的動態(tài)調(diào)整包括: 客戶端動態(tài)檢測數(shù)據(jù)的傳輸狀態(tài),以確認(rèn)是否滿足直播播放的需求; 當(dāng)傳輸速率低于直播播放需求時,啟動TCP連接動態(tài)增加過程,動態(tài)增加是指客戶端發(fā)起若干個新連接并發(fā)送HTTP請求,HTTP請求中攜帶直播流名稱以及會話標(biāo)識; 服務(wù)端逐個處理新的請求HTTP,并根據(jù)會話標(biāo)識與原有的N個連接進(jìn)行關(guān)聯(lián),新關(guān)聯(lián)的連接加入到流式數(shù)據(jù)的傳輸中。
6.一種基于多條TCP連接的HTTP流媒體直播系統(tǒng),包括: 連接建立綁定裝置,客戶端發(fā)起若干個TCP連接并完成綁定; 分散傳輸裝置,服務(wù)端將流式數(shù)據(jù)進(jìn)行分段并分散在已完成綁定的若干個TCP連接中進(jìn)行數(shù)據(jù)傳輸; 拼接播放裝置,客戶端將各個TCP連接收到的分段流式數(shù)據(jù)拼接起來后進(jìn)行播放。
7.根據(jù)權(quán)利要求6所述的基于多條TCP連接的HTTP流媒體直播系統(tǒng),其特征在于,系統(tǒng)還包括: 連接數(shù)量調(diào)整裝置,在數(shù)據(jù)傳輸期間實時根據(jù)網(wǎng)絡(luò)狀態(tài)的變化動態(tài)調(diào)整TCP連接的個數(shù)。
8.根據(jù)權(quán)利要求6所述的基于多條TCP連接的HTTP流媒體直播系統(tǒng),其特征在于,連接建立綁定裝置進(jìn)一步包括:HTTP請求發(fā)起模塊,客戶端發(fā)起第一個連接并發(fā)送HTTP請求; 會話標(biāo)識分配模塊,服務(wù)端為該請求分配全局唯一的會話標(biāo)識,并在HTTP響應(yīng)中發(fā)送給客戶端,同時開始傳輸流式數(shù)據(jù); 會話標(biāo)識攜帶模塊,客戶端從HTTP響應(yīng)中獲取會話標(biāo)識,并連續(xù)發(fā)起第2至N個連接,在HTTP請求中攜帶該會話標(biāo)識; 連接關(guān)聯(lián)模塊,服務(wù)端根據(jù)每個請求中的會話標(biāo)識,將第2至第N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)ー個新的連接,該新的連接加入到流式數(shù)據(jù)的傳輸中。
9.根據(jù)權(quán)利要求6所述的基于多條TCP連接的HTTP流媒體直播系統(tǒng),其特征在于,連接建立綁定裝置進(jìn)ー步包括: 會話標(biāo)識生成模塊,客戶端隨機(jī)生成近似全局唯一的會話標(biāo)識; 會話標(biāo)識攜帯模塊,客戶端連續(xù)發(fā)起第I至N個連接,在HTTP請求中攜帯所述會話標(biāo)識,其中N是自然數(shù); 連接關(guān)聯(lián)模塊,服務(wù)端根據(jù)每個請求中的會話標(biāo)識,將第2至N個連接和第I個連接進(jìn)行關(guān)聯(lián),每關(guān)聯(lián)ー個新的連接,該新的連接加入到流式數(shù)據(jù)的傳輸中。
10.根據(jù)權(quán)利要求7所述的基于多條TCP連接的HTTP流媒體直播系統(tǒng),其特征在于,連接數(shù)量調(diào)整裝置包括: 狀態(tài)檢測模塊,客戶端動態(tài)檢測數(shù)據(jù)的傳輸狀態(tài),以確認(rèn)是否滿足直播播放的需求; 連接增加模塊,當(dāng)傳輸速率低于直播播放需求時,啟動TCP連接動態(tài)增加過程,動態(tài)增加是指客戶端發(fā)起若干個新連接并發(fā)送HTTP請求,HTTP請求中攜帯直播流名稱以及會話標(biāo)識; 新增連接關(guān)聯(lián)模塊,服務(wù)端逐個處理新的請求HTTP,并根據(jù)會話標(biāo)識與原有的N個連接進(jìn)行關(guān)聯(lián),新關(guān)聯(lián)的連接加入到流式數(shù)據(jù)的傳輸中。
【文檔編號】H04L29/06GK103457956SQ201310424840
【公開日】2013年12月18日 申請日期:2013年9月17日 優(yōu)先權(quán)日:2013年9月17日
【發(fā)明者】洪珂, 白永光, 鄒煥英 申請人:網(wǎng)宿科技股份有限公司