国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      直播流數(shù)據(jù)處理方法及裝置與流程

      文檔序號:11327571閱讀:249來源:國知局
      直播流數(shù)據(jù)處理方法及裝置與流程

      本申請屬于計算機技術(shù)領(lǐng)域,具體地說,涉及一種直播流數(shù)據(jù)處理方法及裝置。



      背景技術(shù):

      在網(wǎng)絡(luò)直播應(yīng)用中,直播客戶端可以從服務(wù)器端獲取直播流數(shù)據(jù)并播放,用戶通過直播客戶端可以觀看直播流數(shù)據(jù),直播流數(shù)據(jù)可以是視頻、音頻等多媒體數(shù)據(jù)。而為了方便直播結(jié)束之后也可以觀看直播流數(shù)據(jù),可以將直播流數(shù)據(jù)進行保存,從而可以在直播結(jié)束之后隨時觀看直播流數(shù)據(jù)。

      現(xiàn)有技術(shù)中,直播客戶端接收到用戶觸發(fā)的直播觀看請求之后,會打開對應(yīng)的直播網(wǎng)頁,直播客戶端中的內(nèi)核組件解析該直播網(wǎng)頁并向服務(wù)端發(fā)送數(shù)據(jù)獲取請求,請求與服務(wù)端建立數(shù)據(jù)通道以獲取直播流數(shù)據(jù)并展示。若直播客戶端接收到數(shù)據(jù)保存請求,直播客戶端會通過請求與服務(wù)端建立一條新的數(shù)據(jù)通路,通過該新建立的數(shù)據(jù)通路獲取直播流數(shù)據(jù)并保存。

      由以上描述可知,由于現(xiàn)有技術(shù)需要建立新的數(shù)據(jù)通道以獲取需要保存的直播流數(shù)據(jù),導(dǎo)致占用較多帶寬,增加通信負擔(dān),影響直播觀看效果。



      技術(shù)實現(xiàn)要素:

      有鑒于此,本申請主要針對直播流數(shù)據(jù)處理方法進行了研究,以解決直播客戶端在下載直播流數(shù)據(jù)時,帶寬占用較多的問題。

      為了解決上述技術(shù)問題,本申請?zhí)峁┝艘环N直播流數(shù)據(jù)處理方法,該方法包括:

      攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求;

      根據(jù)所述第一數(shù)據(jù)獲取請求,生成第二數(shù)據(jù)獲取請求并發(fā)送至服務(wù)端;所述第一數(shù)據(jù)獲取請求中與所述第二數(shù)據(jù)獲取請求中的接收地址不同;

      獲取所述服務(wù)端提供的直播流數(shù)據(jù);

      根據(jù)所述直播流數(shù)據(jù),獲得數(shù)據(jù)相同的第一路數(shù)據(jù)和第二路數(shù)據(jù);

      將所述第一路數(shù)據(jù)返回至所述內(nèi)核組件;

      接收到直播流數(shù)據(jù)保存請求時,保存所述第二路數(shù)據(jù)。

      優(yōu)選地,所述攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求包括:

      調(diào)用內(nèi)核接口攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求。

      優(yōu)選地,所述第二路數(shù)據(jù)包括多個標(biāo)簽文件;所述接收到直播流數(shù)據(jù)保存請求時,保存所述第二路數(shù)據(jù)之前,所述方法還包括:

      解析所述第二路數(shù)據(jù),以確定當(dāng)前接收的標(biāo)簽文件;

      所述接收到直播流數(shù)據(jù)保存請求時,保存所述第二路數(shù)據(jù)包括:

      接收到直播流數(shù)據(jù)保存請求時,從當(dāng)前接收的標(biāo)簽文件的下一個標(biāo)簽文件開始保存所述第二路數(shù)據(jù)。

      優(yōu)選地,所述從當(dāng)前接收的標(biāo)簽文件的下一個標(biāo)簽文件開始保存所述第二路數(shù)據(jù)之后,所述方法還包括:

      更新第一個保存的標(biāo)簽文件的時間戳為零。

      優(yōu)選地,所述根據(jù)所述直播流數(shù)據(jù),獲得第一路數(shù)據(jù)和第二路數(shù)據(jù)包括:

      復(fù)制所述直播流數(shù)據(jù)獲得復(fù)制數(shù)據(jù);

      將所述直播流數(shù)據(jù)以及復(fù)制中的任一個作為第一路數(shù)據(jù),另一個作為第二路數(shù)據(jù)。

      本申請還提供了一種直播流數(shù)據(jù)處理裝置,其特征在于,包括:

      攔截模塊,用于攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求;

      生成模塊,用于根據(jù)所述第一數(shù)據(jù)獲取請求,生成第二數(shù)據(jù)獲取請求并發(fā)送至服務(wù)端;所述第一數(shù)據(jù)獲取請求中與所述第二數(shù)據(jù)獲取請求中的接收地址不同;

      獲取模塊,用于獲取所述服務(wù)端提供的直播流數(shù)據(jù);

      處理模塊,用于根據(jù)所述直播流數(shù)據(jù),獲得數(shù)據(jù)相同的第一路數(shù)據(jù)和第二路數(shù)據(jù);

      返回模塊,用于將所述第一路數(shù)據(jù)返回至所述內(nèi)核組件;

      保存模塊,用于接收到直播流數(shù)據(jù)保存請求時,保存所述第二路數(shù)據(jù)。

      優(yōu)選地,所述攔截模塊包括:

      攔截單元,用于調(diào)用內(nèi)核接口攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求。

      優(yōu)選地,所述第二路數(shù)據(jù)包括多個標(biāo)簽文件;所述裝置還包括:

      解析模塊,用于解析所述第二路數(shù)據(jù),以確定當(dāng)前接收的標(biāo)簽文件;

      所述保存模塊包括:

      第一保存單元,用于接收到直播流數(shù)據(jù)保存請求時,從當(dāng)前接收的標(biāo)簽文件的下一個標(biāo)簽文件開始保存所述第二路數(shù)據(jù)。

      優(yōu)選地,其特征在于,所述保存模塊還包括:

      第一更新單元,用于更新第一個保存的標(biāo)簽文件的時間戳為零。

      優(yōu)選地,所述處理模塊包括:

      復(fù)制單元,用于復(fù)制所述直播流數(shù)據(jù)獲得復(fù)制數(shù)據(jù);

      設(shè)置單元,用于將所述直播流數(shù)據(jù)以及復(fù)制中的任一個作為第一路數(shù)據(jù),另一個作為第二路數(shù)據(jù)。

      與現(xiàn)有技術(shù)相比,本申請可以獲得包括以下技術(shù)效果:

      本申請的技術(shù)方案中,直播客戶端將內(nèi)核組件中的第一視頻獲取請求進行攔截,從而阻斷了內(nèi)核組件獲取直播流數(shù)據(jù)的數(shù)據(jù)通路。之后,根據(jù)第一數(shù)據(jù)獲取請求,生成一個第二數(shù)據(jù)獲取請求,使直播客戶端能夠通過第二數(shù)據(jù)獲取請求來獲取直播流數(shù)據(jù)。之后,根據(jù)所述直播流數(shù)據(jù)得到了第一路數(shù)據(jù)和第二路數(shù)據(jù),并將第一路數(shù)據(jù)返回至內(nèi)核組件,以使所述內(nèi)核組件加載所述第一路數(shù)據(jù),為用戶播放直播流數(shù)據(jù)。而在接收到直播流數(shù)據(jù)的保存請求時,直播客戶端將所述第二路數(shù)據(jù)進行保存,也即實現(xiàn)了直播流數(shù)據(jù)的本地保存。從而僅使用一路數(shù)據(jù)通路獲取直播流數(shù)據(jù),使其即可以被播放又可以被保存,減少了帶寬的占用。

      附圖說明

      此處所說明的附圖用來提供對本申請的進一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:

      圖1是本申請實施例的直播流數(shù)據(jù)處理方法的一個實施例流程圖;

      圖2是本申請實施例的直播流數(shù)據(jù)處理方法的又一個實施例流程圖;

      圖3是本申請實施例的直播流數(shù)據(jù)處理裝置的一個實施例結(jié)構(gòu)示意圖;

      圖4是本申請實施例的直播流數(shù)據(jù)處理裝置的又一個實施例結(jié)構(gòu)示意圖。

      具體實施方式

      以下將配合附圖及實施例來詳細說明本申請的實施方式,藉此對本申請如何應(yīng)用技術(shù)手段來解決技術(shù)問題并達成技術(shù)功效的實現(xiàn)過程能充分理解并據(jù)以實施。

      本發(fā)明實施例主要應(yīng)用于運行在計算機系統(tǒng)的直播客戶端中,該直播客戶端包括內(nèi)核組件,用以在直播客戶端中嵌入瀏覽器功能,以使得直播客戶端可以通過頁面渲染實現(xiàn)直播流數(shù)據(jù)的播放。因此,內(nèi)核組件可以為嵌入式框架,如cef(chromiumembeddedframework,基于chromium的嵌入式框架)。

      其中,直播流數(shù)據(jù)可以是音頻、視頻等多媒體數(shù)據(jù)。直播客戶端通過向服務(wù)端發(fā)送直播流數(shù)據(jù)獲取請求,以建立與服務(wù)端的數(shù)據(jù)通路,即可以從服務(wù)端獲取直播流數(shù)據(jù)并播放。在一個實際應(yīng)用中,本發(fā)明實施例的直播流數(shù)據(jù)可以是flv(flashvideo,流媒體格式)數(shù)據(jù)。

      直播客戶端檢測到直播流數(shù)據(jù)保存請求時,可以對當(dāng)前播放的直播流數(shù)據(jù)進行錄制以保存直播流數(shù)據(jù)。但是,發(fā)明人發(fā)現(xiàn),現(xiàn)有技術(shù)中一旦進行直播流數(shù)據(jù)的保存時,就會影響直播流數(shù)據(jù)的播放效果,出現(xiàn)播放卡頓、不流暢的問題。發(fā)明人經(jīng)過進一步研究發(fā)現(xiàn),直播客戶端接收到直播流數(shù)據(jù)保存請求后,會與服務(wù)端建立一個新的數(shù)據(jù)通路,以獲取直播流數(shù)據(jù)并保存。這就導(dǎo)致直播客戶端中存在兩條與服務(wù)端之間的數(shù)據(jù)通路。由于存在兩條數(shù)據(jù)通路,必然會占用較多的帶寬,造成系統(tǒng)通信的負擔(dān)增加,從而影響播放效果。

      為了減少直播客戶端與服務(wù)端之間的帶寬占用,發(fā)明人想到是否可以僅建立一條數(shù)據(jù)通路以節(jié)約帶寬占用,使得即可以保存直播流數(shù)據(jù),又不影響直播流數(shù)據(jù)的播放。據(jù)此,發(fā)明人提出本發(fā)明的技術(shù)方案。

      本發(fā)明實施例中,通過攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求,然后重寫第一數(shù)據(jù)獲取請求以生成第二數(shù)據(jù)獲取請求并發(fā)送至服務(wù)端。這樣,服務(wù)端提供的直播流數(shù)據(jù)并不會直播發(fā)送至內(nèi)核組件,因此,可以首先根據(jù)獲取的直播流數(shù)據(jù)獲得數(shù)據(jù)相同的兩路數(shù)據(jù):第一路數(shù)據(jù)和第二路數(shù)據(jù),第一路數(shù)據(jù)返回至內(nèi)核組件;在接收到直播流數(shù)據(jù)的保存請求時,直接保存所述第二路數(shù)據(jù)。進而實現(xiàn)了只通過一條數(shù)據(jù)通路即可以實現(xiàn)直播流數(shù)據(jù)的獲取以及保存,進而避免占用過多帶寬,增加通信負擔(dān)。

      下面將結(jié)合附圖對本發(fā)明的技術(shù)方案進行詳細說明。

      如圖1所示,為本發(fā)明實施例提供的一種直播流數(shù)據(jù)處理方法的一個實施例的流程圖,該方法可以包括以下幾個步驟:

      101:攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求。

      內(nèi)核組件被封裝在直播客戶端中,其可以是嵌入式瀏覽器框架,可以將瀏覽器的功能嵌入到直播客戶端,進而可以使得直播客戶端能夠完成直播頁面的頁面渲染。常用的內(nèi)核組件可以包括chrome內(nèi)核、ie內(nèi)核等,在一個實際應(yīng)用中,該內(nèi)核組件可以為cef。直播頁面可以是由html5語言等網(wǎng)頁語言編寫的網(wǎng)頁頁面。

      其中,在直播客戶端中可以創(chuàng)建一處理組件,由該處理組件攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求。可以根據(jù)內(nèi)核組件提供的攔截接口等封裝的一個處理類,再根據(jù)該處理類創(chuàng)建一個可以調(diào)用所述處理類的處理接口的處理對象,所述處理對象即為該處理組件。

      第一數(shù)據(jù)獲取請求可以是內(nèi)核組件響應(yīng)于用戶觸發(fā)的直播觀看請求生成并發(fā)送的。如果用戶想要觀看某一個直播流數(shù)據(jù)時,可以執(zhí)行進入該直播內(nèi)容所在的直播頁面的操作,以觸發(fā)直播觀看請求。

      內(nèi)核組件根據(jù)直播觀看請求,可以對相應(yīng)的直播頁面進行解析,獲取直播流數(shù)據(jù)的鏈接。內(nèi)核組件根據(jù)該直播流數(shù)據(jù)的鏈接,可以生成向服務(wù)端請求直播流數(shù)據(jù)的第一數(shù)據(jù)獲取請求。服務(wù)端可以根據(jù)直播流數(shù)據(jù)的鏈接,提供鏈接對應(yīng)的所述直播流數(shù)據(jù)。

      而本發(fā)明實施例中,通過處理組件對該內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求進行了攔截,使得第一數(shù)據(jù)獲取請求無法發(fā)送至服務(wù)端。

      102:根據(jù)所述第一數(shù)據(jù)獲取請求,生成第二數(shù)據(jù)獲取請求并發(fā)送所述第二數(shù)據(jù)獲取請求至服務(wù)端。

      其中,所述第一數(shù)據(jù)獲取請求中與所述第二數(shù)據(jù)獲取請求中的接收地址不同。因此,服務(wù)端根據(jù)第二數(shù)據(jù)獲取請求發(fā)送的直播流數(shù)據(jù),將不再發(fā)送至內(nèi)核組件。本發(fā)明實施例中是通過直播客戶端中的處理組件對第一數(shù)據(jù)獲取請求進行的攔截,并據(jù)此生成第二數(shù)據(jù)獲取請求,因此,可以使得直播流數(shù)據(jù)可以直接提供給處理組件而非內(nèi)核組件。

      所述第一數(shù)據(jù)獲取請求是根據(jù)所述直播流文件的鏈接獲得的,并通過內(nèi)核組件發(fā)送到服務(wù)端。生成第二數(shù)據(jù)獲取請求之前需要根據(jù)第一數(shù)據(jù)獲取請求得到直播流文件的鏈接,再根據(jù)直播流文件的鏈接生成第二數(shù)據(jù)獲取請求。所述第二數(shù)據(jù)獲取請求是由直播客戶端生成的。

      由于第一數(shù)據(jù)獲取請求中包括直播流數(shù)據(jù)的鏈接,因此作為一種可能的實現(xiàn)方式,所述根據(jù)所述第一數(shù)據(jù)獲取請求,生成第二數(shù)據(jù)獲取請求并發(fā)送至服務(wù)器可以包括:

      根據(jù)所述第一數(shù)據(jù)獲取請求,得到所述直播流數(shù)據(jù)的鏈接;

      根據(jù)所述直播流數(shù)據(jù)的鏈接生成第二數(shù)據(jù)獲取請求。

      103:獲取所述服務(wù)端提供的直播流數(shù)據(jù)。

      由于是處理組件發(fā)送的第二數(shù)據(jù)獲取請求,根據(jù)第二數(shù)據(jù)獲取請求中的接收地址,服務(wù)端提供的直播流數(shù)據(jù)即發(fā)送至處理組件。

      104:根據(jù)所述直播流數(shù)據(jù),獲得數(shù)據(jù)相同的第一路數(shù)據(jù)和第二路數(shù)據(jù)。

      其中,第一路數(shù)據(jù)與第二路數(shù)據(jù)的數(shù)據(jù)內(nèi)容即為該直播流數(shù)據(jù)的數(shù)據(jù)內(nèi)容。

      作為一個種可能的實現(xiàn)方式,所述根據(jù)所述直播流數(shù)據(jù),獲得數(shù)據(jù)相同的第一路數(shù)據(jù)和第二路數(shù)據(jù)可以包括:

      復(fù)制所述直播流數(shù)據(jù)獲得復(fù)制數(shù)據(jù);

      將所述直播流數(shù)據(jù)以及復(fù)制中的任一個作為第一路數(shù)據(jù),另一個作為第二路數(shù)據(jù)。

      也即通過將直播流數(shù)據(jù)進行復(fù)制,即可以獲得兩路數(shù)據(jù)。

      本發(fā)明實施例中,只限定所述第一路數(shù)據(jù)和所述第二路數(shù)據(jù)的數(shù)據(jù)相同,并不限定所述第一路數(shù)據(jù)與所述第二路數(shù)據(jù)是直播流數(shù)據(jù)還是復(fù)制數(shù)據(jù)。其中,所述第一路數(shù)據(jù)可以是直播流數(shù)據(jù),這時所述第二路數(shù)據(jù)即為復(fù)制數(shù)據(jù);所述第一路數(shù)據(jù)也可以是復(fù)制數(shù)據(jù),這時所述第二路數(shù)據(jù)即為直播流數(shù)據(jù)。

      105:將所述第一路數(shù)據(jù)返回至內(nèi)核組件;

      為保證正常的直播播放,本發(fā)明實施例中,將第一路數(shù)據(jù)返回至內(nèi)核組件,以使所述內(nèi)核組件播放所述第一路數(shù)據(jù)。

      具體的,內(nèi)核組件可以將所述第一路數(shù)據(jù)加載到直播網(wǎng)頁上,以在直播網(wǎng)頁上播放所述直播流數(shù)據(jù)。

      106:接收到直播流數(shù)據(jù)保存請求時,保存所述第二路數(shù)據(jù)。

      如果接受到直播流數(shù)據(jù)保存請求,即可以直播保存所述第二路數(shù)據(jù),既不會影響第一路數(shù)據(jù)的播放,不會影響直播播放效果,且無需重新建立數(shù)據(jù)通路進行數(shù)據(jù)下載,可以節(jié)省帶寬。

      其中,所述直播流數(shù)據(jù)保存請求,可以是響應(yīng)于用戶針對錄制控件的操作而生成的。作為一種可能的實現(xiàn)方式,所述保存所述第二路數(shù)據(jù)具體可以是將所述第二路數(shù)據(jù)寫入一個數(shù)據(jù)文件中。

      本發(fā)明實施例中,對內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求進行了攔截,使得第一數(shù)據(jù)獲取請求無法發(fā)送至服務(wù)端。之后根據(jù)第一數(shù)據(jù)獲取請求生成第二數(shù)據(jù)獲取請求,從而可以根據(jù)獲得的直播流數(shù)據(jù)得到數(shù)據(jù)相同的兩路數(shù)據(jù),一路返回內(nèi)核組件,一路進行保存。從而僅用一個數(shù)據(jù)通路即可以實現(xiàn)播放以及保存,減少了帶寬占用,避免增加通信負擔(dān)。

      作為又一個實施例,為了方便用戶查找到保存的直播流數(shù)據(jù),所述接收到直播流數(shù)據(jù)保存請求時,保存所述第二路數(shù)據(jù)可以包括:

      接收到直播流數(shù)據(jù)保存請求時,為用戶展示一個可供選擇直播流數(shù)據(jù)保存路徑的路徑選擇界面;

      接收到用戶選擇的保存路徑時,將所述第二路數(shù)據(jù)保存到所述用戶選擇的路徑中。

      作為又一個實施例,所述接收到直播流數(shù)據(jù)保存請求時,保存所述第二路數(shù)據(jù)可以包括:

      接收到直播流數(shù)據(jù)保存請求時,將所述第二路數(shù)據(jù)保存到預(yù)設(shè)置的存儲路徑中。

      其中,所述預(yù)設(shè)置的存儲路徑可以是直播客戶端默認(rèn)的存儲路徑,也可以是用戶在其他任意時間設(shè)置的第二路數(shù)據(jù)的保存路徑。

      由于,內(nèi)核組件可以提供內(nèi)核接口,因此,作為一個實施例,為了提高攔截效率,所述攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求可以包括:

      調(diào)用內(nèi)核接口攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求。

      其中,所述內(nèi)核接口可以由內(nèi)核組件提供。

      內(nèi)核接口是由內(nèi)核組件提供的。內(nèi)核接口也可以稱之為內(nèi)核控件。當(dāng)處理組件訪問該內(nèi)核接口時,可以事先建立一個能夠訪問該接口的對象,通過該對象才能實現(xiàn)訪問。

      作為又一個實施例,為了確保內(nèi)核接口的有效性,進一步提高攔截效率,所述調(diào)用內(nèi)核接口攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求可以包括:

      監(jiān)測到所述內(nèi)核接口被實現(xiàn)時,調(diào)用內(nèi)核接口攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求。

      所述內(nèi)核接口被實現(xiàn)可以是后臺人員通過參數(shù)設(shè)置使內(nèi)核接口使能,以令所述內(nèi)核接口能夠被調(diào)用。

      當(dāng)所述內(nèi)核接口未被實現(xiàn)時,則可以不攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求,然后仍然通過原有的方式,由內(nèi)核組件向服務(wù)端發(fā)送第一數(shù)據(jù)獲取請求,以請求直播流數(shù)據(jù)行播放。

      如圖2所示為本發(fā)明提供的一種直播流數(shù)據(jù)處理方法的又一個實施例的流程圖,該方法可以包括以下幾個步驟:

      201:攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求。

      202:根據(jù)所述第一數(shù)據(jù)獲取請求,生成第二數(shù)據(jù)獲取請求并發(fā)送所述第二數(shù)據(jù)獲取請求至服務(wù)端。

      203:獲取所述服務(wù)端提供的直播流數(shù)據(jù)。

      204:根據(jù)所述直播流數(shù)據(jù),獲得數(shù)據(jù)相同的第一路數(shù)據(jù)和第二路數(shù)據(jù)。

      所述直播流數(shù)據(jù)通過復(fù)制得到復(fù)制數(shù)據(jù)。將所述直播流數(shù)據(jù)以及復(fù)制數(shù)據(jù)中的任一個作為第一路數(shù)據(jù),另一個作為第二路數(shù)據(jù)。

      由此,所述第一路數(shù)據(jù)與所述第二路數(shù)據(jù)的數(shù)據(jù)內(nèi)容相同,從本質(zhì)上講均與直播流數(shù)據(jù)的數(shù)據(jù)內(nèi)容相同。

      205:將所述第一路數(shù)據(jù)返回至內(nèi)核組件。

      206:解析所述第二路數(shù)據(jù),以確定當(dāng)前接收的標(biāo)簽文件;

      本實施例中,直播流數(shù)據(jù)可以為flv數(shù)據(jù),其中,可以包括多個標(biāo)簽(tag)文件,每一個標(biāo)簽文件可以封裝成一幀或者多幀音視頻數(shù)據(jù)。直播流數(shù)據(jù)為flv數(shù)據(jù)時,包括header(頭)部分以及body(身體)部分,header部分中記錄了flv文件的類型、版本等信息,body由多個標(biāo)簽(tag)文件和標(biāo)簽頭(tagheader)文件構(gòu)成。

      從服務(wù)端下載直播流數(shù)據(jù)時,是下載完成一個標(biāo)簽文件之后,再即系下載下一個標(biāo)簽文件。

      因此,通過解析第二路數(shù)據(jù),可以確定當(dāng)前接收的標(biāo)簽文件,以及當(dāng)前接收的標(biāo)簽文件的下載進度以確定是否完成下載等。

      207:接收到直播流數(shù)據(jù)保存請求時,從當(dāng)前接收的標(biāo)簽文件的下一個標(biāo)簽文件開始保存所述第二路數(shù)據(jù)。

      所述第二路數(shù)據(jù)在接收時是以字節(jié)流的形式進行接收的。所述解析所述第二路數(shù)據(jù)可以是解析所述第二路數(shù)據(jù)的字節(jié)流。由于不能判斷客戶端何時能夠接收到直播流數(shù)據(jù)保存請求,所以,一旦接收到第二路數(shù)據(jù)時,即對第二路數(shù)據(jù)進行解析,以確定當(dāng)前接收的標(biāo)簽文件。第二路數(shù)據(jù)的接收是持續(xù)進行的,所述解析所述第二路數(shù)據(jù)也是持續(xù)進行的。

      本發(fā)明實施例中,通過一個直播流數(shù)據(jù)的獲取請求即實現(xiàn)了內(nèi)核播放直播流數(shù)據(jù)和保存直播流數(shù)據(jù)兩種功能,在保存直播流數(shù)據(jù)時,采用隨時接收隨時解析的方法,一旦獲取到直播流數(shù)據(jù)保存請求,即可將解析的標(biāo)簽文件進行保存。進而在節(jié)約帶寬的同時,還可以快速實現(xiàn)數(shù)據(jù)保存。

      可選地,所述標(biāo)簽文件中可以包含該標(biāo)簽文件的時間戳。時間戳用于標(biāo)識該標(biāo)簽文件在直播流數(shù)據(jù)的播放進度條上的播放時刻。直播流數(shù)據(jù)的播放進度條上到達此播放時刻時,即播放該標(biāo)簽文件。

      由于接收到直播流數(shù)據(jù)保存請求后,從當(dāng)前接收的標(biāo)簽文件的下一個標(biāo)簽文件開始保存所述第二路數(shù)據(jù)。所述下一個標(biāo)簽文件并不是直播流數(shù)據(jù)接收到的第一個標(biāo)簽文件,其時間戳為該標(biāo)簽文件在當(dāng)前正在播放的直播流數(shù)據(jù)的播放進度條上的播放時刻。如果將該標(biāo)簽文件的時間戳直接進行保存,則在播放保存的第二路數(shù)據(jù)時,會造成從0開始一直到所述下一標(biāo)簽文件的時間戳標(biāo)識的播放時刻之間沒有任何內(nèi)容,會影響用戶觀看。

      因此,為了實現(xiàn)保存的第二路數(shù)據(jù)的正常播放,作為一種可能的實現(xiàn)方式,所述從當(dāng)前接收的標(biāo)簽文件的下一個標(biāo)簽文件開始保存所述第二路數(shù)據(jù)之后,所述方法還可以包括:

      更新第一個保存的標(biāo)簽文件的時間戳為零。

      當(dāng)然,為了使后續(xù)的標(biāo)簽文件也能夠按照保存時間進行正常播放,所述方法還可以包括:

      在更新第一個保存的標(biāo)簽文件的時間戳為零后,從零開始,按照保存時間先后順序更新后續(xù)保存的標(biāo)簽文件中的時間戳。

      由于所述第二路數(shù)據(jù)實際上多為視頻數(shù)據(jù)、音頻數(shù)據(jù),但無論是視頻數(shù)據(jù)還是視頻數(shù)據(jù),均存在頭文件信息,以標(biāo)識該文件的類型、版本等信息,進而保障數(shù)據(jù)的正常播放。本發(fā)明實施例中,從當(dāng)前接收的標(biāo)簽文件的下一個標(biāo)簽文件開始保存所述第二路數(shù)據(jù)之前,所述方法還可以包括:

      將所述第二路數(shù)據(jù)的頭文件信息保存至當(dāng)前保存所述第二路數(shù)據(jù)的文件。

      所述第二路數(shù)據(jù)的頭文件信息可以是在第一次接收到第二路數(shù)據(jù)時,通過解析第一次接收的第二路數(shù)據(jù)獲得的。

      如圖3所示,為本申請實施例中直播流數(shù)據(jù)處理裝置的一個實施例結(jié)構(gòu)示意圖,該裝置可以包括:

      攔截模塊301,用于攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求;

      內(nèi)核組件被封裝在直播客戶端中,其可以是嵌入式瀏覽器框架,可以將瀏覽器的功能嵌入到直播客戶端,進而可以使得直播客戶端能夠完成直播頁面的頁面渲染。常用的內(nèi)核組件可以包括chrome內(nèi)核、ie內(nèi)核等,在一個實際應(yīng)用中,該內(nèi)核組件可以為cef。直播頁面可以是由html5語言等網(wǎng)頁語言編寫的網(wǎng)頁頁面。

      第一數(shù)據(jù)獲取請求可以是內(nèi)核組件響應(yīng)于用戶觸發(fā)的直播觀看請求生成并發(fā)送的。如果用戶想要觀看某一個直播流數(shù)據(jù)時,可以執(zhí)行進入該直播內(nèi)容所在的直播頁面的操作,以觸發(fā)直播觀看請求。

      內(nèi)核組件根據(jù)直播觀看請求,可以對相應(yīng)的直播頁面進行解析,獲取直播流數(shù)據(jù)的鏈接。內(nèi)核組件根據(jù)該直播流數(shù)據(jù)的鏈接,可以生成向服務(wù)端請求直播流數(shù)據(jù)的第一數(shù)據(jù)獲取請求。服務(wù)端可以根據(jù)直播流數(shù)據(jù)的鏈接,提供鏈接對應(yīng)的所述直播流數(shù)據(jù)。而本發(fā)明實施例中,通過處理組件對該內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求進行了攔截,使得第一數(shù)據(jù)獲取請求無法發(fā)送至服務(wù)端。

      生成模塊302,用于根據(jù)所述第一數(shù)據(jù)獲取請求,生成第二數(shù)據(jù)獲取請求并發(fā)送至服務(wù)端。

      其中,所述第一數(shù)據(jù)獲取請求中與所述第二數(shù)據(jù)獲取請求中的接收地址不同。因此,服務(wù)端根據(jù)第二數(shù)據(jù)獲取請求發(fā)送的直播流數(shù)據(jù),將不再發(fā)送至內(nèi)核組件。本發(fā)明實施例中是通過直播客戶端中的處理組件對第一數(shù)據(jù)獲取請求進行的攔截,并據(jù)此生成第二數(shù)據(jù)獲取請求,因此,可以使得直播流數(shù)據(jù)可以直接提供給處理組件而非內(nèi)核組件。

      所述第一數(shù)據(jù)獲取請求是根據(jù)所述直播流文件的鏈接獲得的,并通過內(nèi)核組件發(fā)送到服務(wù)端。生成第二數(shù)據(jù)獲取請求之前需要根據(jù)第一數(shù)據(jù)獲取請求得到直播流文件的鏈接,再根據(jù)直播流文件的鏈接生成第二數(shù)據(jù)獲取請求。所述第二數(shù)據(jù)獲取請求是由直播客戶端生成的。

      由于第一數(shù)據(jù)獲取請求中包括直播流數(shù)據(jù)的鏈接,因此作為一種可能的實現(xiàn)方式,所述生成模塊可以包括:

      獲取單元,用于根據(jù)所述第一數(shù)據(jù)獲取請求,得到所述直播流數(shù)據(jù)的鏈接;

      生成單元,用于根據(jù)所述直播流數(shù)據(jù)的鏈接生成第二數(shù)據(jù)獲取請求。

      獲取模塊303,用于獲取所述服務(wù)端提供的直播流數(shù)據(jù)。

      由于是處理組件發(fā)送的第二數(shù)據(jù)獲取請求,根據(jù)第二數(shù)據(jù)獲取請求中的接收地址,服務(wù)端提供的直播流數(shù)據(jù)即發(fā)送至處理組件。

      處理模塊304,用于根據(jù)所述直播流數(shù)據(jù),獲得數(shù)據(jù)相同的第一路數(shù)據(jù)和第二路數(shù)據(jù)。

      其中,第一路數(shù)據(jù)與第二路數(shù)據(jù)的數(shù)據(jù)內(nèi)容即為該直播流數(shù)據(jù)的數(shù)據(jù)內(nèi)容。

      作為一個種可能的實現(xiàn)方式,所述處理模塊可以包括:

      復(fù)制單元,用于復(fù)制所述直播流數(shù)據(jù)獲得復(fù)制數(shù)據(jù);

      設(shè)置單元,用于將所述直播流數(shù)據(jù)以及復(fù)制中的任一個作為第一路數(shù)據(jù),另一個作為第二路數(shù)據(jù)。

      也即通過將直播流數(shù)據(jù)進行復(fù)制,即可以獲得兩路數(shù)據(jù)。

      本發(fā)明實施例中,只限定所述第一路數(shù)據(jù)和所述第二路數(shù)據(jù)的數(shù)據(jù)相同,并不限定所述第一路數(shù)據(jù)與所述第二路數(shù)據(jù)是直播流數(shù)據(jù)還是復(fù)制數(shù)據(jù)。其中,所述第一路數(shù)據(jù)可以是直播流數(shù)據(jù),這時所述第二路數(shù)據(jù)即為復(fù)制數(shù)據(jù);所述第一路數(shù)據(jù)也可以是復(fù)制數(shù)據(jù),這時所述第二路數(shù)據(jù)即為直播流數(shù)據(jù)。

      返回模塊305,用于將所述第一路數(shù)據(jù)返回至所述內(nèi)核組件。

      為保證正常的直播播放,本發(fā)明實施例中,將第一路數(shù)據(jù)返回至內(nèi)核組件,以使所述內(nèi)核組件播放所述第一路數(shù)據(jù)。

      具體的,內(nèi)核組件可以將所述第一路數(shù)據(jù)加載到直播網(wǎng)頁上,以在直播網(wǎng)頁上播放所述直播流數(shù)據(jù)。

      保存模塊306,用于接收到直播流數(shù)據(jù)保存請求時,保存所述第二路數(shù)據(jù)。

      如果接受到直播流數(shù)據(jù)保存請求,即可以直播保存所述第二路數(shù)據(jù),既不會影響第一路數(shù)據(jù)的播放,不會影響直播播放效果,且無需重新建立數(shù)據(jù)通路進行數(shù)據(jù)下載,可以節(jié)省帶寬。

      其中,所述直播流數(shù)據(jù)保存請求,可以是響應(yīng)于用戶針對錄制控件的操作而生成的。

      作為一種可能的實現(xiàn)方式,所述保存所述第二路數(shù)據(jù)具體可以是將所述第二路數(shù)據(jù)寫入一個數(shù)據(jù)文件中。

      本發(fā)明實施例中,對內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求進行了攔截,使得第一數(shù)據(jù)獲取請求無法發(fā)送至服務(wù)端。之后根據(jù)第一數(shù)據(jù)獲取請求生成第二數(shù)據(jù)獲取請求,從而可以根據(jù)獲得的直播流數(shù)據(jù)得到數(shù)據(jù)相同的兩路數(shù)據(jù),一路返回內(nèi)核組件,一路進行保存。從而僅用一個數(shù)據(jù)通路即可以實現(xiàn)播放以及保存,減少了帶寬占用,避免增加通信負擔(dān)。

      作為一個實施例,為了實現(xiàn)所述第二路數(shù)據(jù)的保存工作,方便用戶查找到保存的直播流數(shù)據(jù),所述保存模塊可以包括:

      頁面展示單元,用于在接收到直播流數(shù)據(jù)保存請求時,為用戶展示一個可供選擇直播流數(shù)據(jù)保存路徑的路徑選擇界面;

      第二保存單元,用于在接收到用戶選擇的保存路徑時,將所述第二路數(shù)據(jù)保存到所述用戶選擇的路徑中。

      作為又一個實施例,保存所述第二路數(shù)據(jù)時,為了不切斷用戶觀看直播流數(shù)據(jù),保障觀看的流暢性,所述保存模塊可以包括:

      第三保存單元,用于在接收到直播流數(shù)據(jù)保存請求時,將所述第二路數(shù)據(jù)保存到預(yù)設(shè)置的存儲路徑中。

      其中,所述預(yù)設(shè)置的存儲路徑可以是直播客戶端默認(rèn)的存儲路徑,也可以是用戶在其他任意時間設(shè)置的第二路數(shù)據(jù)的保存路徑。

      由于,內(nèi)核組件可以提供內(nèi)核接口,因此,作為一個實施例,為了提高攔截效率,所述攔截模塊包括:

      攔截單元,用于調(diào)用內(nèi)核接口攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求。

      其中,所述內(nèi)核接口可以由內(nèi)核組件提供。

      內(nèi)核接口是由內(nèi)核組件提供的。內(nèi)核接口也可以稱之為內(nèi)核控件。當(dāng)處理組件訪問該內(nèi)核接口時,可以事先建立一個能夠訪問該接口的對象,通過該對象才能實現(xiàn)訪問。

      作為又一個實施例,為了確保內(nèi)核接口的有效性,進一步提高攔截效率,所述攔截單元可以包括:

      攔截子單元,用于在監(jiān)測到所述內(nèi)核接口被實現(xiàn)時,調(diào)用內(nèi)核接口攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求。

      所述內(nèi)核接口被實現(xiàn)可以是后臺人員通過參數(shù)設(shè)置使內(nèi)核接口使能,以令所述內(nèi)核接口能夠被調(diào)用。

      當(dāng)所述內(nèi)核接口未被實現(xiàn)時,則可以不攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求,然后仍然通過原有的方式,由內(nèi)核組件向服務(wù)端發(fā)送第一數(shù)據(jù)獲取請求,以請求直播流數(shù)據(jù)行播放。

      如圖4所示為本發(fā)明提供的一種直播流數(shù)據(jù)處理裝置的又一個實施例的流程圖,該裝置可以包括以下幾個模塊:

      攔截模塊401:攔截內(nèi)核組件發(fā)送的第一數(shù)據(jù)獲取請求。

      生成模塊402:根據(jù)所述第一數(shù)據(jù)獲取請求,生成第二數(shù)據(jù)獲取請求并發(fā)送所述第二數(shù)據(jù)獲取請求至服務(wù)端。

      獲取模塊403:獲取所述服務(wù)端提供的直播流數(shù)據(jù)。

      處理模塊404:根據(jù)所述直播流數(shù)據(jù),獲得數(shù)據(jù)相同的第一路數(shù)據(jù)和第二路數(shù)據(jù)。

      所述直播流數(shù)據(jù)通過復(fù)制得到復(fù)制數(shù)據(jù)。將所述直播流數(shù)據(jù)以及復(fù)制數(shù)據(jù)中的任一個作為第一路數(shù)據(jù),另一個作為第二路數(shù)據(jù)。

      由此,所述第一路數(shù)據(jù)與所述第二路數(shù)據(jù)的數(shù)據(jù)內(nèi)容相同,從本質(zhì)上講均與直播流數(shù)據(jù)的數(shù)據(jù)內(nèi)容相同。

      返回模塊405:將所述第一路數(shù)據(jù)返回至內(nèi)核組件。

      解析模塊406:用于解析所述第二路數(shù)據(jù),以確實當(dāng)前接收的標(biāo)簽文件;

      所述保存模塊407可以包括:

      第一保存單元408:用于接收到直播流數(shù)據(jù)保存請求時,從當(dāng)前接收的標(biāo)簽文件的下一個標(biāo)簽文件開始保存所述第二路數(shù)據(jù)。

      本發(fā)明實施例中,通過一個直播流數(shù)據(jù)的獲取請求即實現(xiàn)了內(nèi)核播放直播流數(shù)據(jù)和保存直播流數(shù)據(jù)兩種功能,在保存直播流數(shù)據(jù)時,采用隨時接收隨時解析的方法,一旦獲取到直播流數(shù)據(jù)保存請求,即可將解析的標(biāo)簽文件進行保存。進而在節(jié)約帶寬的同時,還可以快速實現(xiàn)數(shù)據(jù)保存。

      可選地,所述標(biāo)簽文件中包含當(dāng)前接收的標(biāo)簽文件的時間戳。時間戳用于標(biāo)識該標(biāo)簽文件在直播流數(shù)據(jù)的播放進度條上的播放時刻。

      由于接收到直播流數(shù)據(jù)保存請求后,從當(dāng)前接收的標(biāo)簽文件的下一個標(biāo)簽文件開始保存所述第二路數(shù)據(jù)。所述下一個標(biāo)簽文件并不是直播流數(shù)據(jù)接收到的第一個標(biāo)簽文件,其時間戳為該標(biāo)簽文件在當(dāng)前正在播放的直播流數(shù)據(jù)的播放進度條上的播放時刻。如果將該標(biāo)簽文件的時間戳直接進行保存,則在播放保存的第二路數(shù)據(jù)時,會造成從0開始一直到所述下一標(biāo)簽文件的時間戳標(biāo)識的播放時刻之間沒有任何內(nèi)容,會影響用戶觀看。

      因此,為了實現(xiàn)保存的第二路數(shù)據(jù)的正常播放,作為一種可能的實現(xiàn)方式,所述從當(dāng)前接收的標(biāo)簽文件的下一個標(biāo)簽文件開始保存所述第二路數(shù)據(jù)之后,所述裝置還可以包括:

      第一更新模塊,用于更新第一個保存的標(biāo)簽文件的時間戳為零。

      當(dāng)然,為了使后續(xù)的標(biāo)簽文件也能夠按照保存時間進行正常播放,所述裝置還可以包括:

      第二更新模塊,在更新第一個保存的標(biāo)簽文件的時間戳為零后,從零開始,按照保存時間先后順序更新后續(xù)保存的標(biāo)簽文件中的時間戳。

      由于所述第二路數(shù)據(jù)實際上多為視頻數(shù)據(jù)、音頻數(shù)據(jù),但無論是視頻數(shù)據(jù)還是視頻數(shù)據(jù),均存在頭文件信息,以標(biāo)識該文件的類型、版本等信息,進而保障數(shù)據(jù)的正常播放。本發(fā)明實施例中,從當(dāng)前接收的標(biāo)簽文件的下一個標(biāo)簽文件開始保存所述第二路數(shù)據(jù)之前,所述保存模塊還可以包括:

      第四保存單元,用于將所述第二路數(shù)據(jù)的頭文件信息保存至當(dāng)前保存所述第二路數(shù)據(jù)的文件。

      所述第二路數(shù)據(jù)的頭文件信息可以是在第一次接收到第二路數(shù)據(jù)時,通過解析第一次接收的第二路數(shù)據(jù)獲得的。

      在一個典型的配置中,計算設(shè)備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。

      內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機可讀介質(zhì)的示例。

      計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。

      如在說明書及權(quán)利要求當(dāng)中使用了某些詞匯來指稱特定組件。本領(lǐng)域技術(shù)人員應(yīng)可理解,硬件制造商可能會用不同名詞來稱呼同一個組件。本說明書及權(quán)利要求并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的準(zhǔn)則。如在通篇說明書及權(quán)利要求當(dāng)中所提及的“包含”為一開放式用語,故應(yīng)解釋成“包含但不限定于”?!按笾隆笔侵冈诳山邮盏恼`差范圍內(nèi),本領(lǐng)域技術(shù)人員能夠在一定誤差范圍內(nèi)解決所述技術(shù)問題,基本達到所述技術(shù)效果。此外,“耦接”一詞在此包含任何直接及間接的電性耦接手段。因此,若文中描述一第一裝置耦接于一第二裝置,則代表所述第一裝置可直接電性耦接于所述第二裝置,或通過其他裝置或耦接手段間接地電性耦接至所述第二裝置。說明書后續(xù)描述為實施本申請的較佳實施方式,然所述描述乃以說明本申請的一般原則為目的,并非用以限定本申請的范圍。本申請的保護范圍當(dāng)視所附權(quán)利要求所界定者為準(zhǔn)。

      還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的商品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種商品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的商品或者系統(tǒng)中還存在另外的相同要素

      上述說明示出并描述了本申請的若干優(yōu)選實施例,但如前所述,應(yīng)當(dāng)理解本申請并非局限于本文所披露的形式,不應(yīng)看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述申請構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識進行改動。而本領(lǐng)域人員所進行的改動和變化不脫離本申請的精神和范圍,則都應(yīng)在本申請所附權(quán)利要求的保護范圍內(nèi)。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1