一種基于hls協(xié)議的視頻精確定位裝置及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及流媒體播放領(lǐng)域,具體來(lái)講是指一種基于HLS協(xié)議的視頻精確定位裝置及方法。
【背景技術(shù)】
[0002]隨著數(shù)字技術(shù)和互聯(lián)網(wǎng)技術(shù)的發(fā)展,互聯(lián)網(wǎng)多媒體的應(yīng)用日益興旺,HLS(HTTPLive Streaming,Apple的動(dòng)態(tài)碼率自適應(yīng)技術(shù))的規(guī)范在互聯(lián)網(wǎng)多媒體中應(yīng)用越來(lái)越廣泛。HLS協(xié)議特點(diǎn)是將容量巨大的連續(xù)媒體數(shù)據(jù)進(jìn)行分段,分割為數(shù)量眾多的TSCTransportStream)分片進(jìn)行傳遞,機(jī)頂盒不斷的請(qǐng)求下載TS分片實(shí)現(xiàn)流暢的播放。在HLS協(xié)議規(guī)范中,每個(gè)TS分片都有#EXTINF字段標(biāo)識(shí)分片的時(shí)長(zhǎng),并且每個(gè)分片都有一個(gè)序列號(hào)與之相對(duì)應(yīng),因此,HLS支持直播和點(diǎn)播的同時(shí),也支持點(diǎn)播的定位操作。由于每個(gè)TS分片具有序列號(hào)和時(shí)長(zhǎng)的信息,所以機(jī)頂盒可以根據(jù)定位的時(shí)間去計(jì)算需要播放的TS分片,根據(jù)計(jì)算結(jié)果選擇需要播放的TS分片進(jìn)行播放,這樣就達(dá)到了定位的效果。
[0003]目前大多數(shù)HLS應(yīng)用中的定位時(shí)間單位是秒,小于一個(gè)TS分片的時(shí)長(zhǎng),當(dāng)定位的時(shí)間在一個(gè)TS分片中間的時(shí)候,機(jī)頂盒就需要下載該分片播放,并沒(méi)有精確到定位時(shí)間附近的I幀進(jìn)行播放;但是如果不從I幀開(kāi)始播放,播放會(huì)有花屏,播放效果不好,給用戶(hù)的感覺(jué)是定位不夠精確,用戶(hù)體驗(yàn)效果差。
【發(fā)明內(nèi)容】
[0004]針對(duì)現(xiàn)有技術(shù)中存在的缺陷,本發(fā)明的目的在于提供一種基于HLS協(xié)議的視頻精確定位裝置及方法,在播放中實(shí)現(xiàn)精準(zhǔn)定位,避免花屏,播放效果好,提高用戶(hù)體驗(yàn)。
[0005]為達(dá)到以上目的,本發(fā)明采取一種基于HLS協(xié)議的視頻精確定位裝置,設(shè)置于機(jī)頂盒,包括控制模塊,以及分別與控制模塊相連的播放模塊、循環(huán)緩存模塊、I幀檢索模塊和HLS模塊,循環(huán)緩存模塊還分別連接I幀檢索模塊和HLS模塊;其中,HLS模塊用于與HLS服務(wù)器交互,循環(huán)緩存模塊用于對(duì)TS分片循環(huán)下載并管理,I幀檢索模塊用于對(duì)循環(huán)緩存模塊中下載的TS分片進(jìn)行查找并建立I幀索引列表,播放模塊用于從循環(huán)緩存模塊中取TS分片進(jìn)行播放,控制模塊用于控制上述所有模塊。
[0006]在上述技術(shù)方案的基礎(chǔ)上,HLS模塊中設(shè)有播放列表,播放列表的表項(xiàng)包括TS分片長(zhǎng)度以及對(duì)應(yīng)的分片序列號(hào)。
[0007]本發(fā)明還提供一種基于HLS協(xié)議的視頻精確定位方法,機(jī)頂盒收到HLS點(diǎn)播播放命令,HLS模塊下載對(duì)應(yīng)的M3U8文件并解析,生成TS分片索引,循環(huán)緩存模塊下載TS分片,播放模塊播放循環(huán)緩存模塊已下載的TS分片,I幀檢索模塊對(duì)循環(huán)緩存中每一個(gè)下載的TS分片進(jìn)行檢索,并建立I幀索引列表;當(dāng)機(jī)頂盒收到定位播放命令后,控制模塊根據(jù)定位時(shí)間計(jì)算需要播放的TS分片信息,從循環(huán)緩存模塊中尋找需要播放的TS分片信息,再根據(jù)定位時(shí)間和I幀索引列表計(jì)算出循環(huán)緩存模塊中存儲(chǔ)該定位時(shí)間視頻內(nèi)容的I幀地址信息,播放模塊根據(jù)循環(huán)緩存模塊中I幀地址信息,提取對(duì)應(yīng)的音視頻數(shù)據(jù)進(jìn)行播放。
[0008]在上述技術(shù)方案的基礎(chǔ)上,HLS模塊下載對(duì)應(yīng)的M3U8文件并解析的具體步驟為:S201.HLS模塊根據(jù)接收到的播放URL,向服務(wù)器請(qǐng)求一級(jí)M3U8文件;S202.對(duì)獲取到的一級(jí)M3U8文件進(jìn)行解析并生成二級(jí)M3U8文件請(qǐng)求URL ;S203.HLS模塊向服務(wù)器請(qǐng)求二級(jí)M3U8文件;S204.HLS模塊對(duì)獲取到的二級(jí)M3U8文件進(jìn)行解析并生成TS分片索引。
[0009]在上述技術(shù)方案的基礎(chǔ)上,循環(huán)緩存模塊根據(jù)TS分片索引依次下載需要播放的TS分片。
[0010]在上述技術(shù)方案的基礎(chǔ)上,循環(huán)緩存模塊下載TS分片過(guò)程中,實(shí)時(shí)判斷循環(huán)緩存模塊內(nèi)部空余大小,若內(nèi)部空余不足時(shí),停止下載TS分片,只有在內(nèi)部空余足夠時(shí),繼續(xù)下載新的TS分片。
[0011]在上述技術(shù)方案的基礎(chǔ)上,I幀檢索模塊建立I幀索引列表的流程為:S301.對(duì)下載到循環(huán)緩存模塊中的TS分片進(jìn)行節(jié)目關(guān)聯(lián)表解析;S302.根據(jù)解析到的節(jié)目關(guān)聯(lián)表,對(duì)節(jié)目映射表進(jìn)行解析;S303.根據(jù)解析到的節(jié)目映射表,對(duì)視頻標(biāo)志碼傳輸包進(jìn)行解析;
5304.根據(jù)解析到的視頻標(biāo)志碼傳輸包,在TS分片中找到視頻標(biāo)志碼傳輸包的PES包頭;
5305.根據(jù)找到的PES包頭,判斷是否為I幀的PES包頭數(shù)據(jù),若是,進(jìn)入S306;若否,進(jìn)入S304 ;S306.根據(jù)找到的I幀PES包頭數(shù)據(jù)建立I幀索引列表,進(jìn)入S301。
[0012]在上述技術(shù)方案的基礎(chǔ)上,機(jī)頂盒從循環(huán)緩存模塊中尋找需要播放的TS分片信息,如果此時(shí)循環(huán)緩存模塊中沒(méi)有需要播放的TS分片信息,則循環(huán)換緩存模塊由網(wǎng)絡(luò)中下載該TS分片,下載完成后,再進(jìn)行I幀檢索,建立I幀索引列表。
[0013]本發(fā)明的有益效果在于:針對(duì)TS分片的I幀信息進(jìn)行檢索并建立I幀索引列表,在定位操作時(shí),根據(jù)定位的時(shí)間信息計(jì)算出需要播放的I幀,機(jī)頂盒從計(jì)算出來(lái)的I幀開(kāi)始播放,解決了不能定位到TS分片中間的問(wèn)題,能夠在不修改HLS協(xié)議的基礎(chǔ)上,在機(jī)頂盒側(cè)就能實(shí)現(xiàn)HLS協(xié)議的視頻精確定位,播放效果好,提高用戶(hù)體驗(yàn)。
【附圖說(shuō)明】
[0014]圖1為本發(fā)明實(shí)施例基于HLS協(xié)議的視頻精確定位裝置不意圖;
[0015]圖2為本發(fā)明實(shí)施例基于HLS協(xié)議的視頻精確定位方法的流程圖;
[0016]圖3為本發(fā)明實(shí)施例HLS模塊下載對(duì)應(yīng)的M3U8文件并解析的流程圖;
[0017]圖4為本發(fā)明實(shí)施例建立I幀索引列表的流程圖。
[0018]附圖標(biāo)記:
[0019]1-控制模塊,2-播放模塊,3-循環(huán)緩存模塊、4-1幀檢索模塊,5-HLS模塊。
【具體實(shí)施方式】
[0020]以下結(jié)合附圖及實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說(shuō)明。
[0021]如圖1所示,本發(fā)明基于HLS協(xié)議的視頻精確定位裝置,設(shè)置于機(jī)頂盒,包括控制模塊1,以及分別與控制模塊I相連的播放模塊2、循環(huán)緩存模塊3、I幀檢索模塊4和HLS模塊5,循環(huán)緩存模塊3還分別連接播放模塊2、I幀檢索模塊4和HLS模塊5,HLS模塊中設(shè)有播放列表,播放列表的表項(xiàng)包括TS分片長(zhǎng)度以及對(duì)應(yīng)的分片序列號(hào)。其中,HLS模塊5用于與HLS服務(wù)器交互,完成HLS協(xié)議的實(shí)現(xiàn);循環(huán)緩存模塊3用于對(duì)TS分片循環(huán)下載并管理幀檢索模塊4用于對(duì)循環(huán)緩存模塊3中下載的TS分片進(jìn)行查找并建立I幀索引列表;播放模塊2用于從循環(huán)緩存模塊3中取TS分片進(jìn)行播放;控制模塊I用于控制播放模塊2、循環(huán)緩存模塊3、I幀檢索模塊4和HLS模塊5協(xié)同工作,完成HLS播放以及基于HLS的精確定位。
[0022]如圖2所示,本發(fā)明實(shí)施例基于HLS協(xié)議的視頻精確定位方法的詳細(xì)步驟如下:
[0023]S1.機(jī)頂盒接收到HLS點(diǎn)播播放命令。
[0024]S2.控制模塊I根據(jù)收到的HLS點(diǎn)播播放命令以及播放URL (Uniform ResourceLocator,統(tǒng)一資源定位符),控制HLS模塊5下載對(duì)應(yīng)的M3U8文件并解析,生成TS分片索引。
[0025]S3.循環(huán)緩存模塊3根據(jù)網(wǎng)絡(luò)情況選擇合適碼率,根據(jù)TS分片索引依次下載需要播放的TS分片。同時(shí),播放模塊2播放循環(huán)緩存模塊3中已下載的TS分片,I幀檢索模塊4對(duì)循環(huán)緩存模塊3中每一個(gè)下載的TS分片進(jìn)行檢索,并建立I幀索引列表。在循環(huán)緩存模塊3下載TS分片過(guò)程中,循環(huán)緩存模塊3實(shí)時(shí)判斷循環(huán)緩存模塊內(nèi)部空余大小,若內(nèi)部空余不足時(shí),停止下載TS分片,只有在內(nèi)部空余足夠時(shí),繼續(xù)下載新的TS分片。
[0026]S4.控制模塊