專利名稱:一種基于數(shù)據(jù)特征的流媒體內(nèi)容下載方法
一種基于數(shù)據(jù)特征的流媒體內(nèi)容下載方法技術(shù)領(lǐng)域本方法屬于網(wǎng)絡(luò)資源下載,特別涉及一種基于數(shù)據(jù)特征的流媒體 內(nèi)容下載方法。
技術(shù)背景隨著高帶寬網(wǎng)絡(luò)建設(shè),網(wǎng)絡(luò)流媒體服務(wù)呈現(xiàn)快速發(fā)展態(tài)勢(shì)。網(wǎng)絡(luò) 媒體搜索技術(shù)成為快速尋找所需要資源的必要手段,網(wǎng)絡(luò)視頻搜索是 其中最為重要的技術(shù)。網(wǎng)絡(luò)視頻搜索技術(shù)首先獲得視頻內(nèi)容,然后對(duì) 其關(guān)鍵幀進(jìn)行顏色、紋理等特征提取并入庫(kù)供用戶査詢。目前,如何 獲取視頻資源,成為網(wǎng)絡(luò)視頻搜索技術(shù)發(fā)展的瓶頸。通用下載軟件需要根據(jù)資源的URL地址進(jìn)行下載,為了提高下載速度這類軟件通常采 用多線程并行下載,這可能極大降低流媒體網(wǎng)站的性能。另外,限于 網(wǎng)絡(luò)帶寬,用戶瀏覽網(wǎng)絡(luò)流媒體內(nèi)容時(shí),往往很不流暢,經(jīng)常出現(xiàn)停 頓,用戶希望充分利用瀏覽過(guò)程中已經(jīng)產(chǎn)生的數(shù)據(jù)流量,提高低帶寬 網(wǎng)絡(luò)上瀏覽流媒體內(nèi)容的質(zhì)量。當(dāng)前流媒體服務(wù)和視頻博客網(wǎng)站存在以下一些現(xiàn)象(1) 首先,網(wǎng)絡(luò)流媒體一般總是按照某種特定協(xié)議向客戶端提 供流媒體內(nèi)容。比如,目前流行的視頻博客網(wǎng)站就是基于TCP傳輸提供視頻內(nèi)容。(2) 其次,流媒體內(nèi)容在網(wǎng)絡(luò)傳輸中具有短時(shí)間內(nèi)突發(fā)、數(shù)據(jù)
流量大的特點(diǎn)。(3)最后,流媒體內(nèi)容具有自身特點(diǎn)。比如特定格式的流媒體 內(nèi)容具有相應(yīng)的特征頭信息。利用流媒體傳輸?shù)奶卣鳎约傲髅襟w內(nèi)容本身的特征,可以設(shè)計(jì) 一種通用的流媒體內(nèi)容下載方法。 發(fā)明內(nèi)容本發(fā)明的目的是提供一種針對(duì)流媒體內(nèi)容的、通用的下載方法, 這種下載方法一方面可以保證正確下載我們需要的媒體內(nèi)容,另一方 面也不會(huì)導(dǎo)致流媒體網(wǎng)站性能降低。為實(shí)現(xiàn)上述目的,本發(fā)明提出一種基于數(shù)據(jù)特征的流媒體內(nèi)容下載方法,包括以下步驟(1) 開啟數(shù)據(jù)包捕捉線程;(2) 打開包含視頻內(nèi)容的鏈接地址,將捕捉到的數(shù)據(jù)包以二進(jìn)制 數(shù)據(jù)流的形式緩存到一個(gè)緩存文件中,同時(shí)建立一個(gè)緩存索引文件;(3) 根據(jù)緩存索引文件讀取緩存文件,將具有相同會(huì)話端口的所 有數(shù)據(jù)包存儲(chǔ)至一個(gè)會(huì)話文件,得到多個(gè)會(huì)話文件,同時(shí)對(duì)每一個(gè)會(huì) 話文件建立一個(gè)會(huì)話索引文件;(4) 根據(jù)會(huì)話文件的尺寸和該文件中的媒體內(nèi)容開始碼確認(rèn)該會(huì) 話文件中是否包含媒體內(nèi)容,刪除不包含媒體內(nèi)容的會(huì)話文件;(5) 根據(jù)會(huì)話索引文件依次讀取會(huì)話文件中的數(shù)據(jù)包,根據(jù)數(shù)據(jù) 包中的順序號(hào)、確認(rèn)號(hào)去除重傳包、錯(cuò)誤包,然后將確認(rèn)有效的媒體 數(shù)據(jù)包排序并存入新建的媒體內(nèi)容文件。上述技術(shù)方案中,所述步驟(2 )中的緩存索引文件順序記錄所 有數(shù)據(jù)包的長(zhǎng)度。上述技術(shù)方案中,所述步驟(3 )中的會(huì)話索引文件順序記錄所 有數(shù)據(jù)包的長(zhǎng)度。上述技術(shù)方案中,所述步驟(5)中,確認(rèn)有效媒體數(shù)據(jù)包的方 法如下根據(jù)會(huì)話索引文件依次讀取會(huì)話數(shù)據(jù)包,獲取每個(gè)數(shù)據(jù)包的 會(huì)話端口 ,目的端口地址為程序運(yùn)行的機(jī)器MAC地址的數(shù)據(jù)包確認(rèn)為 媒體數(shù)據(jù)包。上述技術(shù)方案中,所述步驟(5)中,將確認(rèn)有效的媒體數(shù)據(jù)包存入新建的媒體內(nèi)容文件的方法如下數(shù)據(jù)包確認(rèn)為媒體數(shù)據(jù)包,且 確認(rèn)有效后,根據(jù)該數(shù)據(jù)包的順序號(hào)排序,按照排序后的順序,將每 個(gè)有效數(shù)據(jù)包的數(shù)據(jù)長(zhǎng)度、在會(huì)話文件中的偏移位置寫入媒體內(nèi)容索 引文件,最后根據(jù)媒體內(nèi)容索引文件,從會(huì)話文件中再依次讀取所有 媒體數(shù)據(jù)包,并寫入新建的媒體內(nèi)容文件。上述技術(shù)方案中,還包括如下步驟在獲得媒體內(nèi)容文件后,根 據(jù)媒體內(nèi)容開始碼檢測(cè)得到媒體類型,進(jìn)一步刪除該媒體內(nèi)容文件不 能解碼的數(shù)據(jù)。針對(duì)以上分析結(jié)果,本發(fā)明提供的基于數(shù)據(jù)特征的流媒體內(nèi)容下 載方法,該方法的優(yōu)點(diǎn)是(l)徹底解決媒體內(nèi)容鏈接地址難以獲得,導(dǎo)致不能下載問(wèn)題;(2) 徹底解決沒有相應(yīng)URL地址媒體內(nèi)容的下載問(wèn)題;(3) 只需提供包含媒體內(nèi)容的網(wǎng)頁(yè)地址就可以下載媒體內(nèi)容;(4) 在瀏覽過(guò)程中緩存數(shù)據(jù),下載過(guò)程不會(huì)造成流媒體網(wǎng)站性能 降低。
圖1本方法下載流媒體內(nèi)容的流程圖。
具體實(shí)施方式
下面結(jié)合附圖及具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步地描述。 實(shí)施例1參考圖1,本實(shí)施例中基于數(shù)據(jù)特征的流媒體內(nèi)容下載方法包 括如下步驟1、 開啟數(shù)據(jù)包捕捉線程 通過(guò)將網(wǎng)卡的工作模式設(shè)置為混雜模式,可以捕捉通過(guò)網(wǎng)卡的所有數(shù)據(jù)包。本實(shí)施例中采用開源的Wi叩Cap工程作為數(shù)據(jù)包捕捉 線程。2、 打開包含視頻內(nèi)容的鏈接地址,并保存捕捉到的數(shù)據(jù)包 現(xiàn)有技術(shù)中的一般下載軟件需要直接指向所下載資源的鏈接地址才可以下載。本實(shí)施例中需要的鏈接地址是指的包含視頻內(nèi)容的 鏈接,該鏈接位于用戶瀏覽的網(wǎng)頁(yè)上,并不需要直接指向所下載資 源。相對(duì)數(shù)據(jù)包捕捉,寫文件操作是較慢的過(guò)程,為了避免因?yàn)閷?文件操作導(dǎo)致數(shù)據(jù)包丟包,在捕捉數(shù)據(jù)包時(shí)不進(jìn)行數(shù)據(jù)包分離工作, 而是將所有數(shù)據(jù)包以二進(jìn)制數(shù)據(jù)流的形式緩存到一個(gè)文件,并建立 相應(yīng)的緩存索引文件,該緩存索引文件順序記錄所有數(shù)據(jù)包的長(zhǎng)度, 因此根據(jù)該索引文件就可以從緩存文件的二進(jìn)制數(shù)據(jù)流中依次讀取 每一個(gè)數(shù)據(jù)包內(nèi)容。便于后續(xù)的數(shù)據(jù)包分離和特征分析。在所有數(shù) 據(jù)包傳輸完畢后,關(guān)閉打開的鏈接和數(shù)據(jù)包捕捉線程。3、 數(shù)據(jù)包分離根據(jù)緩存索引文件從緩存文件中的二進(jìn)制數(shù)據(jù)中按次序讀取數(shù) 據(jù)包,并根據(jù)數(shù)據(jù)包的會(huì)話端口不同寫入不同的文件。 一個(gè)數(shù)據(jù)包具 有目的端口 A和信宿端口B,該數(shù)據(jù)包的會(huì)話端口記為〈A,B〉。在數(shù) 據(jù)包分離中,將〈A,B〉和〈B,A〉看作同一個(gè)會(huì)話的兩個(gè)方向,因此目 的端口為A,信宿端口為B和目的端口為B,信宿端口為A的數(shù)據(jù) 包存放在一個(gè)會(huì)話文件中。數(shù)據(jù)包分離過(guò)程中建立相應(yīng)的會(huì)話索引文 件,所述會(huì)話索引文件順序記錄屬于本會(huì)話的所有數(shù)據(jù)包的長(zhǎng)度。每 個(gè)會(huì)話文件對(duì)應(yīng)一個(gè)會(huì)話索引文件。4、 確定媒體內(nèi)容所在數(shù)據(jù)包媒體內(nèi)容對(duì)應(yīng)的數(shù)據(jù)包文件尺寸一般較大,對(duì)尺寸大于特定字節(jié) 數(shù)的文件,本實(shí)施例中字節(jié)數(shù)為512kb。檢測(cè)長(zhǎng)度超過(guò)該數(shù)值的會(huì)話 文件中的媒體信息,所檢測(cè)的特征信息包括常見媒體內(nèi)容,如WMV媒 體內(nèi)容的開始碼為0x3026B275, MPEG-1媒體內(nèi)容開始碼為 0x000001BA, FLV媒體內(nèi)容開始碼為0x464C5601, rm媒體內(nèi)容開始碼 為0x2E524D46, 一旦檢測(cè)到這些特征碼,即認(rèn)為該會(huì)話文件中包含
媒體內(nèi)容。 一個(gè)鏈接中,可能包含多個(gè)媒體內(nèi)容,此時(shí)需要根據(jù)會(huì) 話不同分別依次處理。5、 包校驗(yàn)和檢測(cè)對(duì)確定包含媒體內(nèi)容的會(huì)話文件中數(shù)據(jù)包進(jìn)行校驗(yàn)和檢測(cè),丟棄校驗(yàn)錯(cuò)誤的數(shù)據(jù)包。本例中采用TCP包的檢驗(yàn)和檢測(cè)方法。6、 無(wú)效數(shù)據(jù)包去除和數(shù)據(jù)包排序?qū)Σ襟E5處理過(guò)的會(huì)話文件進(jìn)一步處理,去除無(wú)效數(shù)據(jù)包,并對(duì)數(shù)據(jù)包排序。具體如下根據(jù)會(huì)話索引文件依次讀取會(huì)話數(shù)據(jù)包,獲 取每個(gè)數(shù)據(jù)包的會(huì)話端口,確定該數(shù)據(jù)包是媒體數(shù)據(jù)包或者為確認(rèn)數(shù)據(jù)包(目的端口地址為程序運(yùn)行的機(jī)器MAC地址的數(shù)據(jù)包為媒體數(shù)據(jù) 包,否則為確認(rèn)數(shù)據(jù)包)。根據(jù)數(shù)據(jù)包的順序號(hào)、確認(rèn)號(hào)來(lái)確定數(shù)據(jù) 包是否有效(順序號(hào)、確認(rèn)號(hào)均為數(shù)據(jù)包中包含的信息)。數(shù)據(jù)包確認(rèn)為媒體數(shù)據(jù)包,且確認(rèn)有效后,根據(jù)該包的順序號(hào)排 序。按照排序后的順序,將每個(gè)有效數(shù)據(jù)包的數(shù)據(jù)長(zhǎng)度、在會(huì)話文件 中的偏移位置寫入媒體內(nèi)容索引文件。最后根據(jù)媒體內(nèi)容索引文件,從會(huì)話文件中再依次讀取所有媒體 數(shù)據(jù)包,并寫入新建的媒體內(nèi)容文件。7、 進(jìn)一步去除無(wú)效數(shù)據(jù)包上一步處理得到的媒體內(nèi)容文件中,還可能包含無(wú)效內(nèi)容。根據(jù) 檢測(cè)得到的媒體類型,比如^v、 flv、 rm、 swf等等,進(jìn)一步刪除不
權(quán)利要求
1、一種基于數(shù)據(jù)特征的流媒體內(nèi)容下載方法,其特征在于,包括以下步驟(1)開啟數(shù)據(jù)包捕捉線程;(2)打開包含視頻內(nèi)容的鏈接地址,將捕捉到的數(shù)據(jù)包以二進(jìn)制數(shù)據(jù)流的形式緩存到一個(gè)緩存文件中,同時(shí)建立一個(gè)緩存索引文件;(3)根據(jù)緩存索引文件讀取緩存文件,將具有相同會(huì)話端口的所有數(shù)據(jù)包存儲(chǔ)至一個(gè)會(huì)話文件,得到多個(gè)會(huì)話文件,同時(shí)對(duì)每一個(gè)會(huì)話文件建立一個(gè)會(huì)話索引文件;(4)根據(jù)會(huì)話文件的尺寸和該文件中的媒體內(nèi)容開始碼確認(rèn)該會(huì)話文件中是否包含媒體內(nèi)容,刪除不包含媒體內(nèi)容的會(huì)話文件;(5)根據(jù)會(huì)話索引文件依次讀取會(huì)話文件中的數(shù)據(jù)包,根據(jù)數(shù)據(jù)包中的順序號(hào)、確認(rèn)號(hào)去除重傳包、錯(cuò)誤包,然后將確認(rèn)有效的媒體數(shù)據(jù)包排序并存入新建的媒體內(nèi)容文件。
2、 按權(quán)利要求1所述的基于數(shù)據(jù)特征的流媒體內(nèi)容下載方法, 其特征在于,所述步驟(2 )中的緩存索引文件順序記錄所有數(shù)據(jù)包 的長(zhǎng)度。
3、 按權(quán)利要求1所述的基于數(shù)據(jù)特征的流媒體內(nèi)容下載方法, 其特征在于,所述步驟(3 )中的會(huì)話索引文件順序記錄所有數(shù)據(jù)包 的長(zhǎng)度。
4、 按權(quán)利要求1所述的基于數(shù)據(jù)特征的流媒體內(nèi)容下載方法, 其特征在于,所述步驟(5)中,確認(rèn)有效媒體數(shù)據(jù)包的方法如下根據(jù)會(huì)話索引文件依次讀取會(huì)話數(shù)據(jù)包,獲取每個(gè)數(shù)據(jù)包的會(huì)話端口 ,目的端口地址為程序運(yùn)行的機(jī)器MAC地址的數(shù)據(jù)包確認(rèn)為媒體數(shù) 據(jù)包。
5、 按權(quán)利要求1所述的基于數(shù)據(jù)特征的流媒體內(nèi)容下載方法, 其特征在于,所述步驟(5 )中,將確認(rèn)有效的媒體數(shù)據(jù)包存入新建的媒體內(nèi)容文件的方法如下數(shù)據(jù)包確認(rèn)為媒體數(shù)據(jù)包,且確認(rèn)有效后,根據(jù)該數(shù)據(jù)包的順序號(hào)排序,按照排序后的順序,將每個(gè)有效數(shù) 據(jù)包的數(shù)據(jù)長(zhǎng)度、在會(huì)話文件中的偏移位置寫入媒體內(nèi)容索引文件, 最后根據(jù)媒體內(nèi)容索引文件,從會(huì)話文件中再依次讀取所有媒體數(shù)據(jù) 包,并寫入新建的媒體內(nèi)容文件。
6、 按權(quán)利要求1所述的基于數(shù)據(jù)特征的流媒體內(nèi)容下載方法,其特征在于,還包括如下步驟在獲得媒體內(nèi)容文件后,根據(jù)媒體內(nèi) 容開始碼檢測(cè)得到媒體類型,進(jìn)一步刪除該媒體內(nèi)容文件不能解碼的l-口數(shù)據(jù)。
全文摘要
本發(fā)明涉及一種基于數(shù)據(jù)特征的流媒體內(nèi)容下載方法,包括如下步驟開啟數(shù)據(jù)包捕捉線程;打開包含視頻內(nèi)容的鏈接地址,將捕捉到的數(shù)據(jù)包以二進(jìn)制數(shù)據(jù)流的形式緩存到一個(gè)緩存文件中;讀取緩存文件,根據(jù)會(huì)話端口分離出多個(gè)會(huì)話文件;根據(jù)會(huì)話文件的尺寸和該文件中的媒體內(nèi)容開始碼確認(rèn)該會(huì)話文件中是否包含媒體內(nèi)容,刪除不包含媒體內(nèi)容的會(huì)話文件;根據(jù)會(huì)話索引文件依次讀取會(huì)話文件中的數(shù)據(jù)包,根據(jù)數(shù)據(jù)包中的順序號(hào)、確認(rèn)號(hào)去除重傳包、錯(cuò)誤包,然后將確認(rèn)有效的媒體數(shù)據(jù)包排序并存入新建的媒體內(nèi)容文件。本發(fā)明的優(yōu)點(diǎn)是,只需提供包含媒體內(nèi)容的網(wǎng)頁(yè)地址就能夠正確下載需要的媒體內(nèi)容,同時(shí)不會(huì)導(dǎo)致流媒體網(wǎng)站性能降低。
文檔編號(hào)H04L12/56GK101155122SQ20061011357
公開日2008年4月2日 申請(qǐng)日期2006年9月30日 優(yōu)先權(quán)日2006年9月30日
發(fā)明者張冬明, 張勇東, 李錦濤, 郭俊波 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所