專利名稱:基于廣播、ftp的雙模式傳輸方法
技術領域:
本發(fā)明涉及一種數字電視領域傳輸流(Transport Stream,簡稱為TS流)的文件傳輸方法,特別涉及一種以TS流傳輸文件為主,以FTP協(xié)議為輔的文件傳輸方法。
背景技術:
現代社會是一個信息爆炸的社會,歸功于互聯網的普及,人們可以迅速地獲得各種信息,有信息就存在信息的傳輸,電臺電視臺的音視頻廣播、互聯網上的文件傳輸等等都屬于信息的傳輸。信息的傳輸存在多種方式,比如文件傳輸,在互聯網上就存在基于客戶端/服務器模式的FTP傳輸方式,在電臺電視臺的音視頻廣播TS流中存在基于DSM-CC協(xié)議的廣播式文件傳輸方式。這兩種傳輸方式各有所長,適用于不同的傳輸環(huán)境。
TS流中基于DSM-CC協(xié)議的文件傳輸方式特別適合于廣播方式的文件傳輸,該協(xié)議將文件分成小塊,按照固定的順序一遍又一遍的發(fā)送出去,這個過程稱為文件輪放。多個終端可以從同一路TS流中獲取到自己需要的文件,但是當終端遺漏了某個文件塊時,則必須等待一個文件輪放周期才能再次收到該文件塊。
FTP傳輸方式適合于較少數量的客戶端到同一個文件下載服務器上下載文件。該協(xié)議允許客戶端從文件的任意位置開始下載,某處下載出錯時可以要求服務器重新傳送,靈活性高,但是服務器需要響應、維護每個客戶端的連接,當客戶端數量較多時,每個客戶端分配到的帶寬會減少,過多的客戶端數量甚至會造成服務器的崩潰、死機。
發(fā)明內容
本發(fā)明的技術問題是要提供一種以廣播方式為主,FTP補點為輔助,兩種傳輸方式取長補短,使其在各種環(huán)境下都能達到較好的傳輸效果的基于廣播、FTP的雙模式傳輸方法。
為了解決以上的技術問題,本發(fā)明提供了一種基于廣播、FTP的雙模式傳輸方法,該傳輸方法是以基于DSM-CC協(xié)議的廣播模式為主,以FTP補點下載模式為輔。
一個文件分成若干文件塊,每個文件都有兩種模式的下載源,既可以從廣播模式的DSM-CC數據流中獲取文件塊,也可以使用FTP方式從互聯網上獲取。在以DSM-CC協(xié)議為主要下載方式的機頂盒中,主下載模式為廣播,以TS流中獲取的文件塊為主,在從TS流中獲取的文件塊出錯、遺失時使用FTP重新下載該文件塊,進行補點操作,這樣就不必等到下一個文件輪放周期才能獲取到該文件塊了。
該傳輸方法的步驟是 1)DSM-CC文件下載服務器和FTP文件下載服務器對同一文件名進行預處理,得到相同的文件標識,即文件名加上CRC32值; 2)DSM-CC文件下載服務器劃分文件塊,將該文件的信息編碼生成相應的DSM-CC表格; 3)TS流文件輪放; 4)客戶端從TS流中解碼出各個文件的信息,創(chuàng)建對應的文件,開始接收文件塊,進行文件下載; 5)判斷文件是否遺漏;是,轉第8)步; 6)否,驗證文件的CRC32值;不相等,刪除文件,重新下載; 7)相等,下載成功,還原文件名,即刪除CRC32值; 8)將遺漏的文件名標識發(fā)給FTP文件下載服務器,提出補點下載的請求; 9)計算出遺漏文件塊的偏移量offset,請求下載; 10)下載文件塊,達到規(guī)定的文件塊大小BlockSize時,停止下載; 11)將文件塊發(fā)送給客戶端,完成補點下載。
各個下載源都遵循相同的文件標識協(xié)議,使得客戶端的兩種下載模式都可以正確的識別文件,因此使用文件名及文件的CRC32值共同作為文件的標識。首先比較文件名,如果文件名不同,則判定兩個文件不同;如果文件名相同,則比較兩個文件的CRC32值,相同則判定是同一個文件,不同則判定為不同的文件。由于FTP協(xié)議僅使用文件名作為文件標識,為了減少查詢CRC32值時的額外開銷,特將下載源的文件進行預處理,所有文件的文件名后增加一對中括號,中括號內添加該文件的CRC32值,如一個文件原名為test.mp3,其CRC32值為0x01234567,則經過預處理后的文件名為test.mp3
。經過預處理,僅使用文件名加上CRC32值就作為文件的標識了。文件下載完畢后,需要計算該文件的CRC32值,看是否與文件名中的CRC32值相等。如果相等,則文件正確,下載成功;如果不相等,則文件下載出錯,刪除該文件,重新下載。下載成功后,可以刪除文件名中的CRC32值,還原出原文件名。該文件標識協(xié)議需要服務器維護相同的文件的文件名在不同的下載源上的不變性,以及預處理時的正確性。
所述的DSM-CC文件下載服務器劃分文件塊,將該文件的信息編碼生成相應的DSM-CC表格,該方法是 1)DSM-CC協(xié)議將每個文件塊定義為一個Block,同一傳輸通道中所有文件塊Block的長度相同,該值稱為文件塊大小(BlockSize),取值范圍為1字節(jié)~4066字節(jié); 2)根據文件的大小和文件塊大小(BlockSize),計算出該文件的塊數(BlockNum); 3)將該文件的信息編碼生成相應的DSM-CC表格,該DSM-CC表格中攜帶有該文件名、文件大小、文件塊大小(BlockSize)、塊數(BlockNum),還有BlockIndex字段用于描述該表格攜帶的Block序號。
DSM-CC協(xié)議將每個文件塊定義為一個Block,同一個傳輸通道中所有Block的長度必須相同,該值稱為文件塊大小(BlockSize),(文件結尾處的那個Block可以例外,因為文件長度通常不能被BlockSize整除),取值范圍為1字節(jié)到4066字節(jié),通常取最大值,這樣TS傳輸通道的有效負載率才能達到最高。根據文件的大小和BlockSize可以計算出該文件的塊數(BlockNum)。DSM-CC協(xié)議在TS流中的表現形式是DSM-CC表格。DSM-CC表格中攜帶有文件名、文件大小、BlockSize、BlockNum這些文件描述信息,此外還有BlockIndex字段用于描述該表格攜帶的Block的序號,使用表格的表格長度(SectionLength)字段可以計算出該表格攜帶的Block的長度(文件結尾處的Block的長度可能會小于BlockSize),用于定位其在整個文件中的位置。
TS流下載模塊對每個文件都維護一張表格,記錄其各個Block的下載情況,如果客戶端在TS流下載過程中沒有出現丟包等現象,則表格中下載完畢的文件塊將會是連續(xù)排列的;如果在下載過程中出現丟包,遺漏了某些文件塊沒有下載,則表格中連續(xù)排列的下載完畢的文件塊中會出現一些沒有下載完畢的文件塊。當出現第一個遺漏的文件塊時,TS流下載模塊即可對FTP下載模塊發(fā)出請求,進行補點下載。當補點完一個遺漏的文件塊后,如果后續(xù)還有遺漏的塊的話,繼續(xù)進行補點。
所述的計算遺漏文件塊的偏移量offset,該方法是 1)先獲取需要補點Block的BlockIndex字段; 2)偏移量offset=BlockIndex×BlockSize(BlockIndex從0開始),FTP協(xié)議即可定位需要下載的文件塊位置及長度。
FTP協(xié)議使用偏移量作為文件下載起始位置的標識。偏移量即下載位置距離文件第一個字節(jié)的字節(jié)數,當使用FTP對TS流下載的文件進行補點操作時,首先獲取需要補點的Block的BlockIndex,然后計算該Block的偏移量。計算公式如下 偏移量=BlockIndex×BlockSize(BlockIndex從0開始) 需要下載的文件塊長度即為BlockSize(最后一個文件塊需視情況另行計算),由此FTP協(xié)議即可定位需要下載的文件塊位置及長度了。
本發(fā)明的優(yōu)越功效在于 1)本發(fā)明以廣播方式為主,FTP補點為輔助,取長補短,提高了下載的效率; 2)本發(fā)明的傳輸方法使其在各種環(huán)境下都能達到較好的傳輸效果。
圖1為本發(fā)明的傳輸流程圖。
具體實施例方式 請參閱附圖所示,對本發(fā)明作進一步的描述。
如圖1所示,本發(fā)明提供了一種基于廣播、FTP的雙模式傳輸方法,現以機頂盒以接收功能為主的設備為例,DSM-CC文件下載服務器和FTP文件下載服務器都使用文件名及文件的CRC32值作為文件標識,在文件下載前,對所有文件的文件名進行預處理,所有文件的文件名后增加一對中括號,中括號內添加該文件的CRC32值。
DSM-CC文件下載服務器使用4066作為BlockSize的預設值對各個文件來劃分Block,然后將各個文件的文件名、文件長度、文件塊大小(BlockSize)、文件塊數(BlockNum)、文件塊序號(BlockIndex)的描述信息編碼到對應的DSM-CC表格中,通過TS流發(fā)送出去。
機頂盒接收終端從作為主下載模式的TS流中解碼出各個文件的描述信息,然后創(chuàng)建對應的文件,開始接收文件塊,進行文件下載。當發(fā)現遺漏了某些文件塊沒有下載到時,則將該文件的文件名及CRC32值、BlockSize、遺漏文件塊的BlockIndex發(fā)送給FTP下載模塊,請求補點下載。
FTP下載模塊在收到補點請求后,根據BlockSize和BlockIndex計算出要補點的文件塊的偏移量offset,然后向FTP文件下載服務器發(fā)送下載請求,從對應文件的offset處開始下載。當下載的數據量達到BlockSize后,即獲得了需要補點的文件塊。此時停止下載,并將該文件塊發(fā)給TS流下載模塊,完成補點。
當一個文件所有的文件塊都下載完畢后,計算該文件的CRC32值,看是否與文件名中的CRC32值相等。如果相等,則文件正確,下載成功,刪除文件名中的CRC32值,還原出原文件名;如果不相等,則文件下載出錯,刪除該文件,重新下載。
權利要求
1、一種基于廣播、FTP的雙模式傳輸方法,其特征在于
該傳輸方法是以基于DSM-CC協(xié)議的廣播模式為主,以FTP補點下載模式為輔,該傳輸方法的步驟是
1)DSM-CC文件下載服務器和FTP文件下載服務器對同一文件名進行預處理,得到相同的文件標識,即文件名加上CRC32值;
2)DSM-CC文件下載服務器劃分文件塊,將該文件的信息編碼生成相應的DSM-CC表格;
3)TS流文件輪放;
4)客戶端從TS流中解碼出各個文件的信息,創(chuàng)建對應的文件,開始接收文件塊,進行文件下載;
5)判斷文件是否遺漏;是,轉第8)步;
6)下載完畢,驗證文件的CRC32值;不相等,刪除文件,重新下載;
7)相等,下載成功,還原文件名,即刪除CRC32值;
8)將遺漏的文件名標識發(fā)給FTP文件下載服務器,提出補點下載的請求;
9)計算出遺漏文件塊的偏移量offset,請求下載;
10)下載文件塊,達到規(guī)定的文件塊大小BlockSize時,停止下載;
11)將文件塊發(fā)送給客戶端,完成補點下載。
2、一種基于廣播、FTP的雙模式傳輸方法,其特征在于
所述的DSM-CC文件下載服務器劃分文件塊,將該文件的信息編碼生成相應的DSM-CC表格,該方法是
1)DSM-CC協(xié)議將每個文件塊定義為一個Block,同一傳輸通道中所有文件塊Block的長度相同,該值稱為文件塊大小,取值范圍為1字節(jié)~4066字節(jié);
2)根據文件的大小和文件塊大小,計算出該文件的塊數;
3)將該文件的信息編碼生成相應的DSM-CC表格,該DSM-CC表格中攜帶有該文件名、文件大小、文件塊大小、塊數,還有BlockIndex字段用于描述該表格攜帶的Block序號。
3、一種基于廣播、FTP的雙模式傳輸方法,其特征在于
所述的計算遺漏文件塊的偏移量offset,該方法是
1)先獲取需要補點Block的BlockIndex字段;
2)偏移量offset=BlockIndex×文件塊大小(BlockIndex從0開始),FTP協(xié)議即可定位需要下載的文件塊位置及長度。
全文摘要
一種基于廣播、FTP的雙模式傳輸方法,是以主下載模式為廣播,以TS流中獲取的文件塊為主,在從TS流中獲取的文件塊出錯、遺失時使用FTP重新下載該文件塊,進行補點操作。本發(fā)明的優(yōu)點是提高了下載的效率,不必等到下一個文件輪放周期才能獲取到該文件塊,使其在各種環(huán)境下都能達到較好的傳輸效果。
文檔編號H04L29/08GK101252595SQ20081003510
公開日2008年8月27日 申請日期2008年3月25日 優(yōu)先權日2008年3月25日
發(fā)明者劉顯斌, 顧沛峰, 陳雷鳴, 璿 楊 申請人:上海文廣科技發(fā)展有限公司