本發(fā)明實施例涉及視頻技術領域,尤其涉及一種在線播放視頻的方法及設備和應用該在線播放視頻的方法的裝置。
背景技術:
背景內容介紹:隨著網絡通信技術的發(fā)展,網絡的功能也越來越大,不但可以通過網絡瀏覽網頁、查詢信息,而且還可以通過網絡播放視頻等。在播放視頻時,可以將視頻下載到本地進行播放,也可以直接在線播放視頻。在線播放視頻時,通常會有高清、標清、超清等不同分辨率的片源可供用戶選擇。
現有的在線播放視頻技術中,通常是利用HLS協議來實現在線切換具有不同分辨率的視頻。雖然HLS協議中具有帶寬自適應機制,能夠使當前播放的視頻的分辨率與帶寬進行自適應。但是,當用戶想要手動切換不同分辨率的視頻時,該種方法則無法滿足用戶的需求。
其次,現有技術在切換不同分辨率的視頻時,需要關閉當前播放的進程,重新創(chuàng)建一個播放實例才能完成視頻的切換。由于重新創(chuàng)建播放實例是一個重量級的操作,需要耗費很長的時間才能完成播放實例的創(chuàng)建,因此,會導致當前視頻暫停時間較長的現象發(fā)生,大大降低了用戶的觀影體驗。
技術實現要素:
本發(fā)明實施例提供一種在線播放視頻的方法、設備及裝置,用以解決現有技術在切換不同分辨率的視頻時,存在暫停時間較長,影像用戶觀影體驗的問題。
本發(fā)明實施例提供一種在線播放視頻的方法,包括:
當需要將目標視頻的第一分辨率版本切換成第二分辨率版本時,獲取第二分辨率版本對應的第二播放文件,第二播放文件中包括第二播放列表,播放列表用于描述目標視頻中多個視頻切片的播放順序;
查找位于緩存播放隊列末尾位置處的第一視頻切片在第二播放列表中的位置;
根據位置以及第二播放列表中的多個視頻切片的排列順序,順序下載第二版本的第二視頻切片;
在第二播放列表中與第二視頻切片對應的標簽位置添加不連續(xù)標簽;
根據不連續(xù)標簽,播放第二視頻切片。
本發(fā)明實施例提供一種在線播放視頻的設備,包括:
第一獲取模塊,用于當需要將目標視頻的第一分辨率版本切換成第二分辨率版本時,獲取第二分辨率版本對應的第二播放文件,第二播放文件中包括第二播放列表,播放列表用于描述目標視頻中多個視頻切片的播放順序;
查找模塊,用于查找位于緩存播放隊列末尾位置處的第一視頻切片在第二播放列表中的位置;
第一下載模塊,用于根據位置以及第二播放列表中的多個視頻切片的排列順序,順序下載第二版本的第二視頻切片;
添加模塊,用于在第二播放列表中與第二視頻切片對應的標簽位置添加不連續(xù)標簽;
播放模塊,用于根據不連續(xù)標簽,播放第二視頻切片。
本發(fā)明實施例還提供一種在線播放視頻的裝置,該裝置包括處理器,其中,處理器中的程序執(zhí)行上述在線播放視頻的方法中的任一項。
本發(fā)明實施例提供的在線播放視頻的方法及設備、裝置,通過在需要將目標視頻的第一分辨率版本切換成第二分辨率版本的情況下,獲取第二分辨率版本對應的第二播放文件,第二播放文件中包括第二播放列表,播放列表用于描述目標視頻中多個視頻切片的播放順序;查找位于緩存播放隊列末尾位置處的第一視頻切片在第二播放列表中的位置;根據位置以及第二播放列表中的多個視頻切片的排列順序,順序下載第二版本的第二視頻切片;在第二播放列表中與第二視頻切片對應的標簽位置添加不連續(xù)標簽;根據不連續(xù)標簽,播放第二視頻切片,從而有效地克服了現有技術中需要重新建立播放實例的弊端,實現了具有不同分辨率的視頻數據之間的無縫切換,大大提高了用戶的觀影體驗。
附圖說明
為了更清楚地說明本發(fā)明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1為本發(fā)明在線播放視頻的方法實施例流程圖;
圖2為本發(fā)明在線播放視頻的方法具體實施例流程圖;
圖3為本發(fā)明在線播放視頻的設備實施例結構示意圖;
圖4為本發(fā)明在線播放視頻的設備實施例結構示意圖;
圖5為本發(fā)明在線播放視頻的設備實施例結構示意圖;
圖6為本發(fā)明在線播放視頻的設備實施例結構示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
參照圖1,示出了本發(fā)明的一種在線播放視頻的方法實施例的步驟流程圖。在圖1中:
步驟101,當需要將目標視頻的第一分辨率版本切換成第二分辨率版本時,獲取第二分辨率版本對應的第二播放文件。
其中,第二播放文件中包括第二播放列表,播放列表用于描述目標視頻中多個視頻切片的播放順序。
具體的,從用戶預先設置的片源地址下載適應當前網絡環(huán)境或用戶需求的播放文件。片源地址中包括具有不同分辨率的視頻數據所對應的播放文件的下載地址。
步驟102,查找位于緩存播放隊列末尾位置處的第一視頻切片在第二播放列表中的位置。
具體的,在本發(fā)明的實施例中每下載一個視頻切片后,都會按照播放列表中的順序,將視頻切片依次發(fā)送至緩存播放隊列中。當需要切換第二版本時,查找位于緩存播放隊列末尾位置處的第一視頻切片在第二播放列表中的位置。
步驟103,根據該位置以及第二播放列表中的多個視頻切片的排列順序,順序下載第二版本的第二視頻切片。
具體的,根據第一視頻切片在第二播放列表中的位置,按照第二播放列表中多個視頻切片的排列順序,繼續(xù)下載第二版本的第二視頻切片。
步驟104,在第二播放列表中與第二視頻切片對應的標簽位置添加不連續(xù)標簽。
具體的,播放列表中的每個視頻切片都具有屬性設置,其中,屬性設置中包括有標簽位。在第二視頻切片對應的標簽位置添加不連續(xù)標簽DISCONTINUITY。
步驟105,根據不連續(xù)標簽,播放第二視頻切片。
具體的,在播放器播放緩存隊列中的視頻切片時,檢測到第二視頻切片的標簽位置含有不連續(xù)標簽DISCONTINUITY,則在當前播放的第一視頻切片播放完畢后,切換至第二版本的第二視頻切片。
借助于本發(fā)明上述實施例的技術方案,當需要將目標視頻的第一分辨率版本切換成第二分辨率版本時,本發(fā)明通過獲取第二分辨率版本對應的第二播放文件;查找位于緩存播放隊列末尾位置處的第一視頻切片在第二播放文件中的第二播放列表中的位置;根據該位置以及第二播放列表中的多個視頻切片的排列順序,順序下載第二版本的第二視頻切片;在第二播放列表中與第二視頻切片對應的標簽位置添加不連續(xù)標簽;根據不連續(xù)標簽,播放第二視頻切片,從而有效地克服了現有技術中需要重新建立播放實例的弊端,實現了具有不同分辨率的視頻數據之間的無縫切換,大大提高了用戶的觀影體驗。
為了更好的理解本發(fā)明的上述技術方案,下面結合一具體實施例來對本發(fā)明的上述技術方案進行詳細闡述。
參照如圖2,示出了本發(fā)明的在線播放視頻的方法具體實施例的步驟流程圖,在圖2中:
步驟201:用戶設置片源地址。
用戶通過設置片源地址給播放器,使播放器能夠從片源地址中選擇適應當前播放環(huán)境的視屏數據。在本實施例中,以默認選擇具有4K分辨率的視頻數據進行舉例。用戶設置地址為:http://le.com/test.m3u8。播放器從該地址中獲取具有不同分辨率的視屏數據的播放文件下載地址,在本實施例中,播放文件為M3U8文件。
其中,片源地址指向的文件格式如表1所示:
表1
如表1所示,用戶可預先設置帶寬與不同分辨率視頻數據之間的對應關系。例如:如果當前的網絡環(huán)境為帶寬是1500000M時,對應4K的視頻數據的下載地址。
步驟202,獲取與第一分辨率版本對應的第一播放文件。
具體的,播放器中的M3U8Service進程被激發(fā),從http://le.com/test.m3u8地址中下載4K視頻數據對應的M3U8文件。
步驟203,解析第一播放文件,獲取第一分辨率版本中的多個視頻切片的下載地址以及第一播放列表。
具體的,通過M3U8Service進程解析第一M3U8文件,M3U8文件中包括4K視頻數據的多個視頻切片的下載地址以及用于確定播放順序的播放列表。通知Livesession進程。
步驟204,根據下載地址,下載位于第一播放列表中第一位置處的視頻切片。
根據下載地址,Livesession進程等待M3U8Service發(fā)來的通知。在接收到通知后,從M3U8進程中獲取位于索引列表中第一位置處的1.ts視頻切片的下載地址,并下載該1.ts視頻切片。
步驟205,解析視頻切片,將解析后的視頻切片發(fā)送至緩存播放隊列等待播放。
Livesession進程對1.ts視頻切片進行解析,解析出音頻數據和視頻數據,并將解析后的音頻和視頻數據發(fā)送至緩存播放隊列等待解碼器讀取并播放。
步驟206,按照第一播放列表中的多個視頻切片的排列順序,下載下一個視頻切片,并重復上一解析步驟。
在1.ts解析完成后,按照索引列表中的多個視頻切片的排列順序,下載2.ts視頻切片,并重復步驟205,即對2.ts解析后,繼續(xù)下載3.ts依次對多個視頻切片進行下載與解析。
步驟207,若在將第一視頻切片發(fā)送至緩存播放隊列之后網絡帶寬發(fā)生變化,則根據當前網絡帶寬,獲取與當前網絡帶寬相匹配的第二播放文件。
BandwidthEstimator進程實時監(jiān)控網絡帶寬,在本實施例中,如果已經下載完成n.ts視頻切片,并將n.ts切片發(fā)送至緩存播放隊列中,此時,監(jiān)測到網絡帶寬從1500000M降至1000000M。BandwidthEstimator進程監(jiān)測到網絡帶寬發(fā)生了變化,發(fā)廣播通知M3U8Service進程。
M3U8Service進程接到通知,并檢測到網絡帶寬由1500000M將至1000000M。則此時,需要將當前播放的4K視頻數據切換至與1000000M網絡帶寬相匹配的1080P視頻數據。則M3U8Service進程將下載1080P視頻數據的M3U8文件。進入步驟209。
步驟208,若在將第一視頻切片發(fā)送至緩存隊列之后接收到視頻切換指令,則根據視頻切換指令,獲取第二播放文件。
在本實施例中,如果已經下載完成n.ts視頻切片,并將n.ts切片發(fā)送至緩存播放隊列中,此時,用戶主動指定將4K視頻數據切換至1080P視頻數據。setParms進程接收視頻切換指令,并發(fā)送給m3u8Service進程。m3u8Service進程根據視頻切換指令,下載1080P視頻數據的M3U8文件。進入步驟209。
步驟209,解析第二播放文件,獲取第二分辨率版本中的多個視頻切片的下載地址以及第二播放列表。
M3U8Service進程解析1080P視頻數據的M3U8文件,獲取1080P視頻數據的多個視頻切片的下載地址以及播放列表。
步驟210,查找位于緩存播放隊列末尾位置處的第一視頻切片在第二播放列表中的位置。
M3U8Service進程查找當前緩存播放隊列中位于隊尾位置處的n.ts視頻切片在播放列表中的位置。在本實施例中,n.ts位于播放列表中的第n個順序位。
步驟211,根據位置以及第二播放列表中的多個視頻切片的排列順序,順序下載第二版本的第二視頻切片。
具體的,M3U8Service進程按照播放列表中的多個視頻切片的排列順序,在第n+1個視頻切片對應的標簽位置處添加不連續(xù)標簽DISCONTINUITY。
步驟212,根據不連續(xù)標簽,播放第二視頻切片。
具體的,Livesession進程在按照第二播放列表中的多個視頻切片的排列順序,依次播放緩存播放隊列中的多個視頻切片的過程中,在播放完n.ts視頻切片并即將要播放n+1.ts視頻切片時,檢測到n+1.ts切片的標簽位包含有不連續(xù)標簽DISCONTINUITY,則Livesession進程通過該標簽位獲知需要將當前播放的4K視頻數據切換為1080P視頻數據,同時Livesession進程將相關參數修改為與1080P對應的參數,并開始播放1080P的第二視頻切片。
然后,與步驟204-206類似,同樣重復下載與解析步驟,從而完成對1080P的視頻切片的下載與播放。
借助于本發(fā)明上述實施例的技術方案,本發(fā)明通過多線程同時工作,從而有效地克服了現有技術中需要重新建立播放實例的弊端,實現了具有不同分辨率的視頻數據之間的無縫切換。此外,本發(fā)明還能夠利用HLS協議在用戶手動指定切換不同分辨率的視頻數據的情況下,實現在線視頻播放的無縫隙切換,大大提高了用戶的觀影體驗。
參照圖3,示出了本發(fā)明一種在線播放視頻的設備的結構框圖,具體可以包括如下模塊:
第一獲取模塊31,用于當需要將目標視頻的第一分辨率版本切換成第二分辨率版本時,獲取第二分辨率版本對應的第二播放文件,第二播放文件中包括第二播放列表,播放列表用于描述目標視頻中多個視頻切片的播放順序。
查找模塊32,用于查找位于緩存播放隊列末尾位置處的第一視頻切片在第二播放列表中的位置。
第一下載模塊33,用于根據位置以及第二播放列表中的多個視頻切片的排列順序,順序下載第二版本的第二視頻切片。
添加模塊34,用于在第二播放列表中與第二視頻切片對應的標簽位置添加不連續(xù)標簽。
播放模塊35,用于根據不連續(xù)標簽,播放第二視頻切片。
參照圖4,在本發(fā)明的一個優(yōu)選的實施例中,在圖3的基礎上本發(fā)明的在線播放視頻的設備還可以包括第二獲取模塊41,用于獲取與第一分辨率版本對應的第一播放文件。第一解析模塊42,用于解析第一播放文件,獲取第一分辨率版本中的多個視頻切片的下載地址以及第一播放列表,其中,第一播放列表中的多個視頻切片的排列順序與第二播放列表中的多個視頻切片的排列順序相同。第二下載模塊43,用于根據下載地址,下載位于第一播放列表中第一位置處的視頻切片。第二解析模塊44,用于解析視頻切片,將解析后的視頻切片發(fā)送至緩存播放隊列等待播放。第三下載模塊45,用于按照第一播放列表中的多個視頻切片的排列順序,下載下一個視頻切片,并重復調用第二解析模塊44。
參照圖5,在本發(fā)明的一個優(yōu)選的實施例中,在圖3的基礎上第一獲取模塊31還可以包括第一獲取子模塊51,用于若在將第一視頻切片發(fā)送至緩存播放隊列之后網絡帶寬發(fā)生變化,則根據當前網絡帶寬,獲取與當前網絡帶寬相匹配的第二播放文件。第一解析子模塊52,用于解析第二播放文件,獲取第二分辨率版本中的多個視頻切片的下載地址以及第二播放列表。第二獲取子模塊53,用于若在將第一視頻切片發(fā)送至緩存隊列之后接收到視頻切換指令,則根據視頻切換指令,獲取第二播放文件。第二解析子模塊54,用于解析第二播放文件,獲取第二分辨率版本中的多個視頻切片的下載地址以及第二播放列表。
參照圖6,在本發(fā)明的一個優(yōu)選的實施例中,在圖3的基礎上播放模塊35還可以包括第一播放子模塊61,用于按照第二播放列表中的多個視頻切片的排列順序,依次播放緩存播放隊列中的多個視頻切片。檢測子模塊62,用于在第一視頻播放結束后,檢測到即將播放的第二視頻切片的標簽位置含有不連續(xù)標簽。第二播放子模塊63,用于播放第二視頻切片。
在本發(fā)明的另一個實施例中還提供一種應用上述在線播放視頻的方法的裝置,該裝置包括處理器,本發(fā)明實施例中可以通過硬件處理器(hardware processor)來實現相關功能模塊。
對于設備和裝置實施例而言,由于其與方法實施例基本相似,所以描述的比較簡單,相關之處參見方法實施例的部分說明即可。
以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上??梢愿鶕嶋H的需要選擇其中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術人員在不付出創(chuàng)造性的勞動的情況下,即可以理解并實施。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件。基于這樣的理解,上述技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品可以存儲在計算機可讀存儲介質中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執(zhí)行各個實施例或者實施例的某些部分所述的方法。
最后應說明的是:以上實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的精神和范圍。