專利名稱:網(wǎng)絡(luò)流媒體傳輸斷線重連技術(shù)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種流媒體傳輸系統(tǒng)中客戶端的斷線重連技術(shù)。
技術(shù)背景隨著互聯(lián)網(wǎng)技術(shù)和計算機技術(shù)的快速發(fā)展,在網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)已經(jīng)由原來的文字和圖 片逐步過渡到聲音和視頻等多媒體格式。在流媒體技術(shù)出現(xiàn)以前,觀看音視頻節(jié)目采用的是 傳統(tǒng)的下載一回放技術(shù)。但是,由于受到網(wǎng)絡(luò)帶寬、協(xié)議規(guī)范等方面的限制,從網(wǎng)絡(luò)上下載 大量的音視頻文件需要耗費大量的時間和存儲空間,這就限制了人們在網(wǎng)絡(luò)上使用音視頻信 息進行交流。流媒體技術(shù)的出現(xiàn)很好地解決了這個問題。流是近年在網(wǎng)絡(luò)上出現(xiàn)的新概念,主要是指 通過網(wǎng)絡(luò)傳輸多媒體數(shù)據(jù)的技術(shù)總稱。通過流媒體技術(shù),服務(wù)器能夠向客戶端發(fā)送穩(wěn)定和連 續(xù)的多媒體數(shù)據(jù)流,客戶端在接收數(shù)據(jù)的同時以一個穩(wěn)定的速率回放,而不用等數(shù)據(jù)全部下 載完之后再進行回放。流媒體具有啟動延時小、節(jié)省用戶存儲空間等優(yōu)點,在互聯(lián)網(wǎng)的各個 領(lǐng)域得到了廣泛的應(yīng)用,如視頻點播、視頻會議、遠程教育、視頻監(jiān)控、Internet直播等。目前流媒體傳輸主要采用的是RTSP/RTP/RTCP協(xié)議。服務(wù)器利用RTP協(xié)議向客戶端穩(wěn)定、 連續(xù)地發(fā)送多媒體數(shù)據(jù)流,客戶端通過RTSP協(xié)議和服務(wù)器端進行交互,RTSP (Real Time Streaming Protocol,實時流協(xié)議)可以對流媒體提供諸如播放、暫停、快進、快退等操作, 它負責(zé)定義具體的控制消息、操作方法和狀態(tài)碼等,此外還描述了與RTP (Real-time Transport Protocol,實時傳輸協(xié)議)間的交互操作。在從服務(wù)器接收穩(wěn)定連續(xù)的數(shù)據(jù)流時,客戶端的網(wǎng)絡(luò)連接由于某種原因可能會突然斷開, 這樣會導(dǎo)致應(yīng)用程序的退出而使客戶端的下載和播放中斷,如圖1所示。如果用戶想繼續(xù)觀 看或者下載節(jié)目,需要在網(wǎng)絡(luò)連接恢復(fù)正常后重新連接服務(wù)器,這增加了播放和下載中斷的 時間,也增加了用戶的操作,降低了客戶端軟件或產(chǎn)品的易用性。 發(fā)明內(nèi)容本發(fā)明針對客戶端的網(wǎng)絡(luò)連接斷開導(dǎo)致的數(shù)據(jù)流中斷,影響客戶端流媒體數(shù)據(jù)下載的完 整性和播放質(zhì)量等問題,提供一種能夠?qū)崿F(xiàn)客戶端自動重新連接服務(wù)器并且從數(shù)據(jù)流中斷的 時刻繼續(xù)接收數(shù)據(jù)流,從而保證用戶繼續(xù)觀看節(jié)目或者下載完整的流媒體文件的網(wǎng)絡(luò)流媒體 傳輸斷線重連技術(shù)。本發(fā)明的網(wǎng)絡(luò)流媒體傳輸斷線重連技術(shù),包括以下步驟(1) 網(wǎng)絡(luò)連接斷開檢測,通過讀取媒體數(shù)據(jù)緩沖區(qū)得到的值來判斷網(wǎng)絡(luò)是否斷開,如果 客戶端至少1000次連續(xù)(例如取1000次,在視頻的幀率為30幀/秒的情況下,這相當于30 秒左右的時間)從媒體數(shù)據(jù)緩沖區(qū)讀取的數(shù)據(jù)長度都為O并且不是應(yīng)用程序正常退出導(dǎo)致的, 說明網(wǎng)絡(luò)連接已經(jīng)斷開,那么設(shè)置網(wǎng)絡(luò)連接斷開標志的值;(2) 檢測網(wǎng)絡(luò)連接狀態(tài),客戶端首先檢查網(wǎng)絡(luò)連接斷開標志,如果是網(wǎng)絡(luò)連接斷開的原 因,客戶端就利用RTSP協(xié)議的OPTIONS (選項)方法不斷向服務(wù)器發(fā)送RTSP協(xié)議的OPTIONS 消息,通過得到的響應(yīng)來對網(wǎng)絡(luò)連接的狀態(tài)進行判斷,以檢測網(wǎng)絡(luò)連接的狀態(tài)并及時發(fā)現(xiàn)連 接恢復(fù)正常;(3)繼續(xù)接收數(shù)據(jù),客戶端根據(jù)流媒體系統(tǒng)中流媒體傳輸和播放的時間關(guān)系計算網(wǎng)絡(luò)連 接斷開時刻所對應(yīng)的節(jié)目的正常播放時間(NPT),然后,客戶端把這個時間作為RTSP協(xié)議 PLAY方法的一個參數(shù)向流媒體服務(wù)器請求節(jié)目中斷時的正常播放時間(NPT)以后的數(shù)據(jù), 實現(xiàn)流媒體數(shù)據(jù)的繼續(xù)下載或播放。本發(fā)明利用RTSP協(xié)議的OPTIONS方法和PLAY (播放)方法,在客戶端的網(wǎng)絡(luò)連接斷開 后,使得當網(wǎng)絡(luò)連接恢復(fù)正常時,客戶端可以繼續(xù)從服務(wù)器接收數(shù)據(jù),保證了客戶端流媒體 數(shù)據(jù)下載的完整性和播放質(zhì)量。
圖l是斷線重連示意圖。圖2是流媒體客戶端框圖。圖3是流媒體系統(tǒng)中的時間關(guān)系。
具體實施方式
如圖1所示,在從服務(wù)器接收穩(wěn)定連續(xù)的數(shù)據(jù)流時,客戶端的網(wǎng)絡(luò)連接由于某種原因可 能會突然斷開,這樣會導(dǎo)致應(yīng)用程序的退出而使客戶端的下載和播放中斷??蛻舳送ㄟ^網(wǎng)絡(luò)從服務(wù)器上接收流媒體數(shù)據(jù)的流程如圖2所示。從圖2中可以看出,客 戶端主要由三個部件組成接收重組、解碼和播放??蛻舳耸紫扰c流媒體服務(wù)器通過RTSP協(xié) 議建立連接,進行必要的信息交互。然后客戶端從網(wǎng)絡(luò)接收包含媒體數(shù)據(jù)的RTP包,根據(jù)RTP 包的序列號和時間戳等信息從RTP包中提取媒體數(shù)據(jù)并進行排序重組。還原的媒體數(shù)據(jù)包含 音視頻混合信息,交給相應(yīng)的解碼器解碼播放。當客戶端的網(wǎng)絡(luò)連接斷開時,經(jīng)過一段時間,媒體數(shù)據(jù)緩沖區(qū)中緩沖的數(shù)據(jù)將消耗完畢, 應(yīng)用程序(播放器或下載流媒體數(shù)據(jù)的程序)從媒體數(shù)據(jù)緩沖區(qū)連續(xù)多次讀取的數(shù)據(jù)長度必 然都是0,這可以作為網(wǎng)絡(luò)連接斷開的標志。由于應(yīng)用程序的正常退出也可以導(dǎo)致這種現(xiàn)象 的發(fā)生,所以必須有另外的標志來區(qū)分這兩種情況。在網(wǎng)絡(luò)連接斷開以后,客戶端不斷地向 服務(wù)器發(fā)送消息來檢測網(wǎng)絡(luò)連接的狀態(tài),以便及時發(fā)現(xiàn)連接恢復(fù)正常。在連接恢復(fù)正常以后, 客戶端按照給定的算法計算網(wǎng)絡(luò)連接斷開時所對應(yīng)的節(jié)目的正常播放時間(NPT, Normal Play Time),用RTSP協(xié)議的PLAY方法向流媒體服務(wù)器請求這個時間以后的數(shù)據(jù),實現(xiàn)流媒體數(shù)據(jù) 的繼續(xù)下載或播放。具體實施步驟如下1、網(wǎng)絡(luò)連接斷開檢測首先設(shè)置一個閾值N和網(wǎng)絡(luò)連接斷開標志FLAG,當客戶端連續(xù)N次從媒體數(shù)據(jù)緩沖區(qū)讀 取的數(shù)據(jù)長度為0時,如果原因是用戶主動停止連接,將FLAG的值設(shè)置為O;如果是網(wǎng)絡(luò)連 接斷開的原因,將FLAG的值設(shè)置為1。此算法描述如下-DEFINE NWHILE (讀取的數(shù)據(jù)長度為O)IF (用戶停止了連接) {FLAG=0;程序正常退出;} ELSEcount力口 1; IF (count=N){網(wǎng)絡(luò)連接已經(jīng)斷開;fbroken=l; ELSE{程序按原來的方式執(zhí)行;}2、 檢測網(wǎng)絡(luò)連接的狀態(tài)在網(wǎng)絡(luò)連接斷開以后,如果不加任何處理,應(yīng)用程序會當作是用戶主動停止了連接而正 常退出,因此需要使用一種方法讓客戶端和服務(wù)器繼續(xù)保持聯(lián)系,以便當網(wǎng)絡(luò)連接恢復(fù)正常 以后客戶端可以從斷開的時間點繼續(xù)接收數(shù)據(jù)。客戶端和服務(wù)器的交互是用RTSP協(xié)議來實現(xiàn)的。在一次會話中,客戶端首先向服務(wù)器發(fā) 送OPTIONS方法來査詢服務(wù)器所支持的操作,如果網(wǎng)絡(luò)連接正常,客戶端將接收到服務(wù)器發(fā) 送過來的消息,里面包含了服務(wù)器所支持的方法;如果網(wǎng)絡(luò)連接是斷開的,應(yīng)用程序?qū)⒌玫?一個表示連接不成功的返回值。根據(jù)這個特點,選擇OPTIONS方法作為嘗試網(wǎng)絡(luò)連接的命令。在一個設(shè)定的時間內(nèi),客戶端不停地向服務(wù)器發(fā)送OPTIONS命令,如果網(wǎng)絡(luò)連接在某個 時間恢復(fù)正常,就進入繼續(xù)接收數(shù)據(jù)的處理程序;如果在這段時間內(nèi)網(wǎng)絡(luò)連接沒有恢復(fù)正常 的,則放棄嘗試,退出程序。3、 數(shù)據(jù)的繼續(xù)接收 (1) NPT的獲取表示時間(Presentation Time)指示表示單元出現(xiàn)在系統(tǒng)目標解碼器中的時間。表示時 間的計算方法是從1970年1月1日零時到現(xiàn)在的秒數(shù)。由于表示時間表明的是一個表示單元 在終端系統(tǒng)中被解碼播放的時間,它可以用來計算NPT。在客戶端收到的第一個表示時間對應(yīng)的NPT為0,它表示一個節(jié)目的開始。表示時間的 增長尺度和NPT的增長尺度是相同的。在客戶端,每收到一個RTP包的同時也收到了和這個 RTP對應(yīng)的表示時間。這個RTP包的表示時間與客戶端收到的第一個RTP包的表示時間的差 值就表示了當前收到的RTP包的NPT。根據(jù)以上分析,記錄每次網(wǎng)絡(luò)連接斷開時所接收到的 最后一個RTP的表示時間,用這個表示時間來計算網(wǎng)絡(luò)連接斷開時所對應(yīng)的節(jié)目的NPT。此 算法描述如下WHILE (在一段時間內(nèi),客戶端正在接收數(shù)據(jù)包)記錄第一個數(shù)據(jù)包的表示時間first—PT; 記錄最近接收的數(shù)據(jù)包的表示時間latest—PT;IF (檢測到網(wǎng)絡(luò)連接斷開){ broken_NPT=current—NPT+(latest_PT-first—PT) }其中,broken—NPT表示網(wǎng)絡(luò)連接斷開時的NPT, current_NPT表示上一次網(wǎng)絡(luò)連接斷開時的NPT (設(shè)置current—NPT這個變量的目的是處理網(wǎng)絡(luò)連接多次斷開的情況,如果是第一 次網(wǎng)絡(luò)連接斷開,current—NPT的值為0), latest_PT和first_PT的差值表示正常接收數(shù)據(jù) 包時,這一部分數(shù)據(jù)包所包含的數(shù)據(jù)對應(yīng)的播放時間。各個時間的關(guān)系參考圖3。 (2) RTSP的PLAY方法RTSP協(xié)議的PLAY方法告訴服務(wù)器按照某種規(guī)定的機制開始發(fā)送數(shù)據(jù)。PLAY方法可以帶 一些參數(shù),指定服務(wù)器開始發(fā)送數(shù)據(jù)的NPT, PLAY函數(shù)的原型是PLAY (session, start, end, scale)。其中,session指定了 PLAY方法所作用的會話,start表示節(jié)目開始的NPT, end表 示結(jié)束的NPT, scale是一個播放速度的縮放因子,scale大于1表示比正常的播放速度要快, 而scale小于1則表示比正常的播放速度要慢。根據(jù)上面的分析,可以在網(wǎng)絡(luò)連接恢復(fù)正常以后,把網(wǎng)絡(luò)斷開的時間作為PLAY函數(shù)中節(jié) 目開始的NPT參數(shù)start,用PLAY函數(shù)向服務(wù)器請求網(wǎng)絡(luò)斷開時間以后的數(shù)據(jù)。函數(shù)的形式 是PLAY (session, broken_NPT, end, scale), broken—NPT表示網(wǎng)絡(luò)連接斷開時的正常播放 時間。網(wǎng)絡(luò)連接恢復(fù)正常以后,通過獲得網(wǎng)絡(luò)連接斷開時的NPT,就可以利用RTSP的PLAY方 法向服務(wù)器重新請求數(shù)據(jù),實現(xiàn)流媒體數(shù)據(jù)的完整下載或播放。
權(quán)利要求
1.一種網(wǎng)絡(luò)流媒體傳輸斷線重連技術(shù),包括以下步驟(1)網(wǎng)絡(luò)連接斷開檢測,通過讀取媒體數(shù)據(jù)緩沖區(qū)得到的值來判斷網(wǎng)絡(luò)是否斷開,如果客戶端至少連續(xù)1000次從媒體數(shù)據(jù)緩沖區(qū)讀取的數(shù)據(jù)長度都為0并且不是應(yīng)用程序正常退出導(dǎo)致的,說明網(wǎng)絡(luò)連接已經(jīng)斷開,那么設(shè)置網(wǎng)絡(luò)連接斷開標志的值;(2)檢測網(wǎng)絡(luò)連接狀態(tài),客戶端首先檢查網(wǎng)絡(luò)連接斷開標志,如果是網(wǎng)絡(luò)連接斷開的原因,客戶端就利用RTSP協(xié)議的OPTIONS方法不斷向服務(wù)器發(fā)送RTSP協(xié)議的OPTIONS消息,通過得到的響應(yīng)來對網(wǎng)絡(luò)連接的狀態(tài)進行判斷,以檢測網(wǎng)絡(luò)連接的狀態(tài)并及時發(fā)現(xiàn)連接恢復(fù)正常;(3)繼續(xù)接收數(shù)據(jù),客戶端根據(jù)流媒體系統(tǒng)中流媒體傳輸和播放的時間關(guān)系計算網(wǎng)絡(luò)連接斷開時刻所對應(yīng)的節(jié)目的正常播放時間,然后,客戶端把這個時間作為RTSP協(xié)議PLAY方法的一個參數(shù)向流媒體服務(wù)器請求節(jié)目中斷時的正常播放時間以后的數(shù)據(jù),實現(xiàn)流媒體數(shù)據(jù)的繼續(xù)下載或播放。
全文摘要
本發(fā)明提出了一種網(wǎng)絡(luò)流媒體傳輸斷線重連技術(shù)。該技術(shù)包括以下步驟(1)網(wǎng)絡(luò)連接斷開檢測,(2)檢測網(wǎng)絡(luò)連接狀態(tài),(3)繼續(xù)接收數(shù)據(jù),客戶端根據(jù)流媒體系統(tǒng)中的時間關(guān)系計算網(wǎng)絡(luò)連接斷開時刻所對應(yīng)的節(jié)目的NPT,然后,客戶端把這個時間作為RTSP協(xié)議PLAY方法的一個參數(shù)向流媒體服務(wù)器請求節(jié)目中斷時的NPT以后的數(shù)據(jù),實現(xiàn)流媒體數(shù)據(jù)的繼續(xù)下載或播放。本發(fā)明利用RTSP協(xié)議的OPTIONS方法和PLAY方法,在客戶端的網(wǎng)絡(luò)連接斷開后,使得當網(wǎng)絡(luò)連接恢復(fù)正常時,客戶端可以繼續(xù)從服務(wù)器接收數(shù)據(jù),保證了客戶端流媒體數(shù)據(jù)下載的完整性和播放質(zhì)量。
文檔編號H04L29/06GK101277209SQ200810016000
公開日2008年10月1日 申請日期2008年5月14日 優(yōu)先權(quán)日2008年5月14日
發(fā)明者喬建蘋, 任振峰, 琚 劉, 李善彬, 魏于濤 申請人:山東大學(xué)