一種視頻播放方法及裝置的制造方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種視頻播放方法及裝置,包括:獲取待播放視頻的M3U8文件;解析所述M3U8文件,獲取所述M3U8文件中包含的所有TS片段文件的文件地址;根據(jù)所述所有TS片段文件的文件地址,以及將每個(gè)TS片段文件下載到本地,并對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào);在第K個(gè)TS片段下載完成后,開(kāi)始根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,其中,K為1到M中的任意一個(gè)整數(shù),M為小于TS片段文件總數(shù)的正整數(shù)。本發(fā)明提供的一種視頻播放方法及裝置,能夠有效降低播放視頻的緩沖時(shí)間,提高視頻播放的效率。
【專(zhuān)利說(shuō)明】
_種視頻播放方法及裝置
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及多媒體技術(shù)領(lǐng)域,尤其涉及一種視頻播放方法及裝置。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,使得電子設(shè)備的功能越來(lái)越豐富,而播放功能就是其中的一種,使得越來(lái)越多的電子設(shè)備中都會(huì)設(shè)置播放器用于播放多媒體文件。
[0003]現(xiàn)有的多媒體文件通常使用M3U8格式來(lái)傳輸視頻流,而一個(gè)M3U8文件中通常會(huì)包含多個(gè)TS片段文件的文件地址通常為URL地址,而在播放M3U8文件時(shí),需要將M3U8文件中包含的所有TS片段文件下載到本地之后,再根據(jù)M3U8文件中片段文件的播放順序,將下載到本地的所有TS片段文件按照播放順序進(jìn)行排序,然后再進(jìn)行播放,使得在播放M3U8文件時(shí),需要將其包含的所有TS片段文件下載到本地之后,再進(jìn)行排序才能正常播放,導(dǎo)致出現(xiàn)播放視頻的緩沖時(shí)間較長(zhǎng)的問(wèn)題。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供了一種視頻播放方法及裝置,能夠有效降低播放視頻的緩沖時(shí)間,提高視頻播放的效率。
[0005]本申請(qǐng)實(shí)施例提供了一種視頻播放方法,包括:
[0006]獲取待播放視頻的M3U8文件;
[0007]解析所述M3U8文件,獲取所述M3U8文件中包含的所有TS片段文件的文件地址;
[0008]根據(jù)所述所有TS片段文件的文件地址,將每個(gè)TS片段文件下載到本地,以及在將每個(gè)TS片段文件下載到本地的過(guò)程中,對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào),以使下載到本地的TS片段文件的讀取順序與所述所有TS片段文件在所述M3U8文件中的播放順序相同;
[0009]在第K個(gè)TS片段文件下載完成后,開(kāi)始根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,其中,K為I到M中的任意一個(gè)整數(shù),M為小于TS片段文件總數(shù)的正整數(shù)。
[0010]可選的,在所述TS片段文件總數(shù)大于5時(shí),所述K為1-5中的任意一個(gè)整數(shù)。
[0011 ]可選的,在依次將每個(gè)TS片段文件下載到本地的過(guò)程中,所述方法還包括:
[0012]對(duì)下載到本地的每個(gè)TS片段文件的完整性進(jìn)行驗(yàn)證;
[0013]獲取未通過(guò)驗(yàn)證的TS片段文件,并根據(jù)所述未通過(guò)驗(yàn)證的TS片段文件的文件地址,重新將完整的所述未通過(guò)驗(yàn)證的TS片段文件下載到本地。
[0014]可選的,在依次將每個(gè)TS片段文件的文件標(biāo)識(shí)下載到本地的過(guò)程中,所述方法還包括:
[0015]對(duì)下載到本地的每個(gè)TS片段文件進(jìn)行加密。
[0016]可選的,所述根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,具體包括:
[0017]對(duì)已加密的每個(gè)TS片段文件進(jìn)行解密,再根據(jù)解密后每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放。
[0018]本申請(qǐng)另一實(shí)施例還提供了一種視頻播放裝置,包括:
[0019]文件獲取單元,用于獲取待播放視頻的M3U8文件;
[0020]文件解析單元,用于解析所述M3U8文件,獲取所述M3U8文件中包含的所有TS片段文件的文件地址;
[0021]下載單元,用于根據(jù)所述所有TS片段文件的文件地址,將每個(gè)TS片段文件下載到本地;
[0022]編號(hào)單元,用于在將每個(gè)TS片段文件下載到本地的過(guò)程中,對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào),以使下載到本地的TS片段文件的讀取順序與所述所有TS片段文件在所述M3U8文件中的播放順序相同;
[0023]播放單元,用于在第K個(gè)TS片段文件下載完成后,開(kāi)始根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,其中,K為I到M中的任意一個(gè)整數(shù),M為小于TS片段文件總數(shù)的正整數(shù)。
[0024]可選的,在所述TS片段文件總數(shù)大于5時(shí),所述K為1-5中的任意一個(gè)整數(shù)。
[0025]可選的,所述裝置還包括:
[0026]驗(yàn)證單元,用于在依次將每個(gè)TS片段文件下載到本地的過(guò)程中,對(duì)下載到本地的每個(gè)TS片段文件的完整性進(jìn)行驗(yàn)證,并獲取未通過(guò)驗(yàn)證的TS片段文件;
[0027]所述下載單元,還用于根據(jù)所述未通過(guò)驗(yàn)證的TS片段文件的文件地址,重新將完整的所述未通過(guò)驗(yàn)證的TS片段文件下載到本地。
[0028]可選的,所述裝置還包括:
[0029]加密單元,用于在依次將每個(gè)TS片段文件的文件標(biāo)識(shí)下載到本地的過(guò)程中,對(duì)下載到本地的每個(gè)TS片段文件進(jìn)行加密。
[0030]可選的,所述裝置還包括:
[0031 ]解密單元,用于對(duì)已加密的每個(gè)TS片段文件進(jìn)行解密;
[0032]所述播放單元,還用于根據(jù)解密后每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放。
[0033]本發(fā)明的有益效果如下:
[0034]基于上述技術(shù)方案,本發(fā)明實(shí)施例中,解析待播放視頻的M3U8文件,并根據(jù)解析獲取的所述M3U8文件中包含的所有TS片段文件的文件地址,依次將每個(gè)TS片段文件下載到本地,并對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào);以及在第K個(gè)TS片段文件下載完成后,開(kāi)始根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,由于K為I到M中的任意一個(gè)整數(shù),M為小于TS片段文件總數(shù)的正整數(shù),可知K小于所述總數(shù),使得所述第K個(gè)TS片段文件下載完成后,在下載第(K+1)個(gè)TS片段文件時(shí),就已開(kāi)始對(duì)下載到本地的TS片段文件進(jìn)行播放,進(jìn)而能夠?qū)崿F(xiàn)一邊下載TS片段文件一邊播放TS片段文件,而無(wú)需在所有TS片段文件都下載完成之后進(jìn)行排序后播放,從而能夠有效降低播放視頻的緩沖時(shí)間,提高視頻播放的效率,使得用戶的體驗(yàn)更好。
【附圖說(shuō)明】
[0035]圖1為本發(fā)明實(shí)施例中視頻播放方法的第一種流程圖;
[0036]圖2為本發(fā)明實(shí)施例中視頻播放方法的第二種流程圖;
[0037]圖3為本發(fā)明實(shí)施例中視頻播放裝置的結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0038]本發(fā)明提供了一種視頻播放方法及裝置,能夠有效降低播放視頻的緩沖時(shí)間,提高視頻播放的效率。
[0039]本發(fā)明實(shí)施例中視頻播放方法通常是應(yīng)用用戶終端中,所述用戶終端例如是智能手機(jī)、平板電腦、筆記本電腦、臺(tái)式電腦等具有顯示屏的設(shè)備,以在所述用戶終端的顯示屏上播放視頻。
[0040]本發(fā)明實(shí)施例中,M3U8文件實(shí)質(zhì)上也是一種M3U文件,只是兩者的編碼格式不同。M3U8文件的編碼格式是UTF-8格式,而M3U采用Iatin-1字符集編碼。M3U類(lèi)似于音頻或者視頻文件的目錄信息。
[0041]具體的,M3U文件不是音頻文件或者視頻文件,它是音頻文件或者視頻文件的列表文件,是純文本文件。當(dāng)下載得到M3U文件并打開(kāi)M3U文件后,電子設(shè)備的播放器播放的并不是該M3U文件,而是根據(jù)該M3U文件的記錄獲取到相應(yīng)的文件地址,然后下載對(duì)應(yīng)的TS片段文件并進(jìn)行播放。
[0042]下面結(jié)合附圖對(duì)本發(fā)明優(yōu)選的實(shí)施方式進(jìn)行詳細(xì)說(shuō)明。
[0043]實(shí)施例一:
[0044]如圖1所示,本發(fā)明實(shí)施例中提供了一種視頻播放方法,包括以下步驟:
[0045]SlOl、獲取待播放視頻的M3U8文件;
[0046]S102、解析所述M3U8文件,獲取所述M3U8文件中包含的所有TS片段文件的文件地址;
[0047]S103、根據(jù)所述所有TS片段文件的文件地址,依次將每個(gè)TS片段文件下載到本地,對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào),以使下載到本地的TS片段文件的讀取順序與所述所有TS片段文件在所述M3U8文件中的播放順序相同;
[0048]S104、在第K個(gè)TS片段文件下載完成后,開(kāi)始根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,其中,K為I到M中的任意一個(gè)整數(shù),M為小于TS片段文件總數(shù)的正整數(shù)。
[0049]其中,在步驟SlOl中,可以根據(jù)用戶的操作來(lái)獲取待播放視頻的M3U8文件,例如在筆記本電腦上打開(kāi)了一視頻網(wǎng)站,若用戶選中了該視頻網(wǎng)站中的a視頻進(jìn)行播放,則可以通過(guò)下載獲取a視頻的M3U8文件,其中a視頻為所述待播放視頻。
[0050]接下來(lái)執(zhí)行步驟S102,在該步驟中,解析所述M3U8文件,獲取所述M3U8文件中包含的所有TS片段文件的文件地址。
[0051 ]在具體實(shí)施過(guò)程中,在通過(guò)步驟SlOl獲取到所述M3U8文件之后,對(duì)所述M3U8文件進(jìn)行解析,以獲取所述M3U8文件中包含的所有TS片段文件的文件地址,其中,所述文件地址例如可以是URL地址、IP地址等,下面具體以URL地址為例。當(dāng)然,在對(duì)所述M3U8文件進(jìn)行解析之后,還可以獲取所有TS片段文件在所述M3U8文件中的播放順序。
[0052]具體來(lái)講,所述M3U8文件可以為一個(gè)M3U8列表文件,該M3U8列表文件中包含所有TS片段文件的URL地址,且所有TS片段文件的URL地址在該M3U8列表文件中按照TS片段文件的播放先后順序進(jìn)行排列,如此,可以在對(duì)所述M3U8文件進(jìn)行解析之后,能夠獲取所有TS片段文件在所述M3U8文件中的播放順序。
[0053]具體的,所述M3U8文件中通常會(huì)包括多個(gè)TS片段文件的URL地址;當(dāng)然,在較少情況下,所述M3U8文件也會(huì)僅包括I個(gè)TS片段文件的URL地址,本申請(qǐng)對(duì)此不作具體限制,下面具體以所述M3U8文件包含至少3個(gè)TS片段文件的URL地址為例。
[0054]例如,以a視頻對(duì)應(yīng)的M3U8文件為例,下載a視頻對(duì)應(yīng)的M3U8文件之后進(jìn)行解析,獲取到M3U8文件中包含{TS1、TS2.....TSN}的URL地址,其中,N為不小于3的整數(shù),其中,{TS1、
TS2……TSN}片段文件的播放順序?yàn)門(mén)S1>TS2>……>TSN,可知TSl片段文件最先播放,TS2片段文件在TSl片段文件之后播放,然后依次進(jìn)行播放,最后播放TSN片段文件。
[0055]本申請(qǐng)實(shí)施例中,在獲取到所述M3U8文件之后,所述M3U8文件中可能會(huì)包括一級(jí)M3U8文件和二級(jí)M3U8文件,所述一級(jí)M3U8文件主要進(jìn)行多碼率適配,并未包含TS片段文件的URL地址;而所述二級(jí)M3U8文件中才會(huì)包含所有TS片段文件的URL地址,如此,使得在解析所述M3U8文件時(shí),獲取的是所述二級(jí)M3U8文件包含的所有TS片段文件的URL地址。
[0056]例如,一級(jí)M3U8文件如下:
[0057]#EXTM3U
[0058]#EXT-X-STREAM-1NF:PROGRAM-1D = 201273221265,BANDffIDTH=358400
[0059]Il.m3u8
[0060]#EXT-X-STREAM-1NF:PROGRAM-1D = 201273221265,BANDffIDTH=972800[0061 ] 22.m3u8
[0062]由此可知,上述一級(jí)M3U8文件中又定義了 11.m3u8和22.m3u8兩個(gè)二級(jí)M3U8文件,如此,可以選擇Il.m3u8和22.m3u8中的任意一個(gè)二級(jí)M3U8文件,然后獲取選擇的二級(jí)M3U8文件中包含的所有TS片段文件的URL地址。當(dāng)然,在實(shí)際應(yīng)用過(guò)程中,用戶終端默認(rèn)會(huì)首先選擇碼率最高的二級(jí)M3U8文件,如果播放過(guò)程中發(fā)現(xiàn)碼率達(dá)不到要求,則會(huì)請(qǐng)求較低碼率的二級(jí)M3U8文件。
[0063]接下來(lái)執(zhí)行步驟S103,在該步驟中,根據(jù)所述所有TS片段文件的文件地址,依次將每個(gè)TS片段文件下載到本地,并對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào),以使下載到本地的TS片段文件的讀取順序與所述所有TS片段文件在所述M3U8文件中的播放順序相同。
[0064]在具體實(shí)施過(guò)程中,一個(gè)M3U8文件中通常會(huì)存在成百上千個(gè)TS片段,為了降低下載TS片段文件占用的CPU開(kāi)銷(xiāo),通常會(huì)采用單進(jìn)程來(lái)下載所述所有TS片段文件,如此,可以根據(jù)所述播放順序依次將每個(gè)TS片段下載到本地,具體可以是從第一個(gè)TS片段文件開(kāi)始到最后一個(gè)TS片段文件結(jié)束,在前一個(gè)TS片段文件下載完成之后,才下載下一個(gè)TS片段文件。
[0065]例如以M3U8文件中包含{TS1、TS2.....TSN}的URL地址為例,在根據(jù)TSl片段文件的URL地址,下載完TSl片段文件之后,再根據(jù)TS2片段文件的URL地址,下載TS2片段文件,在下載完成之后,繼續(xù)下載下一個(gè)TS片段文件,直至下載完TSN片段文件為止。
[0066]具體來(lái)講,在獲取到M3U8文件中包含的所有TS片段的URL地址之后,根據(jù)所述所有TS片段的URL地址,查找到相應(yīng)的資源進(jìn)行下載,從而依次將每個(gè)TS片段文件下載到本地;以及在依次將每個(gè)TS片段文件下載到本地過(guò)程中,可以在每下載一個(gè)TS片段文件時(shí),對(duì)該下載的TS片段文件進(jìn)行編號(hào),以使得每個(gè)TS片段文件包含的數(shù)據(jù)的下載與對(duì)每個(gè)TS片段文件進(jìn)行編號(hào)同時(shí)進(jìn)行,不會(huì)對(duì)每個(gè)TS片段文件的下載造成影響,從而能夠確保所有TS片段文件的下載效率。
[0067]具體來(lái)講,在對(duì)每個(gè)TS片段文件進(jìn)行編號(hào)時(shí),可以根據(jù)每個(gè)TS片段文件的文件標(biāo)識(shí)來(lái)對(duì)其進(jìn)行編號(hào),例如TSl片段文件的文件標(biāo)識(shí)為T(mén)Sl,在對(duì)TSl片段文件進(jìn)行編號(hào)時(shí),可以根據(jù)文件標(biāo)識(shí)TSl對(duì)TSl片段文件進(jìn)行編號(hào),使得TSl片段文件對(duì)應(yīng)的編號(hào)為I;同理,采用相同的方法對(duì)TS2片段文件進(jìn)行編號(hào),使得TS2片段文件對(duì)應(yīng)的編號(hào)為2,其中,所述文件標(biāo)識(shí)可以是TS片段文件的文件名稱。
[0068]具體的,根據(jù)所述所有TS片段文件的URL地址,將每個(gè)TS片段文件下載到本地過(guò)程中,在對(duì)每個(gè)TS片段文件進(jìn)行下載時(shí),首先會(huì)在本地為每個(gè)TS片段文件創(chuàng)建一個(gè)文件夾,并將每個(gè)TS片段文件的文件標(biāo)識(shí)下載到本地,根據(jù)下載到本地的每個(gè)TS片段文件的文件標(biāo)識(shí),對(duì)每個(gè)TS片段文件進(jìn)行編號(hào),以及在對(duì)TS片段文件進(jìn)行編號(hào)的同時(shí)將每個(gè)TS片段文件包含的數(shù)據(jù)內(nèi)容下載到對(duì)應(yīng)的本地創(chuàng)建的文件夾中,以使得每個(gè)TS片段文件包含的數(shù)據(jù)的下載與對(duì)每個(gè)TS片段文件進(jìn)行編號(hào)同時(shí)進(jìn)行,不會(huì)對(duì)每個(gè)TS片段文件的下載造成影響,其中,在將每個(gè)TS片段文件的文件標(biāo)識(shí)下載到本地時(shí),使得每個(gè)TS片段文件和與其對(duì)應(yīng)的本地創(chuàng)建的文件夾的文件標(biāo)識(shí)相同,使得創(chuàng)建的所有的文件夾與所有TS片段文件一一對(duì)應(yīng)。
[0069]當(dāng)然,也可以直接根據(jù)每個(gè)TS片段文件的URL地址,獲取到每個(gè)TS片段文件的文件標(biāo)識(shí),而無(wú)需下載到本地,直接根據(jù)獲取的每個(gè)TS片段文件的文件標(biāo)識(shí),對(duì)每個(gè)TS片段文件進(jìn)行編號(hào),同樣會(huì)使得編號(hào)和下載每個(gè)TS片段文件包含的數(shù)據(jù)同時(shí)進(jìn)行,不會(huì)對(duì)每個(gè)TS片段文件的下載造成影響。
[0070]例如,以M3U8文件中包含{TS1、TS2.....TSN}的URL地址為例,根據(jù){TS1、
TS2……TSN}的URL地址,依次下載名稱為{TS1、TS2……TSN}的TS片段文件,名稱為T(mén)Si的TS片段文件用TSi片段文件表示,i依次取1-N的值,其中,在根據(jù)TSl的URL地址,下載TSl片段文件時(shí),首先會(huì)在本地創(chuàng)建一個(gè)文件夾,然后下載TSl片段文件的文件標(biāo)識(shí)為T(mén)Sl并將創(chuàng)建的本地文件夾的名稱命名為T(mén)Sl,這時(shí)可以根據(jù)下載到本地的TSI片段文件的文件標(biāo)識(shí),對(duì)TSl片段文件進(jìn)行編號(hào)并確定其編號(hào)為I,以及在對(duì)TSl片段文件進(jìn)行編號(hào)的同時(shí)將下載TSl片段文件包含的數(shù)據(jù)存儲(chǔ)在名稱為T(mén)Sl的本地文件夾中。同理,針對(duì)每個(gè)TS片段文件執(zhí)行上述操作,使得名稱為ITSl、TS2……TSN}的本地文件夾與{TS1、TS2……TSN}片段文件——對(duì)應(yīng)。
[0071]本申請(qǐng)實(shí)施例中,根據(jù)所述所有TS片段文件的URL地址,可以根據(jù)每個(gè)TS片段文件在所述M3U8文件中的播放順序,對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào);當(dāng)然,也可以是在每下載一個(gè)TS片段文件的文件標(biāo)識(shí)之后,根據(jù)每個(gè)TS片段文件在所述M3U8文件中的播放順序,對(duì)下載的每個(gè)TS片段文件的文件標(biāo)識(shí)進(jìn)行順序編號(hào),本申請(qǐng)不作具體限制。
[0072]在具體實(shí)施過(guò)程中,在根據(jù)每個(gè)TS片段文件在所述M3U8文件中的播放順序,對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào)時(shí),根據(jù)每個(gè)TS片段文件在所述M3U8文件中的播放順序,可以是從小到大或從大到小對(duì)每個(gè)TS片段文件進(jìn)行編號(hào),下面具體以從小到大編號(hào)為例。
[0073]具體來(lái)講,以M3U8文件中包含{TS1、TS2.....TSN}的URL地址為例,對(duì)應(yīng)的所有TS
片段文件為ITSl、TS2……TSN}片段文件,在每下載{TS1、TS2……TSN}片段文件中的TSi片段文件時(shí),根據(jù)所述TSi片段文件在所述M3U8文件中的播放順序,對(duì)所述TSi片段文件進(jìn)行編號(hào),若i = I,則對(duì)TSl片段文件對(duì)應(yīng)的編號(hào)為I;以及i = 2時(shí),則對(duì)TS2片段文件對(duì)應(yīng)的編號(hào)為2,其中,i取1-N的值,如此,使得{TS1、TS2.....TSN}片段文件對(duì)應(yīng)的編號(hào)為{1、2.....N}。
[0074]接下來(lái)執(zhí)行步驟S104,在該步驟中,在第K個(gè)TS片段文件下載完成后,開(kāi)始根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,其中,K為I到M中的任意一個(gè)整數(shù),M為小于TS片段文件總數(shù)的正整數(shù)。
[0075]在具體實(shí)施過(guò)程中,所述TS片段文件總數(shù)為所述所有TS片段文件的數(shù)量,具體用N表示;在所述總數(shù)大于3時(shí),所述M可以取2或3的值,在所述M為3時(shí),所述K可以取I或2或3的值;同理,在所述總數(shù)大于4時(shí),所述M可以取2或3或4的值,以及在所述M為4時(shí),所述K可以取I或2或3或4的值;以及在所述總數(shù)大于5時(shí),所述M為2-5中的任意一個(gè)整數(shù),在所述M為5時(shí),所述K可以取1-5中的任意一個(gè)整數(shù)。
[0076]具體來(lái)講,由于M〈N(總數(shù))且ISKSM,使得所述第K個(gè)TS片段文件下載完成后,后續(xù)還要下載至少一個(gè)TS片段文件,而在所述第K個(gè)TS片段下載完成后,就開(kāi)始依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,如此,使得在下載第(K+1)個(gè)TS片段文件時(shí),就已開(kāi)始對(duì)下載到本地的TS片段文件進(jìn)行播放,進(jìn)而能夠?qū)崿F(xiàn)一邊下載TS片段文件一邊播放TS片段文件,而無(wú)需在所有TS片段文件都下載完成之后進(jìn)行排序后播放,從而能夠有效降低播放視頻的緩沖時(shí)間,提高視頻播放的效率,使得用戶的體驗(yàn)更好。
[0077]具體的,以K=I為例,首先檢測(cè)所述M3U8文件中第一個(gè)TS片段文件是否下載完成,若檢測(cè)到所述第一個(gè)TS片段文件下載完成,則根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,其【具體實(shí)施方式】為:由于所述第一個(gè)TS片段已下載完成,則在緩存中讀取所述第一個(gè)TS片段文件進(jìn)行播放,然后依次檢測(cè)第二個(gè)TS片段文件至最后一個(gè)TS片段文件是否下載完成,在每檢測(cè)一個(gè)TS片段文件下載完成之后,則在緩存中讀取下載完成的TS片段文件進(jìn)行播放,如此,使得播放的TS片段文件的順序與所述所有TS片段文件在所述M3U8文件中的播放順序相同,能夠在每下載完成一個(gè)TS片段文件之后立即播放該TS片段文件,而無(wú)需在所有TS片段文件都下載完成之后才進(jìn)行播放,能夠進(jìn)一步降低播放視頻的緩沖時(shí)間。
[0078]具體的,在K= 3時(shí),首先檢測(cè)所述M3U8文件中第三個(gè)TS片段文件是否下載完成,若檢測(cè)到所述第三個(gè)TS片段文件下載完成,則根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,其【具體實(shí)施方式】為:由于所述第三個(gè)TS片段文件已下載完成,則在緩存中依次讀取第一個(gè)至第三個(gè)TS片段文件進(jìn)行播放,然后再依次檢測(cè)第四個(gè)TS片段文件至最后一個(gè)TS片段文件是否下載完成,在每檢測(cè)一個(gè)TS片段文件下載完成之后,則在緩存中讀取下載完成的TS片段文件進(jìn)行播放,如此,使得播放的TS片段文件的順序與所述所有TS片段文件在所述M3U8文件中的播放順序相同,能夠在每下載完成一個(gè)TS片段文件之后立即播放該TS片段文件。
[0079]例如,以K= I為例,{TS1、TS2……TSN}片段文件對(duì)應(yīng)的編號(hào)為{1、2……N},由于I對(duì)應(yīng)的TSl片段文件為所述M3U8文件中第一個(gè)TS片段文件,則首先根據(jù)編號(hào)I,檢測(cè)對(duì)應(yīng)的TSl片段文件是否下載完成,在檢測(cè)到下載完成時(shí),則從緩存中讀取TSl片段文件進(jìn)行播放;然后再根據(jù)編號(hào)2,檢測(cè)對(duì)應(yīng)的TS2片段文件是否下載完成,在檢測(cè)到下載完成時(shí),則從緩存中讀取TS2片段文件進(jìn)行播放;然后根據(jù)編號(hào)依次檢測(cè)后續(xù)的TS片段文件是否下載完成,在下載完成時(shí)則進(jìn)行播放,直至最后檢測(cè)與編號(hào)N對(duì)應(yīng)的TSN片段文件下載完成然后進(jìn)行播放;如此,使得根據(jù)編號(hào)順序,能夠依照所述M3U8文件中的TS片段文件的播放順序?qū)崟r(shí)檢測(cè)其是否下載完成,在每檢測(cè)到下載完成一個(gè)TS片段文件之后,立即將其進(jìn)行播放,而無(wú)需在M3U8文件中所有TS片段文件下載完成之后才進(jìn)行播放,如此,能夠有效縮短緩沖時(shí)間,使得播放效率得以提高。
[0080]在另一實(shí)施例中,在將每個(gè)TS片段文件下載到本地的過(guò)程中,所述方法還包括:對(duì)下載到本地的每個(gè)TS片段文件的完整性進(jìn)行驗(yàn)證;獲取未通過(guò)驗(yàn)證的TS片段文件,并根據(jù)所述未通過(guò)驗(yàn)證的TS片段文件的URL地址,重新將完整的所述未通過(guò)驗(yàn)證的TS片段文件下載到本地。
[0081]其中,在對(duì)每個(gè)TS片段文件的完整性進(jìn)行驗(yàn)證時(shí),可以通過(guò)每個(gè)TS片段文件對(duì)應(yīng)的MD5值或哈希值等校驗(yàn)碼以此來(lái)對(duì)其進(jìn)行驗(yàn)證。具體的,下載到本地的每個(gè)TS片段文件中會(huì)存在MD5值或哈希值等校驗(yàn)碼,然后獲取下載到本地的每個(gè)TS片段文件的校驗(yàn)碼,將獲取的校驗(yàn)碼與下載的校驗(yàn)碼進(jìn)行對(duì)比,在相同時(shí),則確定所述TS片段文件是完整的,表征通過(guò)驗(yàn)證;在不相同時(shí),則確定所述TS片段文件是不完整,表征未通過(guò)驗(yàn)證。當(dāng)然,所述獲取的校驗(yàn)碼與所述下載的校驗(yàn)碼的類(lèi)別相同,若所述下載的校驗(yàn)碼的類(lèi)別為MD5,所述獲取的校驗(yàn)碼的類(lèi)別也必然為MD5;若所述下載的校驗(yàn)碼的類(lèi)別為哈希值,則所述獲取的校驗(yàn)碼的類(lèi)別也必然為哈希值。
[0082]在具體實(shí)施過(guò)程中,在將每個(gè)TS片段文件下載到本地的過(guò)程中,會(huì)存在其中的一部分TS片段文件已下載到本地了,而另一部分TS片段文件僅下載了其中的一部分?jǐn)?shù)據(jù),而這時(shí),可以對(duì)已下載到本地的每個(gè)TS片段文件的完整性進(jìn)行驗(yàn)證,若通過(guò)驗(yàn)證,則表征下載到本地的TS片段文件是完整的;若未通過(guò)驗(yàn)證,則表征下載到本地的TS片段文件是不完整的,無(wú)法進(jìn)行正常的播放;如此,在對(duì)下載到本地的每個(gè)TS片段文件的完整性進(jìn)行驗(yàn)證之后,能夠獲取所述未通過(guò)驗(yàn)證的TS片段文件,并重新將完整的所述未通過(guò)驗(yàn)證的TS片段文件下載到本地,以使得在播放TS片段文件時(shí),降低由于下載到本地的TS片段文件不完整導(dǎo)致出現(xiàn)緩沖的情況,能夠有效提高TS片段文件播放的流暢度,使得用戶的體驗(yàn)更好。
[0083]具體來(lái)講,也可以在每將一個(gè)TS片段文件下載到本地時(shí),對(duì)該TS片段文件進(jìn)行完整性驗(yàn)證,若通過(guò)驗(yàn)證,則禁止重新對(duì)其進(jìn)行下載;若未通過(guò)驗(yàn)證,則根據(jù)該TS片段文件的URL地址,重新將完整的該TS片段文件下載到本地,由于在每個(gè)TS片段文件下載到本地時(shí)進(jìn)行驗(yàn)證,使得驗(yàn)證的及時(shí)性得以提高,能夠更快的檢測(cè)出每個(gè)下載到本地的TS片段文件的完整性,進(jìn)而采取相應(yīng)的措施來(lái)確保每個(gè)下載到本地的TS片段文件的完整性,進(jìn)一步降低由于下載到本地的TS片段文件不完整導(dǎo)致出現(xiàn)緩沖的情況。
[0084]實(shí)施例二:
[0085]如圖2所示,本發(fā)明實(shí)施例中提供了一種視頻播放方法,包括以下步驟:
[0086]S201、獲取待播放視頻的M3U8文件;
[0087]S202、解析所述M3U8文件,獲取所述M3U8文件中包含的所有TS片段文件的文件地址;
[0088]S203、根據(jù)所述所有TS片段文件的文件地址,依次將每個(gè)TS片段文件下載到本地,并對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào),以使下載到本地的TS片段文件的讀取順序與所述所有TS片段文件在所述M3U8文件中的播放順序相同;
[0089]S204、在依次將每個(gè)TS片段文件下載到本地的過(guò)程中,對(duì)下載到本地的每個(gè)TS片段文件進(jìn)行加密;
[0090]S205、在第K個(gè)TS片段下載完成后,對(duì)已加密的每個(gè)TS片段文件進(jìn)行解密,再開(kāi)始根據(jù)解密后每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,其中,K為I到M中的任意一個(gè)整數(shù),M為小于TS片段文件總數(shù)的正整數(shù)。
[0091]其中,在步驟S204中,在將每個(gè)TS片段文件下載到本地的過(guò)程中,可以對(duì)下載到本地的每個(gè)TS片段文件進(jìn)行加密,以提高其私密性,而且加密之后的每個(gè)TS片段文件只能通過(guò)對(duì)應(yīng)的解密算法進(jìn)行解密之后才能進(jìn)行正常播放,使得將下載的視頻文件上傳或復(fù)制到其它設(shè)備中時(shí),使得其它設(shè)備并不能獲知與所述視頻文件對(duì)應(yīng)的解密算法對(duì)其進(jìn)行解密,以致無(wú)法獲取TS片段文件的內(nèi)容,從而不能正常播放下載的視頻文件,如此,能夠有效防止下載的視頻文件出現(xiàn)未授權(quán)而播放的問(wèn)題,進(jìn)而能夠有效防止盜版。
[0092]具體來(lái)講,由于對(duì)下載到本地的每個(gè)TS片段文件進(jìn)行了加密,使得創(chuàng)建的與每一個(gè)TS片段文件的本地文件處于加密狀態(tài),其中,可以通過(guò)MD5、RSA、DES等加密算法對(duì)每個(gè)TS片段文件進(jìn)行加密,本申請(qǐng)不作具體限制。
[0093]在步驟S205中,在對(duì)下載到本地的每個(gè)TS片段文件進(jìn)行加密之后,且在第K個(gè)TS片段下載完成后,對(duì)已加密的每個(gè)TS片段文件進(jìn)行解密,這是由于步驟S203中對(duì)下載到本地的每個(gè)TS片段文件進(jìn)行了加密,如此,需要進(jìn)行解密才能確定已加密的每個(gè)TS片段文件的內(nèi)容,再根據(jù)解密后每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放。
[0094]具體的,在對(duì)已加密的每個(gè)TS片段文件進(jìn)行解密時(shí),采用與步驟S204中使用的加密算法相對(duì)應(yīng)的解密算法進(jìn)行解密,以準(zhǔn)確獲取已加密的每個(gè)TS片段文件的內(nèi)容,再根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,在K = I時(shí),其具體實(shí)現(xiàn)過(guò)程如下:
[0095]首先檢測(cè)所述M3U8文件中第一個(gè)TS片段文件是否下載完成,若檢測(cè)到所述第一個(gè)TS片段文件下載完成,對(duì)其進(jìn)行解密并在緩存中讀取所述第一個(gè)TS片段文件進(jìn)行播放,然后依次檢測(cè)第二個(gè)TS片段文件至最后一個(gè)TS片段文件是否下載完成,在每檢測(cè)一個(gè)TS片段文件下載完成之后,對(duì)其進(jìn)行解密并在緩存中讀取下載完成的TS片段文件進(jìn)行播放,如此,使得播放的TS片段文件的順序與所述所有TS片段文件在所述M3U8文件中的播放順序相同。
[0096]本發(fā)明的有益效果如下:
[0097]本發(fā)明實(shí)施例中,解析待播放視頻的M3U8文件,并根據(jù)解析獲取的所述M3U8文件中包含的所有TS片段文件的文件地址,依次將每個(gè)TS片段文件下載到本地,并對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào);以及在第K個(gè)TS片段文件下載完成后,開(kāi)始根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,,由于K為I到M中的任意一個(gè)整數(shù),M為小于TS片段文件總數(shù)的正整數(shù),可知K小于所述總數(shù),使得所述第K個(gè)TS片段文件下載完成后,在下載第(K+1)個(gè)TS片段文件時(shí),就已開(kāi)始對(duì)下載到本地的TS片段文件進(jìn)行播放,進(jìn)而能夠?qū)崿F(xiàn)一邊下載TS片段文件一邊播放TS片段文件,而無(wú)需在所有TS片段文件都下載完成之后進(jìn)行排序后播放,從而能夠有效降低播放視頻的緩沖時(shí)間,提高視頻播放的效率,使得用戶的體驗(yàn)更好。
[0098]基于與上述方法相同的技術(shù)構(gòu)思,如圖3所示,本發(fā)明實(shí)施例還提供了一種視頻播放裝置,包括:
[0099]文件獲取單元301,用于獲取待播放視頻的M3U8文件;
[0100]文件解析單元302,用于解析所述M3U8文件,獲取所述M3U8文件中包含的所有TS片段文件的文件地址;
[0101]下載單元303,用于根據(jù)所述所有TS片段文件的文件地址,依次將每個(gè)TS片段文件下載到本地;
[0102]編號(hào)單元304,用于在依次將每個(gè)TS片段文件下載到本地的過(guò)程中,對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào),以使下載到本地的TS片段文件的讀取順序與所述所有TS片段文件在所述M3U8文件中的播放順序相同;
[0103]播放單元305,用于在第K個(gè)TS片段文件下載完成后,開(kāi)始根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,其中,K為I到M中的任意一個(gè)整數(shù),M為小于TS片段文件總數(shù)的正整數(shù)。
[0104]其中,所述視頻播放裝置例如可以是智能手機(jī)、平板電腦、筆記本電腦、臺(tái)式電腦等具有顯示屏的設(shè)備,以在所述視頻播放裝置的顯示屏上播放視頻。
[0105]較佳的,在所述TS片段文件總數(shù)大于5時(shí),所述M為2-5中的任意一個(gè)整數(shù),使得所述M為5時(shí),所述K可以取1-5中的任意一個(gè)整數(shù);以及在所述M為4時(shí),所述K可以取1-4中的任意一個(gè)整數(shù);以及在所述M為3時(shí),K可以取1-3中的任意一個(gè)整數(shù);以及在所述M為2時(shí),K可以取I或2的值。
[0106]較佳的,所述裝置還包括:
[0107]驗(yàn)證單元,用于在依次將每個(gè)TS片段文件下載到本地的過(guò)程中,對(duì)下載到本地的每個(gè)TS片段文件的完整性進(jìn)行驗(yàn)證,并獲取未通過(guò)驗(yàn)證的TS片段文件;
[0108]下載單元303,還用于根據(jù)所述未通過(guò)驗(yàn)證的TS片段文件的文件地址,重新將完整的所述未通過(guò)驗(yàn)證的TS片段文件下載到本地。
[0109]較佳的,所述裝置還包括:
[0110]加密單元,用于在依次將每個(gè)TS片段文件下載到本地的過(guò)程中,對(duì)下載到本地的每個(gè)TS片段文件進(jìn)行加密。
[0111]較佳的,所述裝置還包括:
[0112]解密單元,用于對(duì)已加密的每個(gè)TS片段文件進(jìn)行解密;
[0113]播放單元305,還用于根據(jù)解密后每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放。
[0114]本發(fā)明的有益效果如下:
[0115]本發(fā)明實(shí)施例中,解析待播放視頻的M3U8文件,并根據(jù)解析獲取的所述M3U8文件中包含的所有TS片段文件的文件地址,依次將每個(gè)TS片段文件下載到本地,并對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào);以及在第K個(gè)TS片段文件下載完成后,開(kāi)始根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,由于K為I到M中的任意一個(gè)整數(shù),M為小于TS片段文件總數(shù)的正整數(shù),可知K小于所述總數(shù),使得所述第K個(gè)TS片段文件下載完成后,在下載第(K+1)個(gè)TS片段文件時(shí),就已開(kāi)始對(duì)下載到本地的TS片段文件進(jìn)行播放,進(jìn)而能夠?qū)崿F(xiàn)一邊下載TS片段文件一邊播放TS片段文件,而無(wú)需在所有TS片段文件都下載完成之后進(jìn)行排序后播放,從而能夠有效降低播放視頻的緩沖時(shí)間,提高視頻播放的效率,使得用戶的體驗(yàn)更好。
[0116]本發(fā)明實(shí)施例中所述模塊或單元,可以通過(guò)通用集成電路,例如CP U(CentralProcessing Unit,中央處理器),或通過(guò) ASIC(Appl icat1n SpecificIntegratedCircuit,專(zhuān)用集成電路)來(lái)實(shí)現(xiàn)。
[0117]本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤(pán)、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)或隨機(jī)存儲(chǔ)記憶體(Random AccessMemory,RAM)等。
[0118]以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來(lái)限定本發(fā)明之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。
【主權(quán)項(xiàng)】
1.一種視頻播放方法,其特征在于,包括: 獲取待播放視頻的M3U8文件; 解析所述M3U8文件,獲取所述M3U8文件中包含的所有TS片段文件的文件地址; 根據(jù)所述所有TS片段文件的文件地址,依次將每個(gè)TS片段文件下載到本地,并對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào),以使下載到本地的TS片段文件的讀取順序與所述所有TS片段文件在所述M3U8文件中的播放順序相同; 在第K個(gè)TS片段下載完成后,開(kāi)始根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,其中,K為I到M中的任意一個(gè)整數(shù),M為小于TS片段文件總數(shù)的正整數(shù)。2.如權(quán)利要求1所述的方法,其特征在于,在所述TS片段文件總數(shù)大于5時(shí),所述K為1-5中的任意一個(gè)整數(shù)。3.如權(quán)利要求2所述的方法,其特征在于,在依次將每個(gè)TS片段文件下載到本地的過(guò)程中,所述方法還包括: 對(duì)下載到本地的每個(gè)TS片段文件的完整性進(jìn)行驗(yàn)證; 獲取未通過(guò)驗(yàn)證的TS片段文件,并根據(jù)所述未通過(guò)驗(yàn)證的TS片段文件的文件地址,重新將完整的所述未通過(guò)驗(yàn)證的TS片段文件下載到本地。4.如權(quán)利要求1?3任一項(xiàng)所述的方法,其特征在于,在依次將每個(gè)TS片段文件下載到本地的過(guò)程中,所述方法還包括: 對(duì)下載到本地的每個(gè)TS片段文件進(jìn)行加密。5.如權(quán)利要求4所述的方法,其特征在于,所述根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,具體包括: 對(duì)已加密的每個(gè)TS片段文件進(jìn)行解密,再根據(jù)解密后每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放。6.一種視頻播放裝置,其特征在于,包括: 文件獲取單元,用于獲取待播放視頻的M3U8文件; 文件解析單元,用于解析所述M3U8文件,獲取所述M3U8文件中包含的所有TS片段文件的文件地址; 下載單元,用于根據(jù)所述所有TS片段文件的文件地址,依次將每個(gè)TS片段文件下載到本地; 編號(hào)單元,用于在依次將每個(gè)TS片段文件下載到本地的過(guò)程中,對(duì)每個(gè)TS片段文件進(jìn)行順序編號(hào),以使下載到本地的TS片段文件的讀取順序與所述所有TS片段文件在所述M3U8文件中的播放順序相同; 播放單元,用于在第K個(gè)TS片段文件下載完成后,開(kāi)始根據(jù)每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放,其中,K為I到M中的任意一個(gè)整數(shù),M為小于TS片段文件總數(shù)的正整數(shù)。7.如權(quán)利要求6所述的裝置,其特征在于,在所述TS片段文件總數(shù)大于5時(shí),所述K為1-5中的任意一個(gè)整數(shù)。8.如權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括: 驗(yàn)證單元,用于在依次將每個(gè)TS片段文件下載到本地的過(guò)程中,對(duì)下載到本地的每個(gè)TS片段文件的完整性進(jìn)行驗(yàn)證,并獲取未通過(guò)驗(yàn)證的TS片段文件; 所述下載單元,還用于根據(jù)所述未通過(guò)驗(yàn)證的TS片段文件的文件地址,重新將完整的所述未通過(guò)驗(yàn)證的TS片段文件下載到本地。9.如權(quán)利要求6-8任一項(xiàng)所述的裝置,其特征在于,所述裝置還包括: 加密單元,用于在依次將每個(gè)TS片段文件下載到本地的過(guò)程中,對(duì)下載到本地的每個(gè)TS片段文件進(jìn)行加密。10.如權(quán)利要求9所述的裝置,其特征在于,所述裝置還包括: 解密單元,用于對(duì)已加密的每個(gè)TS片段文件進(jìn)行解密; 所述播放單元,還用于根據(jù)解密后每個(gè)TS片段文件對(duì)應(yīng)的編號(hào)順序,依次在緩存中讀取已下載到本地的TS片段文件進(jìn)行播放。
【文檔編號(hào)】H04N21/462GK105933799SQ201610334945
【公開(kāi)日】2016年9月7日
【申請(qǐng)日】2016年5月19日
【發(fā)明人】陳龍, 李強(qiáng)
【申請(qǐng)人】成都虛擬世界科技有限公司