本發(fā)明涉及互聯(lián)網(wǎng)應(yīng)用技術(shù)領(lǐng)域,特別涉及一種下載音視頻數(shù)據(jù)的方法及裝置。
背景技術(shù):
隨著技術(shù)的發(fā)展,廣播業(yè)務(wù)和移動業(yè)務(wù)開始漸漸融合,不同的多媒體內(nèi)容和業(yè)務(wù)在不同的網(wǎng)絡(luò)上傳輸,用戶希望可以利用不同的終端設(shè)備(如智能手機、平板電腦等)在不同時刻接入任何網(wǎng)絡(luò)時都能享受到這些服務(wù)。
相關(guān)技術(shù)中,采用Http流(Streaming)傳輸技術(shù)來實現(xiàn)多媒體數(shù)據(jù)的傳輸,即音頻或視頻輸入裝置將音/視頻輸入到服務(wù)器的媒體編碼器中,媒體編碼器將輸入的音/視頻進行編碼,生成TS(Transport Stream,傳輸流)文件輸出給流分段裝置進行分段后,發(fā)送給分發(fā)裝置,并生成該TS文件的索引文件,通過HTTP分發(fā)給客戶端。然而,目前的方案僅支持單線程下載,亟需解決這一技術(shù)問題。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種下載音視頻數(shù)據(jù)的方法及裝置,用以實現(xiàn)快速、便捷地下載音視頻數(shù)據(jù)的目的。
本發(fā)明提供一種下載音視頻數(shù)據(jù)的方法,包括:
啟動第一線程,由所述第一線程啟動任務(wù)管理模塊,獲取待下載音視頻數(shù)據(jù)的TS文件的多個分段各自的下載地址;
通過所述任務(wù)管理模塊將所述TS文件的多個分段分配給所述第一線程和第二線程,由所述第一線程和所述第二線程根據(jù)所述多個分段各自的下載地址下載所述多個分段。
在本發(fā)明一實施例中,所述方法還包括:
每當(dāng)所述第一線程和所述第二線程中的任意線程下載完成相應(yīng)的分段后,生成表示下載完成的標(biāo)記信息;
當(dāng)根據(jù)所述標(biāo)記信息確定下載完所述多個分段后,將所述多個分段發(fā)送給客戶端播放器,以播放所述多個分段。
在本發(fā)明一實施例中,所述標(biāo)記信息通過數(shù)組或鏈表的形式來記錄。
在本發(fā)明一實施例中,通過所述任務(wù)管理模塊將所述TS文件的多個分段分配給所述第一線程和第二線程,包括:
通過所述任務(wù)管理模塊將所述TS文件的多個分段中的至少一個分段分配給所述第一線程下載,并確定所述多個分段中是否存在未下載的分段;
若確定所述多個分段中存在未下載的分段,則啟動第二線程,將所述未下載的分段分配給所述第二線程進行下載。
在本發(fā)明一實施例中,所述第二線程包括一個或多個線程。
本發(fā)明還提供一種下載音視頻數(shù)據(jù)的裝置,包括:
獲取單元,用于啟動第一線程,由所述第一線程啟動任務(wù)管理模塊,獲取待下載音視頻數(shù)據(jù)的TS文件的多個分段各自的下載地址;
下載單元,用于通過所述任務(wù)管理模塊將所述TS文件的多個分段分配給所述第一線程和第二線程,由所述第一線程和所述第二線程根據(jù)所述多個分段各自的下載地址下載所述多個分段。
在本發(fā)明一實施例中,所述裝置還包括:
標(biāo)記信息生成單元,用于每當(dāng)所述第一線程和所述第二線程中的任意線程下載完成相應(yīng)的分段后,生成表示下載完成的標(biāo)記信息;
播放單元,用于當(dāng)根據(jù)所述標(biāo)記信息確定下載完所述多個分段后,將所述多個分段發(fā)送給客戶端播放器,以播放所述多個分段。
在本發(fā)明一實施例中,所述標(biāo)記信息通過數(shù)組或鏈表的形式來記錄。
在本發(fā)明一實施例中,所述下載單元還用于:
通過所述任務(wù)管理模塊將所述TS文件的多個分段中的至少一個分段分配給所述第一線程下載,并確定所述多個分段中是否存在未下載的分段;
若確定所述多個分段中存在未下載的分段,則啟動第二線程,將所述未下載的分段分配給所述第二線程進行下載。
在本發(fā)明一實施例中,所述第二線程包括一個或多個線程。
在本發(fā)明實施例中,啟動第一線程,由第一線程啟動任務(wù)管理模塊,獲取待下載音視頻數(shù)據(jù)的TS文件的多個分段各自的下載地址;隨后,通過任務(wù)管理模塊將TS文件的多個分段分配給第一線程和第二線程,由第一線程和第二線程根據(jù)多個分段各自的下載地址下載多個分段。由此可見,本發(fā)明實施例通過任務(wù)管理模塊的線程分配,利用第一線程和第二線程下載TS文件的多個分段,實現(xiàn)快速、便捷地下載音視頻數(shù)據(jù)的目的。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。
附圖說明
附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
圖1所示為本發(fā)明一實施例中下載音視頻數(shù)據(jù)的方法的流程圖;
圖2所示為本發(fā)明另一實施例中下載音視頻數(shù)據(jù)的方法的流程圖;
圖3所示為本發(fā)明一實施例中下載音視頻數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖;以及
圖4所示為本發(fā)明另一實施例中下載音視頻數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
如圖1所示為本發(fā)明一實施例中下載音視頻數(shù)據(jù)的方法的流程圖,該方法可以應(yīng)用在移動終端(如智能手機、平板電腦等),該方法可以包括以下步驟S11-S12。
步驟S11,啟動第一線程,由第一線程啟動任務(wù)管理模塊,獲取待下載音視頻數(shù)據(jù)的TS文件的多個分段各自的下載地址。
在該步驟中,TS文件是指音視頻內(nèi)容文件,其格式為TS格式。如前文介紹,目前采用Http流(Streaming)傳輸技術(shù)來實現(xiàn)多媒體數(shù)據(jù)的傳輸,即音頻或視頻輸入裝置將音/視頻輸入到服務(wù)器的媒體編碼器中,媒體編碼器將輸入的音/視頻進行編碼,生成TS文件輸出給流分段裝置進行分段后,發(fā)送給分發(fā)裝置,并生成該TS文件的索引文件,通過HTTP分發(fā)給客戶端。
由于HTTP協(xié)議本質(zhì)上屬于文本傳輸協(xié)議,并不適合實時的流媒體傳輸。因此,為了便于實現(xiàn)直播回放(針對時移業(yè)務(wù))和邊下載邊看的功能,通常將節(jié)目內(nèi)容在物理或邏輯上分成許多的小分段??蛻舳烁鶕?jù)節(jié)目索引(Media Presentation Description,MPD)信息每次下載媒體文件的一個或多個分段進行播放,其中,MPD信息中包含有媒體分段的索引等信息,然后對已下載的數(shù)據(jù)進行解碼播放??蛻舳隧樞蛳螺d并播放所述TS文件的分段文件。
例如,客戶端可以在需要播放該TS文件時,先獲取該TS文件的索引信息,還可以獲取該TS文件的MPD(Media Presentation Description,節(jié)目索引)信息,其中,索引信息和MPD信息文件可以在同一個文件中,也可以位于不同文件中,并且,為了不改變原始TS文件的格式,可以將TS文件的描述信息(包括關(guān)鍵幀索引信息和/或MPD信息)存放于另一個文件中。記錄TS文件的索引信息的文件稱為TS文件的索引文件。
步驟S12,通過任務(wù)管理模塊將TS文件的多個分段分配給第一線程和第二線程,由第一線程和第二線程根據(jù)多個分段各自的下載地址下載多個分段。
在本發(fā)明的可選實施例中,每當(dāng)?shù)谝痪€程和第二線程中的任意線程下載完成相應(yīng)的分段后,則生成表示下載完成的標(biāo)記信息;進而,當(dāng)根據(jù)標(biāo)記信息確定下載完多個分段后,將多個分段發(fā)送給客戶端播放器,以播放多個分段。這里的標(biāo)記信息可以通過數(shù)組或鏈表的形式來記錄。例如,任務(wù)管理模塊將數(shù)組中的元素置為1,數(shù)組中的一個元素對應(yīng)文件的一部分(即一個分段),也是一個線程任務(wù)。如果數(shù)組中為1的數(shù)組元素從頭連續(xù),則將從頭連續(xù)部分的數(shù)據(jù)流發(fā)送給客戶端播放器(player),或者通知player讀取。
上文步驟S12中通過任務(wù)管理模塊將TS文件的多個分段分配給第一線程和第二線程,本發(fā)明實施例提供了一種可選的方案,該方案包括以下步驟A1-A2。
步驟A1,通過任務(wù)管理模塊將TS文件的多個分段中的至少一個分段分配給第一線程下載,并確定多個分段中是否存在未下載的分段。
步驟A2,若確定多個分段中存在未下載的分段,則啟動第二線程,將未下載的分段分配給第二線程進行下載。
在該步驟中,第二線程可以是一個線程,也可以是多個線程。
以上介紹了圖1所示的實施例中各環(huán)節(jié)的多種實現(xiàn)方式,下面通過一具體實施例來詳細介紹本發(fā)明的播放音視頻數(shù)據(jù)的方法的實現(xiàn)過程。
如圖2所示為本發(fā)明另一實施例中下載音視頻數(shù)據(jù)的方法的流程圖,該方法可以應(yīng)用在移動終端,該方法可以包括以下步驟S21-S25。
步驟S21,監(jiān)控音視頻數(shù)據(jù)的下載事件,當(dāng)監(jiān)控到下載事件時,獲取預(yù)設(shè)的第一代理服務(wù)、第二代理服務(wù)以及待下載音視頻數(shù)據(jù)的源服務(wù)器的地址。
在該步驟中,本發(fā)明實施例預(yù)先定義一個類(包含set方法),該類繼承了音視頻數(shù)據(jù)的播放器的函數(shù)(或者方法),并且該類中還增加了用于下載音視頻數(shù)據(jù)的函數(shù),所述用于下載音視頻數(shù)據(jù)的函數(shù)中包括第一代理服務(wù)和第二代理服務(wù);從該類中獲取第一代理服務(wù)和第二代理服務(wù)。
步驟S22,利用第一代理服務(wù)和源服務(wù)器的地址,獲取待下載音視頻數(shù)據(jù)的m3u8文件,并由第一代理服務(wù)對m3u8文件進行解析,得到待下載音視頻數(shù)據(jù)的TS文件的源地址。
在該步驟中,set方法將源服務(wù)器的地址發(fā)送給第一代理服務(wù),set方法調(diào)用播放器的函數(shù),發(fā)送獲取待下載音視頻數(shù)據(jù)的m3u8文件的請求消息,其中,該請求消息中攜帶有第一代理服務(wù)的地址,由第一代理服務(wù)根據(jù)接收到的請求消息和源服務(wù)器的地址,從源服務(wù)器處獲取待下載音視頻數(shù)據(jù)的m3u8文件。具體地,第一代理服務(wù)根據(jù)源服務(wù)器的地址,向源服務(wù)器發(fā)送獲取待下載音視頻數(shù)據(jù)的m3u8文件的請求;第一代理服務(wù)接收源服務(wù)器返回的待下載音視頻數(shù)據(jù)的m3u8文件。
第一代理服務(wù)從源服務(wù)器處獲取待下載音視頻數(shù)據(jù)的m3u8文件之后,對m3u8文件進行解析,得到待下載音視頻數(shù)據(jù)的至少一個TS文件的源地址。隨后,第一代理服務(wù)將至少一個TS文件的源地址修改為第二代理服務(wù)的地址,得到修改后的m3u8文件;進而,第一代理服務(wù)將至少一個TS文件的源地址發(fā)送給第二代理服務(wù),并將修改后的m3u8文件發(fā)送給播放器的函數(shù),以由播放器的函數(shù)根據(jù)修改后的m3u8文件向第二代理服務(wù)發(fā)送獲取至少一個TS文件的請求。
步驟S23,利用第二代理服務(wù)和TS文件的源地址,在第二代理服務(wù)中啟動第一線程,由第一線程啟動任務(wù)管理模塊,獲取待下載音視頻數(shù)據(jù)的TS文件的多個分段各自的下載地址。
步驟S24,通過任務(wù)管理模塊將TS文件的多個分段中的至少一個分段分配給第一線程下載,并確定多個分段中是否存在未下載的分段。
步驟S25,若確定多個分段中存在未下載的分段,則啟動第二線程,將未下載的分段分配給第二線程進行下載。
在步驟S25之后,每當(dāng)?shù)谝痪€程和第二線程中的任意線程下載完成相應(yīng)的分段后,則生成表示下載完成的標(biāo)記信息;進而,當(dāng)根據(jù)標(biāo)記信息確定下載完多個分段后,將多個分段發(fā)送給客戶端播放器,以播放多個分段。這里的標(biāo)記信息可以通過數(shù)組或鏈表的形式來記錄。例如,任務(wù)管理模塊將數(shù)組中的元素置為1,數(shù)組中的一個元素對應(yīng)文件的一部分(即一個分段),也是一個線程任務(wù)。如果數(shù)組中為1的數(shù)組元素從頭連續(xù),則將從頭連續(xù)部分的數(shù)據(jù)流發(fā)送給客戶端播放器(player),或者通知player讀取。
需要說明的是,在實際應(yīng)用中,上述所有可選實施方式可以采用結(jié)合的方式任意組合,形成本發(fā)明的可選實施例,在此不再一一贅述。
對應(yīng)于上述實施例中的下載音視頻數(shù)據(jù)的方法,本發(fā)明還提供一種下載音視頻數(shù)據(jù)的裝置。如圖3所示為本發(fā)明一實施例中下載音視頻數(shù)據(jù)的裝置的結(jié)構(gòu)示意圖,包括:
獲取單元31,用于啟動第一線程,由所述第一線程啟動任務(wù)管理模塊,獲取待下載音視頻數(shù)據(jù)的TS文件的多個分段各自的下載地址;
下載單元32,用于通過所述任務(wù)管理模塊將所述TS文件的多個分段分配給所述第一線程和第二線程,由所述第一線程和所述第二線程根據(jù)所述多個分段各自的下載地址下載所述多個分段。
在本發(fā)明一實施例中,如圖4所示,上文圖3展示的裝置還可以包括:
標(biāo)記信息生成單元41,用于每當(dāng)所述第一線程和所述第二線程中的任意線程下載完成相應(yīng)的分段后,生成表示下載完成的標(biāo)記信息;
播放單元42,用于當(dāng)根據(jù)所述標(biāo)記信息確定下載完所述多個分段后,將所述多個分段發(fā)送給客戶端播放器,以播放所述多個分段。
在本發(fā)明一實施例中,所述標(biāo)記信息通過數(shù)組或鏈表的形式來記錄。
在本發(fā)明一實施例中,所述下載單元32還用于:
通過所述任務(wù)管理模塊將所述TS文件的多個分段中的至少一個分段分配給所述第一線程下載,并確定所述多個分段中是否存在未下載的分段;
若確定所述多個分段中存在未下載的分段,則啟動第二線程,將所述未下載的分段分配給所述第二線程進行下載。
在本發(fā)明一實施例中,所述第二線程包括一個或多個線程。
本發(fā)明實施例的上述裝置:啟動第一線程,由第一線程啟動任務(wù)管理模塊,獲取待下載音視頻數(shù)據(jù)的TS文件的多個分段各自的下載地址;隨后,通過任務(wù)管理模塊將TS文件的多個分段分配給第一線程和第二線程,由第一線程和第二線程根據(jù)多個分段各自的下載地址下載多個分段。由此可見,本發(fā)明實施例通過任務(wù)管理模塊的線程分配,利用第一線程和第二線程下載TS文件的多個分段,實現(xiàn)快速、便捷地下載音視頻數(shù)據(jù)的目的。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。