亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種HTML5標(biāo)準(zhǔn)下基于Webkit內(nèi)核的視頻地址提取方法

文檔序號(hào):7769962閱讀:229來(lái)源:國(guó)知局
一種HTML5標(biāo)準(zhǔn)下基于Webkit內(nèi)核的視頻地址提取方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種HTML5標(biāo)準(zhǔn)下基于Webkit內(nèi)核的視頻地址提取方法,屬于網(wǎng)絡(luò)通信和多媒體信息處理【技術(shù)領(lǐng)域】。該方法主要通過(guò)Webkit內(nèi)核瀏覽器解析視頻網(wǎng)站,從瀏覽器對(duì)網(wǎng)頁(yè)分析的流程中提取網(wǎng)絡(luò)視頻的真實(shí)地址,通過(guò)InjectedBundle接口,控制網(wǎng)頁(yè)解析的流程,屏蔽與網(wǎng)絡(luò)視頻無(wú)關(guān)的網(wǎng)絡(luò)請(qǐng)求,從簡(jiǎn)化的流程中得到視頻地址。相應(yīng)程序包括三個(gè)部分:一、與Webkit解析網(wǎng)頁(yè)流程進(jìn)行通信并對(duì)其控制的功能庫(kù);二、面向頂層應(yīng)用的接口,負(fù)責(zé)與應(yīng)用程序進(jìn)行通信;三、相應(yīng)的數(shù)據(jù)結(jié)構(gòu),用來(lái)維護(hù)和控制視頻地址提取功能庫(kù)的網(wǎng)址數(shù)據(jù)和運(yùn)行過(guò)程。由于瀏覽器解析視頻網(wǎng)站的過(guò)程是通用的,用戶(hù)可以通過(guò)該功能對(duì)各大視頻網(wǎng)站的視頻網(wǎng)址進(jìn)行解析,獲取視頻的真實(shí)地址。
【專(zhuān)利說(shuō)明】—種HTML5標(biāo)準(zhǔn)下基于Webkit內(nèi)核的視頻地址提取方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于網(wǎng)絡(luò)通信和多媒體信息處理領(lǐng)域,具體涉及Webkit (—個(gè)開(kāi)源的瀏覽器引擎)瀏覽器內(nèi)核(蘋(píng)果ios的內(nèi)置瀏覽器Safar1、Android的內(nèi)置瀏覽器Google Chrome等均采用Webkit瀏覽器內(nèi)核)及其InjectedBundle接口(Webkit提供的類(lèi)似于插件的、單獨(dú)編譯成的一個(gè)動(dòng)態(tài)庫(kù),運(yùn)行在內(nèi)核進(jìn)程,用于提供對(duì)內(nèi)核數(shù)據(jù)的操作)的視頻真實(shí)地址提取方法。
【背景技術(shù)】
[0002]目前不論網(wǎng)絡(luò)中視頻的數(shù)量還是視頻網(wǎng)站的數(shù)量都飛速增加,每天有不計(jì)其數(shù)的視頻上傳到各大視頻網(wǎng)站,并不斷有新的視頻網(wǎng)站出現(xiàn)。同時(shí)人們對(duì)視頻的需求也在與日俱增,除了對(duì)內(nèi)容的需求,對(duì)視頻播放方式的需求也在不斷的變化,目前大部分移動(dòng)設(shè)備都已支持視頻的播放。
[0003]除了在網(wǎng)絡(luò)上在線(xiàn)觀看視頻,許多人還需要把視頻從網(wǎng)絡(luò)上下載下來(lái)以備多次反復(fù)觀看、欣賞或者收藏。而目前的視頻網(wǎng)站種類(lèi)繁多,有些網(wǎng)站提供視頻下載服務(wù),但是有些網(wǎng)站不提供視頻下載服務(wù),給用戶(hù)帶來(lái)了不便。在觀看視頻網(wǎng)頁(yè)中的視頻時(shí),除了在視頻原始地址中可以進(jìn)行觀看,該網(wǎng)頁(yè)中的視頻還對(duì)應(yīng)這一個(gè)服務(wù)器存放的地址,由視頻原始地址進(jìn)行調(diào)用和播放,該視頻地址在本發(fā)明中稱(chēng)為視頻的真實(shí)地址,利用視頻的真實(shí)地址可單獨(dú)調(diào)用視頻進(jìn)行播放,方便用戶(hù)對(duì)視頻進(jìn)行收藏與分享。針對(duì)視頻網(wǎng)站的這個(gè)特點(diǎn),網(wǎng)絡(luò)上還有一些專(zhuān)門(mén)用于轉(zhuǎn)換視頻原始地址和視頻真實(shí)地址的網(wǎng)站。但是因?yàn)橐曨l網(wǎng)站的數(shù)量很多,每個(gè)網(wǎng)站都有自己的視頻原始地址和視頻真實(shí)地址之間的計(jì)算方法,這些網(wǎng)站難以覆蓋所有的視頻網(wǎng)站。并且由于視頻網(wǎng)站為了避免被網(wǎng)絡(luò)爬蟲(chóng)等工具獲取視頻資源,會(huì)不斷更新視頻原始地址和視頻真實(shí)地址之間的轉(zhuǎn)換算法,轉(zhuǎn)換地址的網(wǎng)站有時(shí)會(huì)跟不上視頻網(wǎng)站的更新速度,導(dǎo)致用戶(hù)無(wú)法及時(shí)得到視頻真實(shí)地址,影響了用戶(hù)對(duì)視頻正常的分享及收藏等行為。同時(shí),由于新一代HTML標(biāo)準(zhǔn)HTML5的誕生,視頻網(wǎng)站對(duì)視頻的支持將向HTML5標(biāo)準(zhǔn)發(fā)展。在HTML5標(biāo)準(zhǔn)中,與傳統(tǒng)的網(wǎng)頁(yè)視頻播放不同,網(wǎng)絡(luò)視頻多以流媒體的方式加載,解析視頻地址的方式也需要適應(yīng)新的標(biāo)準(zhǔn)。
[0004]所以,目前還缺乏一種通用的方法來(lái)提供視頻原始地址和視頻真實(shí)播放地址之間轉(zhuǎn)換的通用方法。

【發(fā)明內(nèi)容】

[0005]本發(fā)明設(shè)計(jì)了一種HTML5標(biāo)準(zhǔn)下基于Webkit內(nèi)核的視頻地址提取方法,利用瀏覽器解析網(wǎng)絡(luò)視頻的通用流程提供了一種輸入網(wǎng)絡(luò)視頻地址,輸出視頻真實(shí)地址的方法,滿(mǎn)足人們對(duì)下載欣賞各類(lèi)網(wǎng)絡(luò)視頻的需要,解決了目前缺乏通用的提取視頻真實(shí)地址方法這一缺陷。該功能庫(kù)不受限于不同網(wǎng)站的不同算法以及網(wǎng)站對(duì)地址算法的改變,并且由于采用了開(kāi)源瀏覽器內(nèi)核,具有良好的拓展性和可移植性。
[0006]為了實(shí)現(xiàn)上述目的,本發(fā)明的功能庫(kù)實(shí)施例提供了基于Webkit內(nèi)核的視頻真實(shí)地址提取方法,包括以下步驟:步驟一:從頂層應(yīng)用程序傳入視頻原始地址;驟二:通過(guò)InjectedBundle接口控制Webkit瀏覽器內(nèi)核載入視頻原始地址;篩選需要的地址并得到視頻真實(shí)地址;篩選時(shí)根據(jù)用戶(hù)傳入的視頻網(wǎng)站屬性,判斷用戶(hù)傳入的視頻屬于哪個(gè)視頻網(wǎng)站,根據(jù)不同的視頻網(wǎng)站啟用不同的視頻地址判斷機(jī)制;該判斷機(jī)制是基于視頻真實(shí)地址的一般結(jié)構(gòu)進(jìn)行判斷,將符合該結(jié)構(gòu)的地址定義為視頻真實(shí)地址;步驟四:利用消息機(jī)制把視頻真實(shí)地址發(fā)送到應(yīng)用程序。
[0007]優(yōu)選地,視頻真實(shí)地址會(huì)存入相應(yīng)的數(shù)據(jù)結(jié)構(gòu),用戶(hù)輸入的網(wǎng)址和數(shù)據(jù)結(jié)構(gòu)一一對(duì)應(yīng);所述網(wǎng)址數(shù)據(jù)結(jié)構(gòu)包括但不限于以下內(nèi)容:(2.1)用戶(hù)傳入的網(wǎng)址字符數(shù)據(jù);(2.2)用戶(hù)傳入的網(wǎng)址所屬的視頻網(wǎng)站;(2.3)與用戶(hù)傳入網(wǎng)址相對(duì)應(yīng)的視頻真實(shí)地址網(wǎng)址字符數(shù)據(jù)。
[0008]其工作過(guò)程通過(guò)如下接口函數(shù)控制:createView和goToURL ;其中createView接口用于初始化InjectedBundle并創(chuàng)建Webkit的view對(duì)象;goToURL接口用于加載用戶(hù)傳入的視頻原始地址。
[0009]所述步驟一中通過(guò)InjectedBundle接口控制Webkit瀏覽器內(nèi)核載入視頻原始地址包括如下步驟:將視頻地址所屬的視頻網(wǎng)站記錄在host屬性中,并通過(guò)InjectedBundle的消息機(jī)制傳入到Webkit中,并調(diào)用Webkit內(nèi)核開(kāi)始加載用戶(hù)傳入的視頻原始地址。
[0010]所述步驟三中篩選需要的地址并得到視頻真實(shí)地址包括如下步驟:在Webkit加載網(wǎng)頁(yè)時(shí),每次Webkit準(zhǔn)備發(fā)送請(qǐng)求前實(shí)現(xiàn)回調(diào)函數(shù),監(jiān)視每個(gè)請(qǐng)求的地址,并通過(guò)地址和對(duì)應(yīng)文件的類(lèi)型來(lái)判斷是否屬于請(qǐng)求視頻真實(shí)地址所必要的請(qǐng)求,并且屏蔽不必要的請(qǐng)求。
[0011]所述步驟四中利用消息機(jī)制把視頻真實(shí)地址發(fā)送到應(yīng)用程序包括如下步驟:每次發(fā)送請(qǐng)求時(shí)請(qǐng)求的網(wǎng)絡(luò)地址都要經(jīng)過(guò)篩選,并把符合規(guī)則的視頻地址提取出來(lái)保存在一個(gè)數(shù)組當(dāng)中,在網(wǎng)頁(yè)加載完畢時(shí)實(shí)現(xiàn)回調(diào),將數(shù)組中最符合視頻真實(shí)地址的地址作為消息的內(nèi)容通過(guò)InjectedBundle的消息機(jī)制傳遞到與頂層應(yīng)用程序交互的功能庫(kù)中,再由此功能庫(kù)傳遞給頂層的應(yīng)用程序。
[0012]當(dāng)用戶(hù)傳入一個(gè)視頻地址時(shí),相應(yīng)的數(shù)據(jù)結(jié)構(gòu)進(jìn)入等待解析的狀態(tài),并檢查目前功能庫(kù)是否正在解析其他的視頻網(wǎng)址,若有正在解析的視頻網(wǎng)址,則將上一個(gè)正在解析的網(wǎng)址的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)入中止解析的狀態(tài),并載入下一個(gè)數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)的視頻地址,同時(shí)將該數(shù)據(jù)結(jié)構(gòu)的狀態(tài)改為正在解析的狀態(tài);當(dāng)成功提取了視頻真實(shí)地址時(shí),視頻真實(shí)地址會(huì)存入相應(yīng)的數(shù)據(jù)結(jié)構(gòu)并將該數(shù)據(jù)結(jié)構(gòu)的狀態(tài)改為解析成功,若因?yàn)榫W(wǎng)絡(luò)或其他原因無(wú)法提取相應(yīng)地址,則將該數(shù)據(jù)結(jié)構(gòu)的狀態(tài)改為解析失敗,同時(shí)等待新一個(gè)請(qǐng)求的到來(lái)。
[0013]與頂層應(yīng)用程序交互的通用接口 createView接口的流程為:首先創(chuàng)建InjectedBundle的context對(duì)象,利用該context對(duì)象和從createView形參中傳入的窗口句柄創(chuàng)建一個(gè)與Webkit綁定的view對(duì)象,同時(shí)注冊(cè)與InjectedBundle進(jìn)行通信的消息機(jī)制。
[0014]與頂層應(yīng)用程序交互的通用接口 goToURL接口的流程為:為用戶(hù)傳入的視頻原始地址創(chuàng)建一個(gè)WKURLRef對(duì)象,WKURLRef為Webkit中定義的類(lèi)型;再根據(jù)調(diào)用createView時(shí)創(chuàng)建的view對(duì)象獲取Webkit中的page對(duì)象,并將page對(duì)象和用戶(hù)傳入的地址一起傳Affebkit中,開(kāi)始加載相應(yīng)的網(wǎng)址。[0015]判斷是否屬于請(qǐng)求視頻真實(shí)地址所必要的請(qǐng)求并且屏蔽不必要的請(qǐng)求的流程為:根據(jù)某一個(gè)視頻網(wǎng)站加載視頻的流程,通過(guò)文字解析發(fā)送網(wǎng)絡(luò)請(qǐng)求地址的方式,尋找網(wǎng)絡(luò)地址中是否有與視頻加載流程相關(guān)的關(guān)鍵字,從而判斷發(fā)送的網(wǎng)絡(luò)請(qǐng)求地址是否與請(qǐng)求視頻真實(shí)地址有關(guān),若發(fā)起的網(wǎng)絡(luò)請(qǐng)求為請(qǐng)求視頻真實(shí)地址的關(guān)鍵請(qǐng)求,則保留該請(qǐng)求的內(nèi)容;若為與請(qǐng)求視頻真實(shí)地址無(wú)關(guān)的請(qǐng)求,則將該次請(qǐng)求置為空,從而屏蔽該請(qǐng)求。
[0016]本發(fā)明用到了開(kāi)源瀏覽器內(nèi)核Webkit及其InjectedBundle接口。Webkit是一個(gè)開(kāi)源的瀏覽器引擎,蘋(píng)果的Safar1、谷歌的Chrome瀏覽器都是基于這個(gè)框架來(lái)開(kāi)發(fā)的。Webkit瀏覽器的優(yōu)勢(shì)是高效穩(wěn)定,兼容性好,并且Webkit的源碼結(jié)構(gòu)清晰,易于維護(hù)。目前大部分的網(wǎng)站,包括各類(lèi)視頻網(wǎng)站,都已經(jīng)兼容Webkit內(nèi)核瀏覽器,可以在以Webkit為框架的瀏覽器中順利播放視頻。同時(shí),除了 PC端,Webkit內(nèi)核還被廣泛利用于各類(lèi)移動(dòng)平臺(tái)的瀏覽器中,使得利用Webkit為框架開(kāi)發(fā)的功能庫(kù)具有很強(qiáng)的移植性,可適用于各個(gè)平臺(tái)。InjectedBundle是由Webkit提供的用于操作內(nèi)核數(shù)據(jù)的接口,類(lèi)似于一個(gè)插件,單獨(dú)編譯成一個(gè)動(dòng)態(tài)庫(kù)。在Webkit的代碼中,InjectedBundle在執(zhí)行加載網(wǎng)頁(yè)時(shí)的關(guān)鍵步驟代碼部分插入了回調(diào)函數(shù),關(guān)鍵步驟例如創(chuàng)建page,發(fā)送請(qǐng)求和加載網(wǎng)頁(yè)完成等等,相應(yīng)的回調(diào)函數(shù)可由用戶(hù)自己編寫(xiě)InjectedBundle來(lái)實(shí)現(xiàn)。
[0017]本發(fā)明的優(yōu)勢(shì)在于:
[0018]1.根據(jù)瀏覽器解析視頻網(wǎng)頁(yè)的通用過(guò)程提取視頻真實(shí)地址,無(wú)需具體研究不同視頻網(wǎng)站對(duì)視頻地址的具體算法,只需要用到視頻原始地址和視頻真實(shí)地址各自的基本地址結(jié)構(gòu);因?yàn)榫W(wǎng)站的視頻原始地址到視頻真實(shí)地址的轉(zhuǎn)換算法會(huì)時(shí)常發(fā)生改變,但視頻原始地址和視頻真實(shí)地址各自的基本地址結(jié)構(gòu)不會(huì)發(fā)生變化;因此,即使網(wǎng)站更新了視頻原始地址和視頻真實(shí)地址之間的轉(zhuǎn)換算法,用戶(hù)也可以及時(shí)得到視頻真實(shí)地址。
[0019]2.即使視頻網(wǎng)站改變了計(jì)算視頻真實(shí)地址的算法,解析流程仍然符合瀏覽器解析網(wǎng)絡(luò)視頻的通用流程,所以該方法具有通用性;
[0020]3.本方法通過(guò)將與視頻無(wú)關(guān)的資源請(qǐng)求進(jìn)行了屏蔽,簡(jiǎn)化了 Webkit內(nèi)核在加載視頻時(shí)的步驟和所需要的時(shí)間,在一定程度上加速了視頻的載入。
【專(zhuān)利附圖】

【附圖說(shuō)明】
[0021]圖1是本發(fā)明一種HTML5標(biāo)準(zhǔn)下基于Webkit內(nèi)核的視頻地址提取功能庫(kù)的結(jié)構(gòu)示意圖;
[0022]圖2是本發(fā)明與應(yīng)用程序之間的交互過(guò)程示意圖;
[0023]圖3是本發(fā)明一種HTML5標(biāo)準(zhǔn)下基于Webkit內(nèi)核的視頻地址提取功能庫(kù)的工作流程示意圖。
【具體實(shí)施方式】
[0024]本發(fā)明實(shí)施例是以庫(kù)文件形式為程序提供功能,例如Windows系統(tǒng)中的動(dòng)態(tài)鏈接庫(kù)dll文件和Android系統(tǒng)下的動(dòng)態(tài)鏈接庫(kù)so文件。該功能庫(kù)不受限于不同網(wǎng)站的不同算法以及網(wǎng)站對(duì)地址算法的改變,并且由于采用了開(kāi)源瀏覽器內(nèi)核,具有良好的拓展性和可移植性。
[0025]動(dòng)態(tài)鏈接庫(kù)與普通程序之間的區(qū)別在于動(dòng)態(tài)鏈接庫(kù)向應(yīng)用程序暴露了一定的接口,應(yīng)用程序通過(guò)調(diào)用動(dòng)態(tài)鏈接庫(kù)提供的接口可實(shí)現(xiàn)動(dòng)態(tài)鏈接庫(kù)提供的功能。
[0026]更具體地,本發(fā)明提供的下述實(shí)施例是在Windows平臺(tái)下實(shí)現(xiàn)的基于Webkit內(nèi)核的視頻地址提取功能庫(kù),并且將功能庫(kù)封裝為dll形式的動(dòng)態(tài)鏈接庫(kù)。在調(diào)用時(shí),利用Windows的動(dòng)態(tài)調(diào)用方式調(diào)用功能庫(kù)中的接口,輸入視頻原始地址,等待功能庫(kù)解析網(wǎng)頁(yè),解析完成后將視頻真實(shí)地址以消息的方式回傳給應(yīng)用程序。
[0027]該方法包括如下步驟:
[0028]初始化過(guò)程:
[0029]1.頂層應(yīng)用程序初始化窗口和消息循環(huán);
[0030]2.頂層應(yīng)用程序動(dòng)態(tài)調(diào)用本發(fā)明實(shí)施例的功能庫(kù);
[0031]3.頂層應(yīng)用程序調(diào)用功能庫(kù)中的createView接口,并將窗口的句柄作為參數(shù)傳A ;
[0032]4.createView 接 口利用 InjectedBundle 創(chuàng)建 context 對(duì)象;
[0033]5.根據(jù)傳入的窗口句柄和創(chuàng)建的context對(duì)象創(chuàng)建Webkit的view對(duì)象;
[0034]6.注冊(cè)InjectedBundle的收發(fā)消息機(jī)制。
[0035]提取視頻真實(shí)地址過(guò)程:
[0036]1.調(diào)用功能庫(kù)中的goToURL接口,將用戶(hù)需要下載的視頻的原始地址和視頻地址所屬的視頻網(wǎng)站作為參數(shù)傳入;
[0037]2.檢測(cè)目前功能庫(kù)的運(yùn)行狀態(tài),若正在解析其他網(wǎng)頁(yè),則停止加載過(guò)程,加載;
[0038]3.利用用戶(hù)傳入的視頻原始地址創(chuàng)建Webkit的WKURLRef對(duì)象;
[0039]4.根據(jù)view對(duì)象得到Webkit的page對(duì)象;
[0040]5.Page對(duì)象創(chuàng)建完之后注冊(cè)Webkit發(fā)送請(qǐng)求時(shí)的回調(diào)函數(shù)wiIISendRequestForFrame 和 frame 加載完成時(shí)的回調(diào)函數(shù) didFinishLoadForFrame ;
[0041]6.根據(jù)用戶(hù)傳入的視頻網(wǎng)站屬性,判斷用戶(hù)傳入的視頻屬于哪個(gè)視頻網(wǎng)站,根據(jù)不同的視頻網(wǎng)站啟用不同的視頻地址判斷機(jī)制;該判斷機(jī)制是基于視頻真實(shí)地址的一般結(jié)構(gòu)進(jìn)行判斷,方法中將符合該結(jié)構(gòu)的地址定義為視頻真實(shí)地址,網(wǎng)站的視頻原始地址到視頻真實(shí)地址的轉(zhuǎn)換算法會(huì)時(shí)常發(fā)生改變,但視頻原始地址和視頻真實(shí)地址各自的基本地址結(jié)構(gòu)不會(huì)發(fā)生變化;
[0042]7.調(diào)用Webkit的加載網(wǎng)頁(yè)接口 WKPageLoadURL,將WKURLRef對(duì)象和page對(duì)象作為參數(shù)傳入,Webkit開(kāi)始加載網(wǎng)頁(yè);
[0043]8.加載網(wǎng)頁(yè)過(guò)程中Webkit每發(fā)送一次網(wǎng)絡(luò)請(qǐng)求都觸發(fā)一次發(fā)送請(qǐng)求的回調(diào)函數(shù)willSendRequestForFrame,將要發(fā)送的網(wǎng)絡(luò)請(qǐng)求被傳入回調(diào)函數(shù)中,函數(shù)對(duì)網(wǎng)絡(luò)請(qǐng)求的目標(biāo)地址進(jìn)行文字解析,判斷是否為請(qǐng)求視頻的關(guān)鍵請(qǐng)求。若該網(wǎng)絡(luò)請(qǐng)求是請(qǐng)求視頻真實(shí)地址必要的,則保留原請(qǐng)求;若是其他與視頻無(wú)關(guān)資源的請(qǐng)求,則返回空請(qǐng)求。如果加載網(wǎng)頁(yè)中出現(xiàn)異常狀況,例如網(wǎng)頁(yè)無(wú)法打開(kāi),功能庫(kù)會(huì)停止加載,將地址數(shù)據(jù)結(jié)構(gòu)的狀態(tài)設(shè)置為解析失敗,同時(shí)向應(yīng)用程序拋出異常信息。
[0044]9.通過(guò)文字解析,將符合解析要求的網(wǎng)絡(luò)請(qǐng)求地址作為視頻真實(shí)地址的可能址保存在數(shù)組中;
[0045]10.當(dāng)網(wǎng)頁(yè)有frame加載完成時(shí),會(huì)觸發(fā)didFinishLoadForFrame回調(diào)函數(shù),在函數(shù)中判斷是否是主frame加載完成。若是不是主frame,則不作任何處理,繼續(xù)加載網(wǎng)頁(yè);若是主frame,則判斷為網(wǎng)頁(yè)完成加載,將數(shù)組中保存的所有符合規(guī)則的地址逐個(gè)比較,找出最合適的地址作為視頻的真實(shí)地址;(所謂合適,其判斷機(jī)制是基于視頻真實(shí)地址的一般結(jié)構(gòu)進(jìn)行判斷,方法中將符合該結(jié)構(gòu)的地址定義為最合適的地址,即視頻真實(shí)地址);
[0046]11.將賦入了視頻真實(shí)地址的地址數(shù)據(jù)結(jié)構(gòu)作為消息主體,將消息通過(guò)InjectedBundle消息機(jī)制發(fā)送到負(fù)責(zé)與頂層應(yīng)用程序通信的功能庫(kù)中;還將視頻真實(shí)地址會(huì)存入相應(yīng)的數(shù)據(jù)結(jié)構(gòu),用戶(hù)輸入的網(wǎng)址和數(shù)據(jù)結(jié)構(gòu)一一對(duì)應(yīng);
[0047]所述網(wǎng)址數(shù)據(jù)結(jié)構(gòu)包括但不限于以下內(nèi)容:
[0048](2.1)用戶(hù)傳入的網(wǎng)址字符數(shù)據(jù);
[0049]( 2.2 )用戶(hù)傳入的網(wǎng)址所屬的視頻網(wǎng)站;
[0050](2.3)與用戶(hù)傳入網(wǎng)址相對(duì)于的視頻真實(shí)地址網(wǎng)址字符數(shù)據(jù)。
[0051]所述等待解析、正在解析、中止解析、解析成功、解析失敗的狀態(tài)按如下方式確定:當(dāng)用戶(hù)傳入一個(gè)視頻地址時(shí),相應(yīng)的數(shù)據(jù)結(jié)構(gòu)進(jìn)入等待解析的狀態(tài),并檢查目前功能庫(kù)是否正在解析其他的視頻網(wǎng)址,若有正在解析的視頻網(wǎng)址,則將上一個(gè)正在解析的網(wǎng)址的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)入中止解析的狀態(tài),并載入下一個(gè)數(shù)據(jù)結(jié)構(gòu)對(duì)應(yīng)的視頻地址,同時(shí)將該數(shù)據(jù)結(jié)構(gòu)的狀態(tài)改為正在解析的狀態(tài);當(dāng)成功提取了視頻真實(shí)地址時(shí),視頻真實(shí)地址會(huì)存入相應(yīng)的數(shù)據(jù)結(jié)構(gòu)并將該數(shù)據(jù)結(jié)構(gòu)的狀態(tài)改為解析成功,若因?yàn)榫W(wǎng)絡(luò)或其他原因無(wú)法提取相應(yīng)地址,則將該數(shù)據(jù)結(jié)構(gòu)的狀態(tài)改為解析失敗,同時(shí)等待新一個(gè)請(qǐng)求的到來(lái)。
[0052]12.負(fù)責(zé)與頂層通信的功能庫(kù)將地址通過(guò)系統(tǒng)消息的形式發(fā)送給應(yīng)用程序,應(yīng)用程序得到了視頻的真實(shí)地址,可進(jìn)行下一步處理。
[0053]圖1是本發(fā)明提供的實(shí)施例結(jié)構(gòu)示意圖,101為網(wǎng)絡(luò)中各主流視頻網(wǎng)站的網(wǎng)絡(luò)視頻服務(wù)器,在實(shí)際應(yīng)用當(dāng)中,視頻網(wǎng)站可以是:優(yōu)酷、土豆、56視頻、樂(lè)視、新浪、搜狐等主流視頻網(wǎng)站。
[0054]102是開(kāi)源瀏覽器內(nèi)核Webkit的核心功能庫(kù),本實(shí)施例中,由于采用的平臺(tái)是Windows系統(tǒng),所以使用Webkit源代碼在Windows環(huán)境下編譯生成的Webkit.dll和JavascriptCore.dll等核心庫(kù)作為Webkit部分的功能庫(kù)。
[0055]103是本發(fā)明實(shí)現(xiàn)的功能庫(kù),連接了應(yīng)用程序和Webkit,為用戶(hù)從網(wǎng)絡(luò)視頻的原始地址中獲取視頻的真實(shí)地址提供了便利的方式。
[0056]104是需要調(diào)用視頻真實(shí)地址的應(yīng)用程序,例如應(yīng)用程序?qū)⒁曨l原始地址傳入功能庫(kù)中,等待功能庫(kù)返回視頻真實(shí)地址,由相應(yīng)的播放器直接打開(kāi)播放或者下載軟件進(jìn)行下載。
[0057]105是Webkit中為操作內(nèi)核數(shù)據(jù)提供的InjectedBundle接口,用于本發(fā)明實(shí)現(xiàn)的功能庫(kù)與Webkit核心功能庫(kù)之間的交互。
[0058]以圖1為例,進(jìn)一步描述基于Webkit內(nèi)核的視頻地址提取功能庫(kù)的實(shí)現(xiàn)方法。
[0059]用戶(hù)啟動(dòng)調(diào)用本發(fā)明功能庫(kù)的應(yīng)用程序,應(yīng)用程序隨即調(diào)用地址提取功能庫(kù)的初始化函數(shù),完成地址提取功能庫(kù)的初始化過(guò)程。初始化代碼片段如下所示:
[0060]
【權(quán)利要求】
1.一種HTML5標(biāo)準(zhǔn)下基于Webkit內(nèi)核的視頻地址提取方法,其特征在于,包括以下步驟: 步驟一:從頂層應(yīng)用程序傳入視頻原始地址; 步驟二:通過(guò)InjectedBundle接口控制Webkit瀏覽器內(nèi)核載入視頻原始地址; 步驟三:篩選需要的地址并得到視頻真實(shí)地址;篩選時(shí)根據(jù)用戶(hù)傳入的視頻網(wǎng)站屬性,判斷用戶(hù)傳入的視頻屬于哪個(gè)視頻網(wǎng)站,根據(jù)不同的視頻網(wǎng)站啟用不同的視頻地址判斷機(jī)制;該判斷機(jī)制是基于視頻真實(shí)地址的一般結(jié)構(gòu)進(jìn)行判斷,將符合該結(jié)構(gòu)的地址定義為視頻真實(shí)地址; 步驟四:利用消息機(jī)制把視頻真實(shí)地址發(fā)送到應(yīng)用程序。
2.如權(quán)利要求1所述的視頻地址提取方法,其特征在于:視頻真實(shí)地址會(huì)存入相應(yīng)的數(shù)據(jù)結(jié)構(gòu),用戶(hù)輸入的網(wǎng)址和數(shù)據(jù)結(jié)構(gòu)一一對(duì)應(yīng); 所述網(wǎng)址數(shù)據(jù)結(jié)構(gòu)包括但不限于以下內(nèi)容: (2.1)用戶(hù)傳入的網(wǎng)址字符數(shù)據(jù); (2.2)用戶(hù)傳入的網(wǎng)址所屬的視頻網(wǎng)站; (2.3)與用戶(hù)傳入網(wǎng)址相對(duì)應(yīng)的視頻真實(shí)地址網(wǎng)址字符數(shù)據(jù)。
3.如權(quán)利要求1所述的視頻地址提取方法,其特征在于:其工作過(guò)程通過(guò)如下接口函數(shù)控制:createView和goToURL ;其中createView接口用于初始化InjectedBundle并創(chuàng)建Webkit的view對(duì)象;goToURL接口用于加載用戶(hù)傳入的視頻原始地址。
4.如權(quán)利要求1所述的視頻地址提取方法,其特征在于:所述步驟二中通過(guò)InjectedBundle接口控制Webkit瀏覽器內(nèi)核載入視頻原始地址包括如下步驟:將視頻地址所屬的視頻網(wǎng)站記錄在host屬性中,并通過(guò)InjectedBundle的消息機(jī)制傳入到Webkit中,并調(diào)用Webkit內(nèi)核開(kāi)始加載用戶(hù)傳入的視頻原始地址。
5.如權(quán)利要求1所述的視頻地址提取方法,其特征在于:所述步驟三中篩選需要的地址并得到視頻真實(shí)地址包括如下步驟:在Webkit加載網(wǎng)頁(yè)時(shí),每次Webkit準(zhǔn)備發(fā)送請(qǐng)求前實(shí)現(xiàn)回調(diào)函數(shù),監(jiān)視每個(gè)請(qǐng)求的地址,并通過(guò)地址和對(duì)應(yīng)文件的類(lèi)型來(lái)判斷是否屬于請(qǐng)求視頻真實(shí)地址所必要的請(qǐng)求,并且屏蔽不必要的請(qǐng)求。
6.如權(quán)利要求1所述的視頻地址提取方法,其特征在于:所述步驟四中利用消息機(jī)制把視頻真實(shí)地址發(fā)送到應(yīng)用程序包括如下步驟:每次發(fā)送請(qǐng)求時(shí)請(qǐng)求的網(wǎng)絡(luò)地址都要經(jīng)過(guò)篩選,并把符合規(guī)則的視頻地址提取出來(lái)保存在一個(gè)數(shù)組當(dāng)中,在網(wǎng)頁(yè)加載完畢時(shí)實(shí)現(xiàn)回調(diào),將數(shù)組中最符合視頻真實(shí)地址的地址作為消息的內(nèi)容通過(guò)InjectedBundle的消息機(jī)制傳遞到與頂層應(yīng)用程序交互的功能庫(kù)中,再由此功能庫(kù)傳遞給頂層的應(yīng)用程序。
7.如權(quán)利要求3所述的視頻地址提取方法,其特征是:與頂層應(yīng)用程序交互的通用接口 createView接口的流程為:首先創(chuàng)建InjectedBundle的context對(duì)象,利用該context對(duì)象和從createView形參中傳入的窗口句柄創(chuàng)建一個(gè)與Webkit綁定的view對(duì)象,同時(shí)注冊(cè)與InjectedBundle進(jìn)行通信的消息機(jī)制。
8.如權(quán)利要求3所述的視頻地址提取方法,其特征是:與頂層應(yīng)用程序交互的通用接口 goToURL接口的流程為:為用戶(hù)傳入的視頻原始地址創(chuàng)建一個(gè)WKURLRef對(duì)象,WKURLRef為Webkit中定義的類(lèi)型;再根據(jù)調(diào)用createView時(shí)創(chuàng)建的view對(duì)象獲取Webkit中的page對(duì)象,并將page對(duì)象和用戶(hù)傳入的地址一起傳入Webkit中,開(kāi)始加載相應(yīng)的網(wǎng)址。
9.如權(quán)利要求5所述的視頻地址提取方法,其特征是:判斷是否屬于請(qǐng)求視頻真實(shí)地址所必要的請(qǐng)求并且屏蔽不必要的請(qǐng)求的流程為:根據(jù)某一個(gè)視頻網(wǎng)站加載視頻的流程,通過(guò)文字解析發(fā)送網(wǎng)絡(luò)請(qǐng)求地址的方式,尋找網(wǎng)絡(luò)地址中是否有與視頻加載流程相關(guān)的關(guān)鍵字,從而判斷發(fā)送的網(wǎng)絡(luò)請(qǐng)求地址是否與請(qǐng)求視頻真實(shí)地址有關(guān),若發(fā)起的網(wǎng)絡(luò)請(qǐng)求為請(qǐng)求視頻真實(shí)地址的關(guān)鍵請(qǐng)求,則保留該請(qǐng)求的內(nèi)容;若為與請(qǐng)求視頻真實(shí)地址無(wú)關(guān)的請(qǐng)求,則將該次請(qǐng)求置為空, 從而屏蔽該請(qǐng)求。
【文檔編號(hào)】H04L29/12GK103458065SQ201310411248
【公開(kāi)日】2013年12月18日 申請(qǐng)日期:2013年9月10日 優(yōu)先權(quán)日:2013年9月10日
【發(fā)明者】胡勇, 劉睿, 陳鵬, 袁鑫, 韋唯 申請(qǐng)人:深圳市佳創(chuàng)視訊技術(shù)股份有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1