本發(fā)明涉及計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)分享的方法和裝置。
背景技術(shù):
在很多情況下,用戶希望能夠在不同設(shè)備間進(jìn)行數(shù)據(jù)的快速分享,例如將當(dāng)前設(shè)備上顯示的視頻數(shù)據(jù)快速分享至另一設(shè)備??梢詫⒎窒頂?shù)據(jù)的一方設(shè)備稱為源設(shè)備,將接收數(shù)據(jù)的一方設(shè)備稱為目標(biāo)設(shè)備。
目前主要采用的分享方式是基于wifi的數(shù)據(jù)分享,這種方式下,源設(shè)備和目標(biāo)設(shè)備首先通過wifi發(fā)現(xiàn)機(jī)制建立wifi連接,在完成能力協(xié)商后建立分享Session(會(huì)話),將源設(shè)備的屏幕進(jìn)行截屏,將截屏后得到的截屏圖像通過wifi連接發(fā)送給目標(biāo)設(shè)備進(jìn)行顯示。然而由于該方式中源設(shè)備只能實(shí)現(xiàn)屏幕數(shù)據(jù)(屏幕數(shù)據(jù)指的是設(shè)備屏幕顯示的數(shù)據(jù))的截屏分享,對(duì)于窗口數(shù)據(jù)的分享則可能無(wú)法實(shí)現(xiàn)。例如當(dāng)前屏幕上顯示多個(gè)窗口時(shí),只能夠?qū)崿F(xiàn)源設(shè)備和目標(biāo)設(shè)備間屏幕的截屏分享,如圖1中所示。這種方式分享的數(shù)據(jù)固定且單一,不能滿足用戶的多樣性分享需求,例如,用戶希望分享某個(gè)應(yīng)用窗口的數(shù)據(jù),或者,用戶希望針對(duì)不同目標(biāo)設(shè)備分享不同的數(shù)據(jù)。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明提供了一種數(shù)據(jù)分享的方法和裝置,可以用于實(shí)現(xiàn)多樣性的數(shù)據(jù)分享需求,例如,窗口數(shù)據(jù)的分享。
具體技術(shù)方案如下:
本發(fā)明提供了一種數(shù)據(jù)分享的方法,該方法包括:
源設(shè)備獲取到目標(biāo)設(shè)備的信息后,針對(duì)所述目標(biāo)設(shè)備創(chuàng)建緩存隊(duì)列;
將要分享給所述目標(biāo)設(shè)備的數(shù)據(jù)繪制到所述目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列;
通過與所述目標(biāo)設(shè)備之間的連接,將所述緩存隊(duì)列中數(shù)據(jù)對(duì)應(yīng)的傳輸流發(fā)送給所述目標(biāo)設(shè)備。
根據(jù)本發(fā)明一可選實(shí)施方式,所述源設(shè)備獲取到目標(biāo)設(shè)備的信息包括:
所述源設(shè)備在建立與所述目標(biāo)設(shè)備之間的連接時(shí),獲取到所述目標(biāo)設(shè)備的信息。
根據(jù)本發(fā)明一可選實(shí)施方式,針對(duì)所述目標(biāo)設(shè)備創(chuàng)建緩存隊(duì)列包括:
所述源設(shè)備創(chuàng)建數(shù)據(jù)源MediaSource,在MediaSource中創(chuàng)建緩存隊(duì)列BufferQueue;以及,創(chuàng)建與所述目標(biāo)設(shè)備對(duì)應(yīng)的遠(yuǎn)端顯示設(shè)備RemotedisplayDevice;
將所述BufferQueue作為所述RemotedisplayDevice的數(shù)據(jù)源。
根據(jù)本發(fā)明一可選實(shí)施方式,所述源設(shè)備與所述目標(biāo)設(shè)備之間的連接的建立包括:
所述源設(shè)備在局域網(wǎng)內(nèi)廣播所述源設(shè)備的IP地址和指定端口信息,通過所述指定端口監(jiān)聽到所述目標(biāo)設(shè)備發(fā)送的連接請(qǐng)求后,與所述目標(biāo)設(shè)備建立連接;或者,
所述源設(shè)備向服務(wù)器注冊(cè)所述源設(shè)備的IP地址和指定端口信息,通過所述指定端口接收到所述目標(biāo)設(shè)備發(fā)送的連接請(qǐng)求后,與所述目標(biāo)設(shè)備建立連接,其中所述目標(biāo)設(shè)備從所述服務(wù)器獲取所述源設(shè)備的IP地址和指定端口信息;或者,
所述源設(shè)備通過wifi發(fā)現(xiàn)機(jī)制與所述目標(biāo)設(shè)備建立連接。
根據(jù)本發(fā)明一可選實(shí)施方式,所述將要分享給所述目標(biāo)設(shè)備的數(shù)據(jù)繪制到所述目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列包括:
將針對(duì)所述目標(biāo)設(shè)備創(chuàng)建的緩存隊(duì)列的信息作為參數(shù)傳遞給界面組合模塊;
由所述界面組合模塊獲取要分享給所述目標(biāo)設(shè)備的數(shù)據(jù)后,將要分享給所述目標(biāo)設(shè)備的數(shù)據(jù)繪制到所述目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
根據(jù)本發(fā)明一可選實(shí)施方式,所述將要分享給所述目標(biāo)設(shè)備的數(shù)據(jù)繪制到所 述目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列包括:
如果要分享給所述目標(biāo)設(shè)備的數(shù)據(jù)為某窗口的數(shù)據(jù),則從所述窗口對(duì)應(yīng)的緩存中獲取所述窗口的數(shù)據(jù),將所述窗口的數(shù)據(jù)繪制到所述目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列;或者,
如果要分享給所述目標(biāo)設(shè)備的數(shù)據(jù)為屏幕的數(shù)據(jù),則從所述屏幕所包含各窗口對(duì)應(yīng)的緩存中獲取各窗口的數(shù)據(jù),依據(jù)各窗口在屏幕上的位置信息,將各窗口的數(shù)據(jù)繪制到所述目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
根據(jù)本發(fā)明一可選實(shí)施方式,該方法還包括:
對(duì)所述緩存隊(duì)列中的數(shù)據(jù)進(jìn)行編碼,得到基本數(shù)據(jù)流ES;
對(duì)所述ES進(jìn)行分組形成分組基本流PES;
將所述PES進(jìn)行重新封裝形成所述緩存隊(duì)列中數(shù)據(jù)對(duì)應(yīng)的傳輸流TS。
根據(jù)本發(fā)明一可選實(shí)施方式,在所述連接的建立過程中進(jìn)一步協(xié)商所述源設(shè)備與所述目標(biāo)設(shè)備之間反饋通道的信息;
該方法還包括:
所述源設(shè)備通過所述反饋通道接收所述目標(biāo)設(shè)備反饋的傳輸流接收狀況;
依據(jù)所述傳輸流接收狀況,調(diào)整對(duì)所述目標(biāo)設(shè)備所對(duì)應(yīng)緩存隊(duì)列中數(shù)據(jù)的編碼。
根據(jù)本發(fā)明一可選實(shí)施方式,所述傳輸流接收狀況包括丟包率;
所述調(diào)整對(duì)所述目標(biāo)設(shè)備所對(duì)應(yīng)緩存隊(duì)列中數(shù)據(jù)的編碼包括:調(diào)整對(duì)所述目標(biāo)設(shè)備所對(duì)應(yīng)緩存隊(duì)列中數(shù)據(jù)的編碼方式;或者,
提高或降低對(duì)所述目標(biāo)設(shè)備所對(duì)應(yīng)緩存隊(duì)列中數(shù)據(jù)的編碼率。
根據(jù)本發(fā)明一可選實(shí)施方式,該方法還包括:
所述源設(shè)備與所述目標(biāo)設(shè)備之間的連接斷開后,所述源設(shè)備刪除所述目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
根據(jù)本發(fā)明一可選實(shí)施方式,所述源設(shè)備為云盒,所述目標(biāo)設(shè)備為用戶端機(jī)頂盒。
根據(jù)本發(fā)明一可選實(shí)施方式,如果所述目標(biāo)設(shè)備的數(shù)量多于1個(gè),則針對(duì) 各目標(biāo)設(shè)備分別執(zhí)行所述數(shù)據(jù)分享的方法。
本發(fā)明還提供了一種數(shù)據(jù)分享的裝置,設(shè)置于源設(shè)備,該裝置包括:
緩存管理模塊,用于在所述源設(shè)備獲取到所述目標(biāo)設(shè)備的信息后,針對(duì)所述目標(biāo)設(shè)備創(chuàng)建緩存隊(duì)列;
界面組合模塊,用于將要分享給所述目標(biāo)設(shè)備的數(shù)據(jù)繪制到所述目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列;
數(shù)據(jù)傳輸模塊,用于通過所述源設(shè)備與所述目標(biāo)設(shè)備之間的連接,將所述緩存隊(duì)列中數(shù)據(jù)對(duì)應(yīng)的傳輸流發(fā)送給所述目標(biāo)設(shè)備。
根據(jù)本發(fā)明一可選實(shí)施方式,該裝置還包括:連接建立模塊,用于建立所述源設(shè)備與所述目標(biāo)設(shè)備之間的連接,從而獲取所述目標(biāo)設(shè)備的信息。
根據(jù)本發(fā)明一可選實(shí)施方式,所述緩存管理模塊在針對(duì)所述目標(biāo)設(shè)備創(chuàng)建緩存隊(duì)列時(shí),具體執(zhí)行:
創(chuàng)建MediaSource,在MediaSource中創(chuàng)建BufferQueue;以及,創(chuàng)建與所述目標(biāo)設(shè)備對(duì)應(yīng)的RemotedisplayDevice;
所述界面組合模塊將所述BufferQueue作為所述RemotedisplayDevice的數(shù)據(jù)源。
根據(jù)本發(fā)明一可選實(shí)施方式,所述連接建立模塊,具體用于:
在局域網(wǎng)內(nèi)廣播所述源設(shè)備的IP地址和指定端口信息,通過所述指定端口監(jiān)聽到所述目標(biāo)設(shè)備發(fā)送的連接請(qǐng)求后,與所述目標(biāo)設(shè)備建立連接;或者,
向服務(wù)器注冊(cè)所述源設(shè)備的IP地址和指定端口信息,通過所述指定端口接收到所述目標(biāo)設(shè)備發(fā)送的連接請(qǐng)求后,與所述目標(biāo)設(shè)備建立連接,其中所述目標(biāo)設(shè)備從所述服務(wù)器獲取所述源設(shè)備的IP地址和指定端口信息;或者,
通過wifi發(fā)現(xiàn)機(jī)制與所述目標(biāo)設(shè)備建立連接。
根據(jù)本發(fā)明一可選實(shí)施方式,所述緩存管理模塊,還用于將針對(duì)所述目標(biāo)設(shè)備創(chuàng)建的緩存隊(duì)列的信息作為參數(shù)傳遞給所述界面組合模塊;
所述界面組合模塊,具體用于獲取要分享給所述目標(biāo)設(shè)備的數(shù)據(jù)后,將要分享給所述目標(biāo)設(shè)備的數(shù)據(jù)繪制到所述目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
根據(jù)本發(fā)明一可選實(shí)施方式,如果要分享給所述目標(biāo)設(shè)備的數(shù)據(jù)為某窗口的數(shù)據(jù),則所述界面組合模塊從所述窗口對(duì)應(yīng)的緩存中獲取所述窗口的數(shù)據(jù),將所述窗口的數(shù)據(jù)繪制到所述目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列;或者,
如果要分享給所述目標(biāo)設(shè)備的數(shù)據(jù)為屏幕的數(shù)據(jù),則所述界面組合模塊從所述屏幕所包含各窗口對(duì)應(yīng)的緩存中獲取各窗口的數(shù)據(jù),依據(jù)各窗口在屏幕上的位置信息,將各窗口的數(shù)據(jù)繪制到所述目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
根據(jù)本發(fā)明一可選實(shí)施方式,該裝置還包括:流化處理模塊,具體用于對(duì)所述緩存隊(duì)列中的數(shù)據(jù)進(jìn)行編碼,得到ES;對(duì)所述ES進(jìn)行分組形成PES;將所述PES進(jìn)行重新封裝形成TS。
根據(jù)本發(fā)明一可選實(shí)施方式,該裝置還包括:
連接建立模塊,用于在建立所述連接的過程中進(jìn)一步協(xié)商所述源設(shè)備與所述目標(biāo)設(shè)備之間反饋通道的信息;
反饋接收模塊,用于通過所述反饋通道接收所述目標(biāo)設(shè)備反饋的傳輸流接收狀況;
所述流化處理模塊,還用于依據(jù)所述傳輸流接收狀況,調(diào)整對(duì)所述目標(biāo)設(shè)備所對(duì)應(yīng)緩存隊(duì)列中數(shù)據(jù)的編碼。
根據(jù)本發(fā)明一可選實(shí)施方式,所述傳輸流接收狀況包括丟包率;
所述流化處理模塊在調(diào)整對(duì)所述目標(biāo)設(shè)備所對(duì)應(yīng)緩存隊(duì)列中數(shù)據(jù)的編碼時(shí),具體用于調(diào)整對(duì)所述目標(biāo)設(shè)備所對(duì)應(yīng)緩存隊(duì)列中數(shù)據(jù)的編碼方式,或者,提高或降低對(duì)所述目標(biāo)設(shè)備所對(duì)應(yīng)緩存隊(duì)列中數(shù)據(jù)的編碼率。
根據(jù)本發(fā)明一可選實(shí)施方式,所述緩存管理模塊,還用于所述源設(shè)備與所述目標(biāo)設(shè)備之間的連接斷開后,刪除所述目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
根據(jù)本發(fā)明一可選實(shí)施方式,所述源設(shè)備為云盒,所述目標(biāo)設(shè)備為用戶端機(jī)頂盒。
根據(jù)本發(fā)明一可選實(shí)施方式,如果所述目標(biāo)設(shè)備的數(shù)量多于1個(gè),則所述緩存管理模塊針對(duì)各目標(biāo)設(shè)備分別創(chuàng)建緩存隊(duì)列。
由以上技術(shù)方案可以看出,本發(fā)明中,源設(shè)備在獲取目標(biāo)設(shè)備的信息后, 能夠針對(duì)該目標(biāo)設(shè)備動(dòng)態(tài)創(chuàng)建緩存隊(duì)列,將要分享給該目標(biāo)設(shè)備的數(shù)據(jù)繪制到該緩存隊(duì)列中,并進(jìn)一步將緩存隊(duì)列中的數(shù)據(jù)對(duì)應(yīng)的傳輸流發(fā)送至目標(biāo)設(shè)備,從而不再局限于屏幕數(shù)據(jù)以截屏方式的固定且單一的分享,能夠滿足用戶的不同分享需求,例如,將窗口數(shù)據(jù)作為待分享數(shù)據(jù)分享至目標(biāo)設(shè)備;再例如,將不同的待分享數(shù)據(jù)分別繪制到針對(duì)不同目標(biāo)設(shè)備創(chuàng)建的緩存隊(duì)列,以分享。
【附圖說明】
圖1為現(xiàn)有技術(shù)中實(shí)現(xiàn)的屏幕數(shù)據(jù)同步的效果示意圖;
圖2為本發(fā)明實(shí)施例提供的主要方法流程圖;
圖3為本發(fā)明實(shí)施例提供的通過IP網(wǎng)絡(luò)建立RTSP服務(wù)的方法流程圖;
圖4為本發(fā)明實(shí)施例提供的源設(shè)備分享窗口數(shù)據(jù)的示意圖;
圖5為本發(fā)明實(shí)施例提供的目標(biāo)設(shè)備顯示分享的窗口數(shù)據(jù)的示意圖;
圖6為本發(fā)明實(shí)施例提供的分享數(shù)據(jù)的交互示意圖;
圖7為本發(fā)明實(shí)施例提供的裝置結(jié)構(gòu)圖。
【具體實(shí)施方式】
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。
圖2為本發(fā)明實(shí)施例提供的主要方法流程圖,如圖2中所示,該方法可以包括以下步驟:
在201中,源設(shè)備獲取到目標(biāo)設(shè)備的信息后,針對(duì)該目標(biāo)設(shè)備創(chuàng)建緩存隊(duì)列。
源設(shè)備要分享數(shù)據(jù)給目標(biāo)設(shè)備時(shí),會(huì)與目標(biāo)設(shè)備建立連接,該建立的連接可以是RTSP(Real Time Streaming Protocol,實(shí)時(shí)流傳輸協(xié)議)服務(wù)的連接(后續(xù)簡(jiǎn)稱為RTSP連接),也可以是HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)服務(wù)等其他傳輸協(xié)議服務(wù)的連接。在建立連接的過程中, 源設(shè)備可以獲取到目標(biāo)設(shè)備的信息,諸如目標(biāo)設(shè)備標(biāo)識(shí)、地址信息、端口信息等等。源設(shè)備針對(duì)目標(biāo)設(shè)備單獨(dú)創(chuàng)建一個(gè)緩存隊(duì)列,該緩存隊(duì)列用于緩存向?qū)?yīng)目標(biāo)設(shè)備分享的數(shù)據(jù)。
另外,在建立連接時(shí),可以通過IP網(wǎng)絡(luò)建立連接,也可以通過wifi網(wǎng)絡(luò)建立連接。對(duì)于通過IP網(wǎng)絡(luò)建立連接的方式將在后續(xù)實(shí)施例中詳細(xì)描述。
在202中,源設(shè)備將要分享給目標(biāo)設(shè)備的數(shù)據(jù)繪制到目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
在本步驟中,可以將針對(duì)目標(biāo)設(shè)備創(chuàng)建的緩存隊(duì)列的信息作為參數(shù)傳遞給界面組合模塊,由界面組合模塊獲取要分享給目標(biāo)設(shè)備的數(shù)據(jù)后,將要分享給目標(biāo)設(shè)備的數(shù)據(jù)繪制到目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
源設(shè)備分享數(shù)據(jù)給目標(biāo)設(shè)備的數(shù)據(jù)可以包括但不限于以下兩種情況:
第一種情況:用戶要分享源設(shè)備中某個(gè)窗口的數(shù)據(jù)給目標(biāo)設(shè)備,例如用戶通過點(diǎn)擊某個(gè)窗口中的分享選項(xiàng)觸發(fā)針對(duì)該窗口數(shù)據(jù)的分享。這種情況下,界面組合模塊可以從該窗口對(duì)應(yīng)的緩存中獲取該窗口的數(shù)據(jù),在源設(shè)備中每個(gè)窗口都存在對(duì)應(yīng)的緩存用以存儲(chǔ)窗口數(shù)據(jù),界面組合模塊依據(jù)用戶操作所對(duì)應(yīng)的窗口標(biāo)識(shí)找到該窗口對(duì)應(yīng)的緩存,從該緩存中獲取數(shù)據(jù),該數(shù)據(jù)就是要分享給目標(biāo)設(shè)備的數(shù)據(jù)。然后,界面組合模塊將該窗口的數(shù)據(jù)繪制到目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
第二種情況:用戶要分享源設(shè)備中屏幕的數(shù)據(jù)給目標(biāo)設(shè)備,例如用戶通過點(diǎn)擊屏幕的分享選項(xiàng)(該選項(xiàng)可以通過點(diǎn)擊虛擬按鈕或者物理按鈕后出現(xiàn),或者在某菜單中出現(xiàn))觸發(fā)針對(duì)該窗口數(shù)據(jù)的分享。這種情況下,界面組合模塊可以從屏幕所包含各窗口對(duì)應(yīng)的緩存中獲取各窗口的數(shù)據(jù),依據(jù)各窗口在屏幕上的位置信息,將各窗口的數(shù)據(jù)繪制到目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。在屏幕上可能包含一個(gè)窗口的數(shù)據(jù),也可能包含多個(gè)窗口的數(shù)據(jù),界面組合模塊從屏幕所包含窗口對(duì)應(yīng)的緩存中獲取各窗口的數(shù)據(jù)。為了保證目標(biāo)設(shè)備與源設(shè)備在屏幕上展現(xiàn)的各窗口位置保持一致,界面組合模塊依據(jù)各窗口在屏幕上的位置信息,繪制各窗口的數(shù)據(jù)至目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
需要說明的是,除了用戶在源設(shè)備上進(jìn)行操作的方式觸發(fā)源設(shè)備分享數(shù)據(jù)至目標(biāo)設(shè)備之外,還可以采用其他方式,諸如向源設(shè)備發(fā)送控制信號(hào)的方式。
在203中,對(duì)緩存隊(duì)列中的數(shù)據(jù)進(jìn)行流化處理。
緩存隊(duì)列中的數(shù)據(jù)通常為原始數(shù)據(jù),例如原始視頻數(shù)據(jù)、音頻數(shù)據(jù)、文本數(shù)據(jù)等,對(duì)原始數(shù)據(jù)進(jìn)行編碼,得到ES(elemental stream,基本數(shù)據(jù)流)。然后對(duì)ES進(jìn)行分組形成PES(elemental stream,分組基本流),PES是ES流經(jīng)過PES打包器處理后形成的數(shù)據(jù)流,在這個(gè)過程中完成了將ES分組、進(jìn)行PES打包等操作。最后對(duì)PES進(jìn)行重新封裝形成TS(transport stream,傳輸流),TS由定長(zhǎng)的TS包構(gòu)成,TS包是對(duì)PES包的重新封裝,PES包的包頭信息仍然存在于TS包中。
在204中,源設(shè)備通過與目標(biāo)設(shè)備之間的連接,將流化處理后得到的TS發(fā)送給目標(biāo)設(shè)備。
上述步驟202~204是在分享數(shù)據(jù)過程中持續(xù)執(zhí)行的,使得源設(shè)備的TS能夠持續(xù)發(fā)送至目標(biāo)設(shè)備。
另外,需要說明的是,在源設(shè)備與目標(biāo)設(shè)備之間連接建立的過程中,除了協(xié)商上述TS的發(fā)送通道之外,還可以進(jìn)一步協(xié)商源設(shè)備與目標(biāo)設(shè)備之間的反饋通道的信息。目標(biāo)設(shè)備可以通過該反饋通道向源設(shè)備反饋TS接收狀況,例如丟碼率。源設(shè)備可以依據(jù)TS接收狀況,調(diào)整對(duì)該目標(biāo)設(shè)備所對(duì)應(yīng)緩存隊(duì)列中數(shù)據(jù)的流化處理,例如相應(yīng)提高或降低數(shù)據(jù)的編碼率。
當(dāng)數(shù)據(jù)分享結(jié)束,該分享結(jié)束可以由源設(shè)備或目標(biāo)設(shè)備一方的用戶操作觸發(fā),例如源設(shè)備或目標(biāo)設(shè)備的用戶選擇結(jié)束分享的選項(xiàng),則結(jié)束分享,斷開源設(shè)備與目標(biāo)設(shè)備之間的連接。也可以在分享的數(shù)據(jù)結(jié)束后自動(dòng)觸發(fā),例如某個(gè)窗口在播放視頻,當(dāng)視頻播放結(jié)束后自動(dòng)結(jié)束分享,斷開源設(shè)備與目標(biāo)設(shè)備之間的連接。那么在205中,源設(shè)備與目標(biāo)設(shè)備之間的連接斷開,源設(shè)備刪除該目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
通過上述方式,源設(shè)備可以分享數(shù)據(jù)給多個(gè)目標(biāo)設(shè)備,只需針對(duì)各目標(biāo) 設(shè)備分別創(chuàng)建緩存隊(duì)列,并且分享給多個(gè)目標(biāo)設(shè)備的數(shù)據(jù)可以相同,也可以不同。
本發(fā)明所涉及的設(shè)備可以是PC(個(gè)人計(jì)算機(jī))設(shè)備、筆記本電腦、智能手機(jī)、平板電腦、智能電視、PDA(個(gè)人數(shù)字助理)或其他計(jì)算機(jī)系統(tǒng)。這些設(shè)備在架構(gòu)上都包含一些基本組件,如總線、處理系統(tǒng)、存儲(chǔ)系統(tǒng)、一個(gè)或多個(gè)輸入/輸出系統(tǒng)、和通信接口等??偩€可以包括一個(gè)或多個(gè)導(dǎo)線,用來(lái)實(shí)現(xiàn)設(shè)備各組件之間的通信。處理系統(tǒng)包括各類型的用來(lái)執(zhí)行指令、處理進(jìn)程或線程的處理器或微處理器。存儲(chǔ)系統(tǒng)可以包括存儲(chǔ)動(dòng)態(tài)信息的隨機(jī)訪問存儲(chǔ)器(RAM)等動(dòng)態(tài)存儲(chǔ)器,和存儲(chǔ)靜態(tài)信息的只讀存儲(chǔ)器(ROM)等靜態(tài)存儲(chǔ)器,以及包括磁或光學(xué)記錄介質(zhì)與相應(yīng)驅(qū)動(dòng)的大容量存儲(chǔ)器。輸入系統(tǒng)供用戶輸入信息到設(shè)備,如鍵盤、鼠標(biāo)、手寫筆、聲音識(shí)別系統(tǒng)、觸摸屏幕或生物測(cè)定系統(tǒng)等。輸出系統(tǒng)包括用來(lái)輸出信息的顯示器、打印機(jī)、揚(yáng)聲器等。通信接口用來(lái)使設(shè)備與其它設(shè)備進(jìn)行通信。通信接口之間可通過有線連接、無(wú)線連接、或光連接連接到網(wǎng)絡(luò)中,使設(shè)備間能夠通過網(wǎng)絡(luò)實(shí)現(xiàn)相互間的通信。網(wǎng)絡(luò)可以包括局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)、因特網(wǎng)等或者這些網(wǎng)絡(luò)的結(jié)合等。設(shè)備上均包含有用來(lái)管理系統(tǒng)資源、控制其它程序運(yùn)行的操作系統(tǒng)軟件,以及用來(lái)實(shí)現(xiàn)特定功能模塊的應(yīng)用軟件。
另外,本發(fā)明所涉及的分享數(shù)據(jù)可以是文本數(shù)據(jù),也可以是諸如視頻、音頻、圖像等媒體數(shù)據(jù),也可以是諸如HTML數(shù)據(jù)等超文本數(shù)據(jù)。
下面通過一個(gè)具體的實(shí)施例對(duì)上述方法進(jìn)行詳細(xì)描述。在該實(shí)施例中,以通過IP網(wǎng)絡(luò)建立RTSP服務(wù)的連接方式,從設(shè)備1分享數(shù)據(jù)給設(shè)備2為例,如圖3所示,該方法可以具體包括以下步驟:
假設(shè)設(shè)備1當(dāng)前屏幕的狀況如圖1中源設(shè)備的屏幕狀況,假設(shè)用戶想分享最上面一個(gè)窗口(窗口3)的數(shù)據(jù)給設(shè)備2,用戶通過一些操作(諸如長(zhǎng)按該窗口)在菜單中出現(xiàn)數(shù)據(jù)分享功能的選項(xiàng),如圖4中所示,用戶選擇“分享”的選項(xiàng)后,開始與目標(biāo)設(shè)備建立連接。在301中,設(shè)備1通過在局域網(wǎng)內(nèi)廣播設(shè)備1的IP地址和指定端口信息,該指定端口用于與目標(biāo)設(shè)備建立 RTSP連接。局域網(wǎng)內(nèi)的設(shè)備2接收到該廣播后,向設(shè)備1發(fā)送連接請(qǐng)求,該連接請(qǐng)求中包含設(shè)備2的IP地址和端口信息,設(shè)備1回復(fù)響應(yīng)后,通過該握手過程建立設(shè)備1和設(shè)備2之間的RTSP連接。
如果設(shè)備1和設(shè)備2不在同一局域網(wǎng)內(nèi),那么上述在局域網(wǎng)內(nèi)廣播的方式就不再適用。這種情況下,設(shè)備1可以向服務(wù)器端注冊(cè)設(shè)備1的IP地址和指定端口信息。作為目標(biāo)設(shè)備的設(shè)備2可以從服務(wù)器端獲取設(shè)備1注冊(cè)的IP地址和指定端口信息。在此設(shè)備1向服務(wù)器端注冊(cè)時(shí),可以同時(shí)注冊(cè)一個(gè)口令,設(shè)備2通過該口令從服務(wù)器端獲取設(shè)備1注冊(cè)的IP地址和指定端口信息,沒有該口令的其他設(shè)備則無(wú)法獲取設(shè)備1注冊(cè)的IP地址和指定端口信息。然后,設(shè)備2通過上述IP地址和端口信息向設(shè)備1發(fā)送連接請(qǐng)求,設(shè)備1和設(shè)備2建立RTSP連接。
當(dāng)然,本實(shí)施例是以IP網(wǎng)絡(luò)的方式建立RTSP連接為例,設(shè)備1也可以通過wifi發(fā)現(xiàn)機(jī)制與設(shè)備2建立wifi連接后,進(jìn)行RTSP握手(協(xié)商雙方建立RTSP連接使用的端口號(hào)),從而建立RTSP連接。
在302中,設(shè)備1針對(duì)設(shè)備2創(chuàng)建BufferQueue(緩存隊(duì)列)。
以安卓系統(tǒng)為例,源設(shè)備可以創(chuàng)建MediaSource(數(shù)據(jù)源),在MediaSource中創(chuàng)建BufferQueue。另外,創(chuàng)建RemotedisplayDevice(遠(yuǎn)端顯示設(shè)備),該RemotedisplayDevice與目標(biāo)設(shè)備對(duì)應(yīng),例如綁定了目標(biāo)設(shè)備在與源設(shè)備建立RTSP連接時(shí)使用的IP地址和端口信息,將BufferQueue的信息作為參數(shù)傳遞給surfaceflinger(界面組合模塊),由surfaceflinger將該BufferQueue作為RemotedisplayDevice的數(shù)據(jù)源,surfaceflinger后續(xù)會(huì)將分享給該RemotedisplayDevice的數(shù)據(jù)寫到這個(gè)BufferQueue上。如果存在多個(gè)目標(biāo)設(shè)備,則針對(duì)各目標(biāo)設(shè)備分別創(chuàng)建BufferQueue和RemotedisplayDevice。
需要說明的是,當(dāng)應(yīng)用于其他操作系統(tǒng)時(shí),上述函數(shù)的名稱可能會(huì)發(fā)生變化,但功能和執(zhí)行的操作類似。
在303中,surfaceflinger依據(jù)用戶操作的窗口標(biāo)識(shí),從該窗口對(duì)應(yīng)的緩存中獲取數(shù)據(jù)并繪制到步驟302創(chuàng)建的BufferQueue。
surfaceflinger服務(wù)在啟動(dòng)的過程中,會(huì)創(chuàng)建兩個(gè)線程,其中一個(gè)用來(lái)監(jiān)控控制臺(tái)事件,另一個(gè)線程用來(lái)渲染UI。surfaceflinger在渲染UI時(shí),是將顯示于屏幕的各窗口對(duì)應(yīng)的緩存中獲取數(shù)據(jù)并繪制到屏幕的幀緩沖區(qū)。在本發(fā)明中,surfaceflinger一方面能夠確定用戶分享操作對(duì)應(yīng)的窗口標(biāo)識(shí),從而獲取要分享的數(shù)據(jù),另一方面能夠復(fù)用surfaceflinger的繪制功能,使其能夠繪制窗口數(shù)據(jù)到RemotedisplayDevice的BufferQueue,而不僅僅是繪制窗口數(shù)據(jù)到本地的displayDevice。
如果要分享的數(shù)據(jù)是屏幕的數(shù)據(jù),則如果要達(dá)到設(shè)備1與設(shè)備2的屏幕數(shù)據(jù)一致,除了屏幕中各窗口的數(shù)據(jù)一致之外,各窗口在屏幕中的位置也需要一致。在這種需求下,surfaceflinger需要依據(jù)設(shè)備1屏幕上各窗口的位置來(lái)繪制BufferQueue,這里各窗口的位置不僅僅包括窗口在屏幕平面上的位置(諸如坐標(biāo)、窗口大小),還包括各窗口的Z-order(各窗口在垂直于屏幕的Z軸上的位置),各窗口的Z-order體現(xiàn)了各窗口的覆蓋關(guān)系。
在304中,設(shè)備1中的MediaPull(數(shù)據(jù)拉取模塊)從BufferQueue中取出數(shù)據(jù)送至Converter(編碼器)進(jìn)行編碼,得到ES;然后再由PES打包器進(jìn)行打包后形成PES;再由TS封裝模塊對(duì)PES進(jìn)行封裝后形成TS。
在305中,將BufferQueue中數(shù)據(jù)流化后形成的TS通過RTSP連接發(fā)送至RemotedisplayDevice對(duì)應(yīng)的設(shè)備2。
RemotedisplayDevice綁定了設(shè)備2與設(shè)備1在建立RTSP連接時(shí)使用的IP地址和端口號(hào),BufferQueue中數(shù)據(jù)流化后形成的TS會(huì)發(fā)送至該IP地址和端口號(hào)。
設(shè)備2就能夠接收到該TS,相應(yīng)地,設(shè)備2可以執(zhí)行上述流化處理的逆處理,即對(duì)TS進(jìn)行解封裝得到PES,然后對(duì)PES去掉包頭得到ES,再將ES進(jìn)行解碼后得到原始數(shù)據(jù)進(jìn)行顯示。這樣設(shè)備2上就能夠顯示設(shè)備1分享的窗口數(shù)據(jù),如圖5中所示。
在該實(shí)施例中,設(shè)備1與設(shè)備2在301中建立RTSP連接時(shí),除了協(xié)商發(fā)送TS的通道之外,還進(jìn)一步協(xié)商反饋通道,如圖6所示。該反饋通道用 于設(shè)備2周期性地反饋TS的接收狀況給設(shè)備1,例如設(shè)備2周期性地反饋TS的丟包率給設(shè)備1。設(shè)備1可以根據(jù)TS的接收狀況調(diào)整對(duì)設(shè)備2所對(duì)應(yīng)緩存隊(duì)列中數(shù)據(jù)的流化處理。例如,當(dāng)設(shè)備2反饋的丟包率超過第一閾值時(shí),降低數(shù)據(jù)的編碼率,當(dāng)設(shè)備2反饋的丟包率低于第二閾值時(shí),提高數(shù)據(jù)的編碼率,其中第一閾值大于第二閾值。
在306中,數(shù)據(jù)分享結(jié)束后,設(shè)備1與設(shè)備2之間的RTSP連接斷開,設(shè)備1刪除針對(duì)設(shè)備2創(chuàng)建的RemotedisplayDevice和MediaSource及其中的BufferQueue。
圖7為本發(fā)明實(shí)施例提供的裝置結(jié)構(gòu)圖,該裝置設(shè)置于源設(shè)備,如圖8中所示,該裝置可以包括:緩存管理模塊01、界面組合模塊02、流化處理模塊03和數(shù)據(jù)傳輸模塊04,還可以包括連接建立模塊05和反饋接收模塊06。
在源設(shè)備獲取到目標(biāo)設(shè)備的信息后,緩存管理模塊01負(fù)責(zé)針對(duì)目標(biāo)設(shè)備創(chuàng)建緩存隊(duì)列。其中,目標(biāo)設(shè)備的信息是源設(shè)備在于目標(biāo)設(shè)備建立連接的過程中獲取的,連接建立模塊05負(fù)責(zé)建立源設(shè)備與目標(biāo)設(shè)備之間的連接,從而獲取到目標(biāo)設(shè)備的信息。
源設(shè)備要分享數(shù)據(jù)給目標(biāo)設(shè)備時(shí),連接建立模塊05會(huì)與目標(biāo)設(shè)備建立連接,該建立的連接可以是RTSP連接,也可以是HTTP服務(wù)等其他傳輸協(xié)議服務(wù)的連接。在建立連接的過程中,源設(shè)備可以獲取到目標(biāo)設(shè)備的信息,諸如目標(biāo)設(shè)備標(biāo)識(shí)、地址信息、端口信息等等。
連接建立模塊05在建立連接時(shí),可以通過IP網(wǎng)絡(luò)建立連接,也可以通過wifi網(wǎng)絡(luò)建立連接。
當(dāng)通過IP網(wǎng)絡(luò)建立連接時(shí),如果源設(shè)備和目標(biāo)設(shè)備屬于同一局域網(wǎng)內(nèi),則連接建立模塊05可以在局域網(wǎng)內(nèi)廣播源設(shè)備的IP地址和指定端口信息,目標(biāo)設(shè)備接收到該廣播后,向源設(shè)備發(fā)送連接請(qǐng)求,該連接請(qǐng)求攜帶目標(biāo)設(shè)備的IP地址和指定端口信息,其中指定端口是用于建立RTSP連接的端口。當(dāng)源設(shè)備的連接建立模塊05通過指定端口監(jiān)聽到目標(biāo)設(shè)備發(fā)送的連接請(qǐng)求后,與目標(biāo)設(shè)備建立連接。
如果源設(shè)備與目標(biāo)設(shè)備不屬于同一局域網(wǎng),則源設(shè)備的連接建立模塊05可以向服務(wù)器注冊(cè)源設(shè)備的IP地址和指定端口信息。目標(biāo)設(shè)備從該服務(wù)器獲取源設(shè)備注冊(cè)的IP地址和指定端口信息后,可以向該指定端口發(fā)送連接請(qǐng)求,該連接請(qǐng)求中攜帶目標(biāo)設(shè)備的IP地址和指定端口信息。另外,源設(shè)備在向服務(wù)器注冊(cè)時(shí),可以提供一個(gè)口令,目標(biāo)設(shè)備只用向服務(wù)器提供同樣的口令,才能夠獲取源設(shè)備注冊(cè)的IP地址和指定端口信息。當(dāng)連接建立模塊05通過指定端口接收到目標(biāo)設(shè)備發(fā)送的連接請(qǐng)求后,與目標(biāo)設(shè)備建立連接。
界面組合模塊02負(fù)責(zé)將要分享給目標(biāo)設(shè)備的數(shù)據(jù)繪制到目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
具體地,緩存管理模塊01將針對(duì)目標(biāo)設(shè)備創(chuàng)建的緩存隊(duì)列的信息作為參數(shù)傳遞給界面組合模塊02。界面組合模塊02獲取要分享給目標(biāo)設(shè)備的數(shù)據(jù)后,將要分享給目標(biāo)設(shè)備的數(shù)據(jù)繪制到目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。在Android系統(tǒng)中,界面組合模塊02可以體現(xiàn)為surfaceflinger,針對(duì)目標(biāo)設(shè)備創(chuàng)建緩存隊(duì)列體現(xiàn)為:在MediaSource中創(chuàng)建BufferQueue,另外,創(chuàng)建RemotedisplayDevice,該RemotedisplayDevice與目標(biāo)設(shè)備對(duì)應(yīng),例如綁定了目標(biāo)設(shè)備在與源設(shè)備建立RTSP連接時(shí)使用的IP地址和端口信息。將BufferQueue的信息作為參數(shù)傳遞給surfaceflinger,由surfaceflinger將該BufferQueue作為RemotedisplayDevice的數(shù)據(jù)源,surfaceflinger后續(xù)會(huì)將分享給該RemotedisplayDevice的數(shù)據(jù)寫到這個(gè)BufferQueue上。當(dāng)應(yīng)用于其他操作系統(tǒng)時(shí),上述函數(shù)的名稱可能會(huì)發(fā)生變化,但功能和執(zhí)行的操作類似。
如果要分享給目標(biāo)設(shè)備的數(shù)據(jù)為某窗口的數(shù)據(jù),則界面組合模塊02可以從窗口對(duì)應(yīng)的緩存中獲取窗口的數(shù)據(jù),將窗口的數(shù)據(jù)繪制到目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
如果要分享給目標(biāo)設(shè)備的數(shù)據(jù)為屏幕的數(shù)據(jù),如果要達(dá)到設(shè)備1與設(shè)備2的屏幕數(shù)據(jù)一致,除了屏幕中各窗口的數(shù)據(jù)一致之外,各窗口在屏幕中的位置也需要一致,因此界面組合模塊02可以從屏幕所包含各窗口對(duì)應(yīng)的緩存中獲取各窗口的數(shù)據(jù),依據(jù)各窗口在屏幕上的位置信息,將各窗口的數(shù)據(jù)繪制到目標(biāo) 設(shè)備對(duì)應(yīng)的緩存隊(duì)列。這里各窗口的位置不僅僅包括窗口在屏幕平面上的位置(諸如坐標(biāo)、窗口大小),還包括各窗口的Z-order(各窗口在垂直于屏幕的Z軸上的位置),各窗口的Z-order體現(xiàn)了各窗口的覆蓋關(guān)系。
流化處理模塊03負(fù)責(zé)對(duì)緩存隊(duì)列中的數(shù)據(jù)進(jìn)行流化處理。具體包括:對(duì)緩存隊(duì)列中的數(shù)據(jù)進(jìn)行編碼,得到ES;對(duì)ES進(jìn)行分組形成PES;將PES進(jìn)行重新封裝形成TS。
數(shù)據(jù)傳輸模塊04負(fù)責(zé)通過源設(shè)備與目標(biāo)設(shè)備之間的連接,將流化處理后得到的傳輸流發(fā)送給目標(biāo)設(shè)備。
更進(jìn)一步地,連接建立模塊05在建立源設(shè)備與目標(biāo)設(shè)備之間連接的過程中,可以進(jìn)一步協(xié)商源設(shè)備與目標(biāo)設(shè)備之間反饋通道的信息。目標(biāo)設(shè)備可以通過該反饋通道反饋傳輸流的接收狀況,反饋接收模塊06可以通過反饋通道接收目標(biāo)設(shè)備反饋的傳輸流接收狀況。流化處理模塊03可以依據(jù)傳輸流接收狀況,調(diào)整對(duì)目標(biāo)設(shè)備所對(duì)應(yīng)緩存隊(duì)列中數(shù)據(jù)的流化處理。
上述傳輸流接收狀況可以包括丟包率,流化處理模塊03在調(diào)整對(duì)目標(biāo)設(shè)備所對(duì)應(yīng)緩存隊(duì)列中數(shù)據(jù)的流化處理時(shí),可以采用提高或降低對(duì)目標(biāo)設(shè)備所對(duì)應(yīng)緩存隊(duì)列中數(shù)據(jù)的編碼率的方式。例如,當(dāng)目標(biāo)設(shè)備反饋的丟包率超過第一閾值時(shí),降低數(shù)據(jù)的編碼率,當(dāng)目標(biāo)設(shè)備反饋的丟包率低于第二閾值時(shí),提高數(shù)據(jù)的編碼率,其中第一閾值大于第二閾值。
當(dāng)數(shù)據(jù)分享結(jié)束后,源設(shè)備與目標(biāo)設(shè)備之間的連接斷開,緩存管理模塊01刪除目標(biāo)設(shè)備對(duì)應(yīng)的緩存隊(duì)列。
下面舉幾個(gè)本發(fā)明所適用的應(yīng)用場(chǎng)景,但本發(fā)明并不限于以下應(yīng)用場(chǎng)景:
1)將智能手機(jī)、平板電腦等移動(dòng)設(shè)備上顯示的數(shù)據(jù)分享至智能電視。在有些情況下,用戶想將智能手機(jī)上的數(shù)據(jù),諸如正在播放的視頻、正在查看的網(wǎng)頁(yè)、甚至正在使用的應(yīng)用等,能夠“映射”到智能電視上進(jìn)行顯示,一方面顯示屏幕更大,另一方面也適合多人同時(shí)觀看。這種場(chǎng)景下,就可以將智能手機(jī)作為源設(shè)備,將智能電視作為目的設(shè)備,通過本發(fā)明提供的方式 將智能手機(jī)的屏幕數(shù)據(jù)或窗口數(shù)據(jù)分享至智能電視上進(jìn)行顯示。
2)將筆記本電腦、PC或者智能手機(jī)上顯示的數(shù)據(jù)分享至多個(gè)智能手機(jī)或平板電腦或筆記本電腦。在有些情況下,例如遠(yuǎn)程會(huì)議、遠(yuǎn)程教學(xué)等,就有將一個(gè)終端設(shè)備上的數(shù)據(jù)分享至多個(gè)終端設(shè)備上的需求,可以通過本發(fā)明提供的方式將一個(gè)終端設(shè)備上的屏幕數(shù)據(jù)或窗口數(shù)據(jù)分享至遠(yuǎn)端的多個(gè)終端設(shè)備上。
3)應(yīng)用于云盒的使用場(chǎng)景。云盒實(shí)際上是一個(gè)放置于云端的網(wǎng)絡(luò)機(jī)頂盒,用戶需要安裝的各類APP安裝于云盒,而非本地的機(jī)頂盒或電視中。用戶通過用戶端的機(jī)頂盒發(fā)送控制信號(hào)到云盒,云盒根據(jù)控制信號(hào),以視頻流的形式向用戶端的機(jī)頂盒推送視頻信號(hào)。通過本發(fā)明提供的方式,可以將云盒作為源設(shè)備,用戶端的機(jī)頂盒作為目標(biāo)設(shè)備,云盒與機(jī)頂盒基于IP網(wǎng)絡(luò)建立RTSP連接,從而實(shí)現(xiàn)數(shù)據(jù)分享。即便用戶端的機(jī)頂盒配置很簡(jiǎn)陋,無(wú)法安裝相應(yīng)的APP,也可以將云盒中安裝并運(yùn)行的APP的視頻數(shù)據(jù)分享至用戶端的機(jī)頂盒,從而實(shí)現(xiàn)在用戶端的機(jī)頂盒進(jìn)行該APP的視頻數(shù)據(jù)播放。
由以上描述可以看出,本發(fā)明提供的方法和裝置可以具備以下優(yōu)點(diǎn):
1)本發(fā)明中,源設(shè)備在獲取目標(biāo)設(shè)備的信息后,能夠針對(duì)目標(biāo)設(shè)備動(dòng)態(tài)創(chuàng)建緩存隊(duì)列,將要分享給目標(biāo)設(shè)備的數(shù)據(jù)繪制到該緩存隊(duì)列中,并進(jìn)一步將緩存隊(duì)列中的數(shù)據(jù)對(duì)應(yīng)的傳輸流發(fā)送至目標(biāo)設(shè)備,從而不再局限于屏幕數(shù)據(jù)的分享,對(duì)于窗口數(shù)據(jù)同樣能夠分享至目標(biāo)設(shè)備。
2)本發(fā)明可以實(shí)現(xiàn)基于IP網(wǎng)絡(luò)的RTSP連接建立,進(jìn)而實(shí)現(xiàn)設(shè)備間的數(shù)據(jù)分享,不再局限于wifi網(wǎng)絡(luò)。并且不僅能夠?qū)崿F(xiàn)局域網(wǎng)內(nèi)基于IP網(wǎng)絡(luò)的數(shù)據(jù)分享,還能夠?qū)崿F(xiàn)不在同一局域網(wǎng)內(nèi)基于IP網(wǎng)絡(luò)的數(shù)據(jù)分享。
3)能夠針對(duì)多個(gè)目標(biāo)設(shè)備實(shí)現(xiàn)數(shù)據(jù)分享,并且可以針對(duì)不同的目標(biāo)設(shè)備實(shí)現(xiàn)不同數(shù)據(jù)的分享。
在本發(fā)明所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,所述模塊的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外 的劃分方式。
另外,在本發(fā)明各個(gè)實(shí)施例中的各功能模塊可以集成在一個(gè)處理模塊中,也可以是各個(gè)模塊單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上模塊集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用硬件加軟件功能模塊的形式實(shí)現(xiàn)。
上述以軟件功能模塊的形式實(shí)現(xiàn)的集成的模塊,可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。上述軟件功能模塊存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)或處理器(processor)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(Read-Only Memory,ROM)、隨機(jī)存取存儲(chǔ)器(Random Access Memory,RAM)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。