一種基于hls協(xié)議的視頻下載方法及其裝置制造方法
【專利摘要】本發(fā)明提供一種基于HLS協(xié)議的視頻下載方法及其裝置。所述方法包括:從云服務(wù)器獲取下載目標(biāo)視頻的m3u8文件;根據(jù)所述m3u8文件中的多個URL從云服務(wù)器下載所述目標(biāo)視頻對應(yīng)的多個視頻片段;將下載到的各個視頻片段分別存儲在本地磁盤中的指定位置上。本發(fā)明根據(jù)m3u8文件中的多個URL從云服務(wù)器下載對應(yīng)的多個視頻片段,以實(shí)現(xiàn)多個視頻片段的同時下載。節(jié)省了下載的等待時間,提高了下載速度。
【專利說明】一種基于HLS協(xié)議的視頻下載方法及其裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻通訊【技術(shù)領(lǐng)域】,尤其涉及一種基于HLS協(xié)議的視頻下載方法及其裝置。
【背景技術(shù)】
[0002]HLS (Http live streaming)協(xié)議是蘋果公司實(shí)現(xiàn)的基于超文本傳輸協(xié)議Http的流媒體傳輸協(xié)議,HLS協(xié)議將容量巨大的連續(xù)媒體數(shù)據(jù)進(jìn)行分段,分割為數(shù)量眾多的小文件進(jìn)行傳遞,迎合了網(wǎng)頁服務(wù)器的文件傳輸性,采用一個不斷更新的輕量級索引文件來控制分割后小媒體文件的下載和播放,可以實(shí)現(xiàn)流媒體的直播和點(diǎn)播。HLS協(xié)議在優(yōu)先考慮流暢性的前提下支持碼率的自動切換,目前被各大視頻網(wǎng)站廣泛使用。
[0003]通過HLS協(xié)議,視頻數(shù)據(jù)經(jīng)處理后分為視頻片段ts文件以及媒體數(shù)據(jù)索引m3u8文件,并存在于云服務(wù)器上。m3u8文件實(shí)際上只是一種文件組的組織形式,將視頻片段ts文件以播放列表的形式組織在一起以供多媒體播放器下載播放。
[0004]m3u8文件中通常包括多個視頻片段的多個統(tǒng)一資源定位符URL。多媒體播放器獲取m3u8文件后,進(jìn)而按照其中的URL下載對應(yīng)的視頻片段并進(jìn)行播放。也可以按照m3u8文件中的URL將視頻片段下載并存儲在本地,以供后續(xù)在本地進(jìn)行播放。對于HLS協(xié)議的視頻下載,是依據(jù)m3u8文件中URL的順序從云服務(wù)器逐個依次下載視頻片段,下載完成后是一個完整的視頻文件。由于是依照順序逐個下載,當(dāng)其中某一個視頻片段的下載出現(xiàn)問題時,將會影響其后的所有視頻片段的下載,因此總體下載速度較慢。
[0005]綜上,一種基于HLS協(xié)議的視頻下載方法及其裝置是亟待提供的。
【發(fā)明內(nèi)容】
[0006]有鑒于此,本發(fā)明提供一種基于HLS協(xié)議的視頻下載方法及其裝置,以解決依照順序逐個下載視頻片段所帶來的視頻下載速度慢的問題。
[0007]具體地,所述方法包括:
[0008]從云服務(wù)器獲取下載目標(biāo)視頻的m3u8文件;
[0009]根據(jù)所述m3u8文件中的多個URL從云服務(wù)器下載所述目標(biāo)視頻對應(yīng)的多個視頻片段;
[0010]將下載到的視頻片段存儲在本地磁盤中的指定位置上。
[0011]進(jìn)一步地,所述方法還包括:
[0012]根據(jù)視頻片段所在的指定位置的路徑,生成所述目標(biāo)視頻的本地m3u8文件。
[0013]進(jìn)一步地,所述方法還包括:
[0014]根據(jù)所述本地m3u8文件,將存儲在指定位置的視頻片段合并成所述目標(biāo)視頻。
[0015]進(jìn)一步地,所述方法還包括:
[0016]將所述m3u8文件保存到本地,并在所述m3u8文件中標(biāo)記已完成下載的URL,在重新啟動所述目標(biāo)視頻的下載時,根據(jù)本地保存的所述m3u8文件中未做標(biāo)記的URL繼續(xù)下載。
[0017]進(jìn)一步地,根據(jù)所述m3u8文件中的多個URL從云服務(wù)器下載所述目標(biāo)視頻對應(yīng)的多個視頻片段的過程包括:同時和所述云服務(wù)器建立多個并行的HTTP連接,依據(jù)所述多個并行的HTTP連接同時從云服務(wù)器下載多個視頻片段。
[0018]所述基于HLS協(xié)議的視頻下載裝置包括:
[0019]獲取模塊,用于從云服務(wù)器獲取下載目標(biāo)視頻的m3u8文件;
[0020]下載模塊,用于根據(jù)所述m3u8文件中的多個URL從云服務(wù)器下載所述目標(biāo)視頻對應(yīng)的多個視頻片段,并將下載到的視頻片段存儲在本地磁盤中的指定位置上。
[0021]進(jìn)一步地,所述裝置還包括:
[0022]生成模塊,用于根據(jù)視頻片段所在的指定位置的路徑,生成所述目標(biāo)視頻的本地m3u8文件。
[0023]進(jìn)一步地,所述裝置還包括:
[0024]合并模塊,用于根據(jù)所述本地m3u8文件,將存儲在指定位置的視頻片段合并成所述目標(biāo)視頻。
[0025]進(jìn)一步地,其特征在于,
[0026]所述下載模塊,進(jìn)一步用于將所述m3u8文件保存到本地,并在所述m3u8文件中標(biāo)記已完成下載的URL,在重新啟動所述目標(biāo)視頻的下載時,根據(jù)本地保存的所述m3u8文件中未做標(biāo)記的URL繼續(xù)下載。
[0027]進(jìn)一步地,所述下載模塊根據(jù)所述m3u8文件中的多個URL從云服務(wù)器下載所述目標(biāo)視頻對應(yīng)的多個視頻片段的過程包括:同時和所述云服務(wù)器建立多個并行的HTTP連接,依據(jù)所述多個并行的HTTP連接同時從云服務(wù)器下載多個視頻片段。
[0028]由以上描述可以看出,本發(fā)明根據(jù)m3u8文件中的多個URL從云服務(wù)器下載對應(yīng)的多個視頻片段,以實(shí)現(xiàn)多個視頻片段的同時下載。因此,即使在某一個視頻片段下載出錯時,也不影響其他視頻片段的下載,節(jié)省了下載的等待時間,提高了下載速度。
【專利附圖】
【附圖說明】
[0029]圖1是本發(fā)明一種實(shí)施方式中視頻下載方法流程示意圖;
[0030]圖2是本發(fā)明一種實(shí)施方式中目標(biāo)視頻的m3u8文件示意圖;
[0031]圖3是本發(fā)明一種實(shí)施方式中目標(biāo)視頻的本地m3u8文件示意圖;
[0032]圖4是本發(fā)明一種實(shí)施方式中視頻下載裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0033]針對現(xiàn)有技術(shù)中存在的下載速度較慢的問題,本發(fā)明提供一種基于HLS協(xié)議的視頻下載方法。為進(jìn)一步說明本發(fā)明,提供下列實(shí)施例:
[0034]實(shí)施例一
[0035]請參考圖1,本實(shí)施例的基于HLS協(xié)議的視頻下載方法包括以下步驟:
[0036]步驟101,從云服務(wù)器獲取下載目標(biāo)視頻的m3u8文件。
[0037]步驟102,根據(jù)該m3u8文件中的多個URL從云服務(wù)器下載目標(biāo)視頻對應(yīng)的多個視頻片段,并將下載到的各個視頻片段分別存儲在本地磁盤中的指定位置上。[0038]依據(jù)HLS協(xié)議,獲知用戶選定下載的目標(biāo)視頻后,首先從云服務(wù)器獲取該目標(biāo)視頻的m3u8文件,請參考圖2所示的m3u8文件示意圖,其中:
[0039]#EXTM3U:表示m3u文件頭,放在第一行。
[0040]#EXT-X-TARGETDURATION:表示指定的最大視頻片段時長,單位是秒。
[0041]#EXTINF:表示每個視頻片段ts文件的時長,僅對其后的URL有效,#EXTINF中指定的時長必須小于等于#EXT-X-TARGETDURATION中指定的時長。
[0042]http://218.30.13.36/sample_100k_l.ts:表不視頻片段 sample_100k_l 的媒體數(shù)據(jù)ts文件的URL。
[0043]#EXT-X-ENDLIST:表示 m3u8 文件的結(jié)束符。
[0044]通常來講,一個完整的視頻對應(yīng)一個m3u8文件,該m3u8文件中包括這個完整視頻的多個視頻片段的URL。本發(fā)明在獲取到上述m3u8文件后,根據(jù)該m3u8文件中各個視頻片段的URL從云服務(wù)器下載視頻片段,并將各個視頻片段分別存儲在指定的位置上。該指定的位置位于本地磁盤上,可以是下載的默認(rèn)位置,比如,默認(rèn)下載位置是:c:\users\Download,也可以是用戶自定義的位置。
[0045]由于本發(fā)明是根據(jù)m3u8文件中的多個URL從云服務(wù)器下載多個對應(yīng)的視頻片段,可以實(shí)現(xiàn)多個視頻片段的同時下載。仍以圖2所示的m3u8文件為例,可以同時下載上述m3u8文件中的視頻片段:sample_100k-l.ts和sample_100k_2.ts。如果其中某一個視頻片段下載出錯,比如:視頻片段sample_100k-2.ts下載出錯,那么在sample_100k_l.ts下載完成后會繼續(xù)下載接下來的視頻片段sample_100k-3.ts,也就是同時下載sample_100k-2.ts 和 sample_100k_3.ts。不會因?yàn)?sample_100k_2.ts 的下載出錯而導(dǎo)致sample_100k-3.ts無法下載。從而節(jié)省了等待時間,提高下載的速度。
[0046]實(shí)施例二
[0047]本實(shí)施例在實(shí)施例一的基礎(chǔ)上進(jìn)一步地限定:根據(jù)視頻片段所在的指定位置的路徑,生成所述目標(biāo)視頻的本地m3u8文件。
[0048]本實(shí)施例在視頻片段下載完成的同時,生成本地m3u8文件。優(yōu)選地,該本地m3u8文件的格式和云服務(wù)器的相同,不同的是本地m3u8文件中的URL是本地地址。以圖2所示的m3u8文件中的視頻片段下載到本地磁盤C:\Users\Download中為例,下載完成后生成的本地m3u8文件如圖3所示。通過生成上述本地m3u8文件以實(shí)現(xiàn)后續(xù)對目標(biāo)視頻的合成以
及播放。
[0049]對于傳統(tǒng)的視頻下載而言,下載完成后呈現(xiàn)給用戶的是一個視頻文件,用戶點(diǎn)擊該視頻文件就可以實(shí)現(xiàn)播放。而本發(fā)明下載完成后,保存的是目標(biāo)視頻的多個視頻片段,對于用戶而言,可以通過點(diǎn)擊本地m3u8文件來實(shí)現(xiàn)播放。目前各大播放器基本都支持m3u8文件的播放,比如,MPlayer、VLC> ffplayer等。由此可見,通過本地m3u8文件對視頻片段進(jìn)行播放也是極為便利的,不會產(chǎn)生額外操作。
[0050]實(shí)施例三
[0051]本實(shí)施例在實(shí)施例二的基礎(chǔ)上,根據(jù)上述本地m3u8文件,將存儲在指定位置的視頻片段合并成目標(biāo)視頻。
[0052]本發(fā)明是將目標(biāo)視頻的各個視頻片段分別下載并保存,也就是說下載好的目標(biāo)視頻是多個視頻片段的集合,由于文件數(shù)量較多,不便于拷貝,所以可以依據(jù)上述本地m3u8文件將下載好的視頻片段合成完整的目標(biāo)視頻。
[0053]在本實(shí)施例的一種具體實(shí)現(xiàn)中,依據(jù)本地m3u8文件中各個視頻片段的順序,將各個視頻片段合并為完整的目標(biāo)視頻。其中,將各個視頻片段合并為一個視頻可以依據(jù)已知的視頻合并方法。比如,通過視頻格式編碼規(guī)范對視頻進(jìn)行合并解碼,再根據(jù)目標(biāo)格式編碼規(guī)范重新合并編碼。以HLS協(xié)議為例,視頻片段是ts格式,經(jīng)過合并后可以輸出一個ts格式的大視頻文件。通過對視頻片段的合并,可以方便用戶對目標(biāo)視頻的拷貝等操作。
[0054]實(shí)施例四
[0055]本實(shí)施例在實(shí)施例一的基礎(chǔ)上進(jìn)一步限定根據(jù)m3u8文件中的多個URL從云服務(wù)器下載目標(biāo)視頻對應(yīng)的多個視頻片段的過程:同時和所述云服務(wù)器建立多個并行的HTTP連接,依據(jù)所述多個并行的HTTP連接同時從云服務(wù)器下載多個視頻片段。
[0056]由于本發(fā)明中目標(biāo)視頻的視頻片段下載順序不受m3u8文件的限制,為進(jìn)一步提升下載速度,本實(shí)施例同時從云服務(wù)器下載多個視頻片段。
[0057]在本實(shí)施例的一種具體實(shí)現(xiàn)中,與云服務(wù)器同時建立多個并行的HTTP連接,依據(jù)多個并行的HTTP連接從云服務(wù)器同時下載多個視頻片段,提高下載速度。優(yōu)選地,和云服務(wù)器建立三個并行的HTTP連接,即同時下載三個視頻片段,這樣既不影響用戶正常的網(wǎng)絡(luò)連接,比如:瀏覽網(wǎng)頁,玩在線游戲等,又能同時下載多個視頻片段,進(jìn)一步提高帶寬的利用率。
[0058]實(shí)施例五
[0059]本實(shí)施例在實(shí)施例一的基`礎(chǔ)上,將m3u8文件保存到本地,并在該m3u8文件中標(biāo)記已完成下載的URL,在重新啟動目標(biāo)視頻的下載時,根據(jù)本地保存的上述m3u8文件中未做標(biāo)記的URL繼續(xù)下載。
[0060]本實(shí)施例提供了一種目標(biāo)視頻繼續(xù)下載的方法。在實(shí)際應(yīng)用中,會出現(xiàn)一部電影沒有下載完畢,但用戶關(guān)閉了電腦,在電腦重新開啟后,用戶還想要繼續(xù)下載的情況?;蛘呤怯捎诰W(wǎng)絡(luò)故障,導(dǎo)致下載中斷,在故障恢復(fù)時,也需要繼續(xù)下載。要實(shí)現(xiàn)繼續(xù)下載,就需要知道哪些視頻片段已經(jīng)下載完畢,哪些視頻片段還沒有下載。本實(shí)施例設(shè)計(jì)將m3u8文件保存到本地,并在該m3u8文件中標(biāo)記已完成下載的視頻片段,這樣在重新啟動下載的時候,就可以依據(jù)該m3u8文件中未做標(biāo)記的URL下載還未下載的視頻片段。
[0061]具體地,可以在m3u8文件的各個視頻片段的URL后面加上預(yù)設(shè)的字段用來標(biāo)記,如,增加字段&d0wnl0aded用來表明該視頻片段已經(jīng)下載完畢。那么,在重新啟動目標(biāo)視
頻的下載時,只需要下載上述m3u8文件中未標(biāo)記&downloaded字段的視頻片段。當(dāng)然,也可以采取其他的方式,比如,在本地建立下載進(jìn)度表。
[0062]
【權(quán)利要求】
1.一種基于HLS協(xié)議的視頻下載方法,其特征在于,所述方法包括: 從云服務(wù)器獲取下載目標(biāo)視頻的m3u8文件; 根據(jù)所述m3u8文件中的多個URL從云服務(wù)器下載所述目標(biāo)視頻對應(yīng)的多個視頻片段; 將下載到的各個視頻片段分別存儲在本地磁盤中的指定位置上。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 根據(jù)視頻片段所在的指定位置的路徑,生成所述目標(biāo)視頻的本地m3u8文件。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述方法進(jìn)一步包括: 根據(jù)所述本地m3u8文件,將存儲在指定位置的視頻片段合并成所述目標(biāo)視頻。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 將所述m3u8文件保存到本地,并在所述m3u8文件中標(biāo)記已完成下載的URL,在重新啟動所述目標(biāo)視頻的下載時,根據(jù)本地保存的所述m3u8文件中未做標(biāo)記的URL繼續(xù)下載。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于, 根據(jù)所述m3u8文件中的多個URL從云服務(wù)器下載所述目標(biāo)視頻對應(yīng)的多個視頻片段的過程包括:同時和所述云服務(wù)器建立多個并行的HTTP連接,依據(jù)所述多個并行的HTTP連接同時從云服務(wù)器下載多個視頻片段。
6.一種基于HLS協(xié)議的視頻下載裝置,其特征在于,所述裝置包括: 獲取模塊,用于從云服務(wù)器獲取下載目標(biāo)視頻的m3u8文件; 下載模塊,用于根據(jù)所述m3u8文件中的多個URL從云服務(wù)器下載所述目標(biāo)視頻對應(yīng)的多個視頻片段,并將下載到的各個視頻片段分別存儲在本地磁盤中的指定位置上。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括: 生成模塊,用于根據(jù)視頻片段所在的指定位置的路徑,生成所述目標(biāo)視頻的本地m3u8文件。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 合并模塊,用于根據(jù)所述本地m3u8文件,將存儲在指定位置的視頻片段合并成所述目標(biāo)視頻。
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于, 所述下載模塊,進(jìn)一步用于將所述m3u8文件保存到本地,并在所述m3u8文件中標(biāo)記已完成下載的URL,在重新啟動所述目標(biāo)視頻的下載時,根據(jù)本地保存的所述m3u8文件中未做標(biāo)記的URL繼續(xù)下載。
10.根據(jù)權(quán)利要求6所述的裝置,其特征在于, 所述下載模塊根據(jù)所述m3u8文件中的多個URL從云服務(wù)器下載所述目標(biāo)視頻對應(yīng)的多個視頻片段的過程包括:同時和所述云服務(wù)器建立多個并行的HTTP連接,依據(jù)所述多個并行的HTTP連接同時從云服務(wù)器下載多個視頻片段。
【文檔編號】H04N21/845GK103648019SQ201310638866
【公開日】2014年3月19日 申請日期:2013年11月29日 優(yōu)先權(quán)日:2013年11月29日
【發(fā)明者】蒼鵬, 李強(qiáng) 申請人:樂視致新電子科技(天津)有限公司