本發(fā)明涉及視頻播放技術(shù)領(lǐng)域,特別是涉及一種視頻播放控制方法及裝置。
背景技術(shù):
目前,安卓智能終端設(shè)備上的視頻應(yīng)用軟件通常都有關(guān)于清晰度的設(shè)置,例如,480P、720P、1080P等。用戶可以設(shè)定播放視頻的清晰度,視頻應(yīng)用軟件在播放視頻時(shí),就會向服務(wù)器請求用戶所設(shè)定的清晰度對應(yīng)的視頻流。
但是,現(xiàn)在的視頻應(yīng)用可以在多個小播放窗口同時(shí)播放不同的視頻,如果播放窗口比較小,而視頻的清晰度比較高(例如,1080P),這樣,視頻每一幀對應(yīng)的畫面所包含的像素比較多,遠(yuǎn)遠(yuǎn)超過小播放窗口所占屏幕區(qū)域的像素,此種應(yīng)用場景下需要縮小視頻畫面。視頻清晰度越高需要的網(wǎng)絡(luò)帶寬就越大,因此,利用小播放窗口播放清晰度較高的視頻,會造成網(wǎng)絡(luò)帶寬資源的浪費(fèi)。而且,視頻清晰度較高會增加了安卓智能終端設(shè)備的解碼資源(例如,解碼器或CPU)的負(fù)擔(dān)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例中提供了一種視頻播放控制方法及裝置,以解決現(xiàn)有技術(shù)中的視頻的碼流較高而播放窗口小導(dǎo)致的網(wǎng)絡(luò)帶寬資源浪費(fèi)的問題。
為了解決上述技術(shù)問題,本發(fā)明實(shí)施例公開了如下技術(shù)方案:
第一方面,本發(fā)明實(shí)施例提供一種視頻播放控制方法,應(yīng)用于視頻客戶端中,包括:
當(dāng)所述視頻客戶端播放待播放視頻時(shí),獲取播放窗口的尺寸;
從所述待播放視頻所對應(yīng)的全部可選碼流中,確定出分辨率大于或等于所述播放窗口的尺寸且最小的目標(biāo)碼流;
播放所述目標(biāo)碼流對應(yīng)的待播放視頻。
可選地,所述從所述待播放視頻所對應(yīng)的全部可選碼流中,確定出分辨率大于或等于所述播放窗口的尺寸且最小的目標(biāo)碼流,包括:
獲取所述待播放視頻的全部可選碼流;
比較所述可選碼流對應(yīng)分辨率與所述播放窗口的寬高,得到分辨率大于或等于所述播放窗口的寬高的可選碼流;
從分辨率大于或等于所述播放窗口的寬高的可選碼流中,選擇分辨率最小的可選碼流確定為所述目標(biāo)碼流。
可選地,若所述視頻客戶端的默認(rèn)碼流大于所述目標(biāo)碼流,則所述播放所述目標(biāo)碼流對應(yīng)的待播放視頻,包括:
所述視頻客戶端停止播放所述默認(rèn)碼流的待播放視頻;
所述視頻客戶端向服務(wù)器發(fā)送第一播放請求,所述第一播放請求用于向服務(wù)器請求播放所述目標(biāo)碼流對應(yīng)的待播放視頻;
所述視頻客戶端接收所述服務(wù)器發(fā)送的所述目標(biāo)碼流對應(yīng)的待播放視頻;
所述視頻客戶端播放所述目標(biāo)碼流對應(yīng)的待播放視頻。
可選地,若所述視頻客戶端的默認(rèn)碼流大于所述目標(biāo)碼流,則所述播放所述目標(biāo)碼流對應(yīng)的待播放視頻,包括:
所述視頻客戶端重新構(gòu)建第二播放器,并向所述第二播放器提供所述目標(biāo)碼流的待播放視頻所對應(yīng)的播放地址;
所述第二播放器根據(jù)所述播放地址向服務(wù)器發(fā)送第二播放請求,所述第二播放請求用于向服務(wù)器請求播放所述目標(biāo)碼流對應(yīng)的待播放視頻;
當(dāng)所述第二播放器接收到所述服務(wù)器發(fā)送的所述目標(biāo)碼流對應(yīng)的待播放視頻時(shí),銷毀第一播放器,所述第一播放器用于播放默認(rèn)碼流的待播放視頻;
建立所述第二播放器與所述播放窗口之間的關(guān)聯(lián)。
可選地,所述獲取播放窗口的尺寸,包括:
從surfaceChanged回調(diào)方法中獲取所述播放窗口的寬高。
第二方面,本發(fā)明實(shí)施例提供一種視頻播放控制裝置,應(yīng)用于視頻客戶端中,包括:
第一獲取模塊,用于當(dāng)所述視頻客戶端播放待播放視頻時(shí),獲取播放窗口的尺寸;
確定模塊,用于從所述待播放視頻所對應(yīng)的全部可選碼流中,確定出分辨率大于或等于所述播放窗口的尺寸且最小的目標(biāo)碼流;
播放模塊,用于播放所述目標(biāo)碼流對應(yīng)的待播放視頻。
可選地,所述確定模塊,包括:
第一獲取子模塊,用于獲取所述待播放視頻的全部可選碼流;
比較子模塊,用于比較所述可選碼流對應(yīng)分辨率與所述播放窗口的寬高,得到分辨率大于或等于所述播放窗口的寬高的可選碼流;
選擇子模塊,用于從分辨率大于或等于所述播放窗口的寬高的可選碼流中,選擇分辨率最小的可選碼流確定為所述目標(biāo)碼流。
可選地,若所述視頻客戶端的默認(rèn)碼流大于所述目標(biāo)碼流,則所述播放模塊,包括:
停止子模塊,用于停止播放所述默認(rèn)碼流的待播放視頻;
第一發(fā)送子模塊,用于向服務(wù)器發(fā)送第一播放請求,所述第一播放請求用于向服務(wù)器請求播放所述目標(biāo)碼流對應(yīng)的待播放視頻;
接收子模塊,用于接收所述服務(wù)器發(fā)送的所述目標(biāo)碼流對應(yīng)的待播放視頻;
播放子模塊,用于播放所述目標(biāo)碼流對應(yīng)的待播放視頻。
可選地,若所述視頻客戶端的默認(rèn)碼流大于所述目標(biāo)碼流,則所述播放模塊,包括:
構(gòu)建子模塊,用于重新構(gòu)建第二播放器,并向所述第二播放器提供所述目標(biāo)碼流的待播放視頻所對應(yīng)的播放地址;
第二發(fā)送子模塊,用于根據(jù)所述播放地址向服務(wù)器發(fā)送第二播放請求,所述第二播放請求用于向服務(wù)器請求播放所述目標(biāo)碼流對應(yīng)的待播放視頻;
銷毀子模塊,用于當(dāng)所述第二播放器接收到所述服務(wù)器發(fā)送的所述目標(biāo)碼流對應(yīng)的待播放視頻時(shí),銷毀第一播放器,所述第一播放器用于播放默認(rèn)碼流的待播放視頻;
建立子模塊,用于建立所述第二播放器與所述播放窗口之間的關(guān)聯(lián)。
可選地,所述第一獲取模塊,具體用于從surfaceChanged回調(diào)方法中獲取所述播放窗口的寬高。
第三方面,本發(fā)明實(shí)施例提供一種視頻播放客戶端,包括如前述的第二方面任一項(xiàng)所述的視頻播放裝置。
第四方面,本發(fā)明實(shí)施例提供一種視頻播放客戶端,包括:
處理器;
用于存儲處理器可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:
當(dāng)所述視頻客戶端播放待播放視頻時(shí),獲取播放窗口的尺寸;
從所述待播放視頻所對應(yīng)的全部可選碼流中,確定出分辨率大于或等于所述播放窗口的尺寸且最小的目標(biāo)碼流;
播放所述目標(biāo)碼流對應(yīng)的待播放視頻。
第五方面,本發(fā)明實(shí)施例提供一種計(jì)算機(jī)存儲介質(zhì),其中,該計(jì)算機(jī)存儲介質(zhì)可存儲有程序,該程序執(zhí)行時(shí)可實(shí)現(xiàn)本發(fā)明第一方面提供一種視頻播放控制方法的各實(shí)現(xiàn)方式中的部分或全部步驟。
由以上技術(shù)方案可見,本發(fā)明實(shí)施例提供的視頻播放控制方法,當(dāng)視頻客戶端播放待播放視頻時(shí),獲取播放窗口的尺寸;然后,從待播放視頻對應(yīng)的全部可選碼流中,選擇出分辨率大于播放窗口的尺寸且像素?cái)?shù)最小的目標(biāo)碼流;并在視頻客戶端播放目標(biāo)碼流的待播放視頻。利用該方法,實(shí)現(xiàn)在不影響視頻畫面清晰度的前提下,根據(jù)播放窗口的大小自動選擇允許的最低碼流,碼流越小需要的網(wǎng)絡(luò)帶寬資源越少,從而節(jié)省了網(wǎng)絡(luò)帶寬資源。而且,碼流越小解碼負(fù)擔(dān)越小,對于采用硬解碼的設(shè)備而言,降低了解碼器的負(fù)擔(dān);對于采用軟解碼的設(shè)備而言,降低了CPU的負(fù)擔(dān),從而降低播放視頻所占用的設(shè)備資源。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例一種視頻播放控制方法的流程示意圖;
圖2為本發(fā)明實(shí)施例提供的一種S120的流程示意圖;
圖3為本發(fā)明實(shí)施例另一種視頻播放控制方法的流程示意圖;
圖4為本發(fā)明實(shí)施例另一種視頻播放控制方法的流程圖;
圖5為本發(fā)明實(shí)施例提供的一種視頻播放裝置的框圖;
圖6為本發(fā)明實(shí)施例提供的一種確定模塊的框圖;
圖7為本發(fā)明實(shí)施例提供的一種播放模塊的框圖;
圖8為本發(fā)明實(shí)施例提供的另一種播放模塊的框圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明中的技術(shù)方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
參見圖1,為本發(fā)明實(shí)施例提供的一種視頻播放控制方法的流程示意圖,該方法應(yīng)用于視頻客戶端中,如圖1所示,該方法可以包括:
S110,當(dāng)所述視頻客戶端播放待播放視頻時(shí),獲取播放窗口的尺寸。
視頻客戶端是指安裝在智能終端設(shè)備(例如,智能手機(jī))上的在線視頻播放應(yīng)用(例如,樂視視頻)。
在本發(fā)明的一些實(shí)施例中,當(dāng)視頻客戶端檢測到用戶使用小的播放窗口播放視頻的操作后,獲取該播放窗口的尺寸,播放窗口的尺寸是指播放窗口的寬高,可以用播放窗口所占屏幕的像素表示,例如,播放窗口的尺寸為1280*720。
如果智能終端設(shè)備是安卓智能設(shè)備,在安卓智能設(shè)備中,視頻在surfaceView中呈現(xiàn);surfaceview是Android系統(tǒng)中的一種特殊視圖,擁有獨(dú)立的繪圖表面,它不與宿主窗口共享同一個繪圖表面。當(dāng)surface的狀態(tài)(大小和格式)發(fā)生變化時(shí)會調(diào)用surfaceChanged函數(shù),可以在surfaceChanged()回調(diào)方法中獲得當(dāng)前播放窗口的寬高。
S120,從所述待播放視頻所對應(yīng)的全部可選碼流中,確定出分辨率大于或等于所述播放窗口的尺寸且最小的目標(biāo)碼流。
從待播放視頻對應(yīng)的可選碼流中選擇出分辨率大于或等于播放窗口的大小,且最低的碼流作為目標(biāo)碼流。
參見圖2,為本發(fā)明實(shí)施例提供的一種S120的流程示意圖,該方法應(yīng)用于視頻客戶端中,如圖2所示,該方法可以包括以下步驟:
S121,獲取所述待播放視頻的全部可選碼流。
視頻客戶端可以從服務(wù)器中獲取待播放視頻對應(yīng)的可選碼流;其中,不同的視頻對應(yīng)的可選碼流可能不同,例如,視頻1的可選碼流是480P和720P,而視頻2的可選碼流是480P、720P和1080P。
S122,比較所述可選碼流對應(yīng)視頻的寬高像素值與所述播放窗口的寬高像素值,得到視頻的寬高像素值均大于或等于所述播放窗口的寬高像素值的可選碼流。
例如,待播放視頻對應(yīng)的可選碼流包括480P(分辨率為720*480)、720P(分辨率為1280*720)和1080P(分辨率為1920*1080),而當(dāng)前的播放窗口的大小為1280*720,則碼流為720P和1080P的分辨率滿足大于或等于播放窗口的大小。
S123,從分辨率大于或等于所述播放窗口的寬高像素值的可選碼流中,選擇分辨率最小的可選碼流確定為所述目標(biāo)碼流。
延用上述示例,720P對應(yīng)視頻的像素?cái)?shù)小于1080P對應(yīng)視頻的像素?cái)?shù),因此,本示例中的目標(biāo)碼流為720P。
S130,播放所述目標(biāo)碼流對應(yīng)的待播放視頻。
同一視頻的不同碼流對應(yīng)的視頻文件對應(yīng)不同的播放地址。確定目標(biāo)碼流后,視頻客戶端獲取目標(biāo)碼流的待播放視頻所對應(yīng)的播放地址,并將該播放地址提供給播放器(該播放器由視頻客戶端創(chuàng)建),播放器根據(jù)該播放地址生成用于請求播放目標(biāo)碼流對應(yīng)待播放視頻的播放請求,并將播放請求發(fā)送給服務(wù)器,服務(wù)器讀取播放請求中攜帶的路徑內(nèi)的視頻流,并將該視頻流返回給播放器,由播放器播放該視頻流。
本實(shí)施例提供的視頻播放控制方法,當(dāng)視頻客戶端播放待播放視頻時(shí),獲取播放窗口的尺寸;然后,從待播放視頻對應(yīng)的全部可選碼流中,選擇出分辨率大于或等于播放窗口的尺寸且最小的目標(biāo)碼流;并在視頻客戶端播放目標(biāo)碼流的待播放視頻。利用該方法,實(shí)現(xiàn)在不影響視頻畫面清晰度的前提下,根據(jù)播放窗口的大小自動選擇允許的最低碼流,碼流越小需要的網(wǎng)絡(luò)帶寬資源越少,從而節(jié)省了網(wǎng)絡(luò)帶寬資源。而且,碼流越小解碼負(fù)擔(dān)越小,對于采用硬解碼的設(shè)備而言,降低了解碼器的負(fù)擔(dān);對于采用軟解碼的設(shè)備而言,降低了CPU的負(fù)擔(dān),從而降低播放視頻所占用的設(shè)備資源。
參見圖3,為本發(fā)明實(shí)施例另一種視頻播放控制方法的流程示意圖,如圖3所示,該方法包括以下步驟:
S210,當(dāng)所述視頻客戶端播放待播放視頻時(shí),獲取播放窗口的尺寸。
S220,從所述待播放視頻所對應(yīng)的全部可選碼流中,確定出分辨率大于或等于所述播放窗口的尺寸且最小的目標(biāo)碼流。
S230,視頻客戶端停止播放所述默認(rèn)碼流的待播放視頻。
視頻客戶端在播放目標(biāo)碼流對應(yīng)的待播放視頻之前,播放視頻客戶端上的默認(rèn)碼流的待播放視頻。
在本發(fā)明的一些實(shí)施例中,默認(rèn)碼流可以是視頻客戶端上全局設(shè)置中的碼流,或者,也可以是用戶在播放頁面所設(shè)置的碼流;或者,還可以是視頻客戶端的系統(tǒng)默認(rèn)碼流。
S240,視頻客戶端向服務(wù)器發(fā)送第一播放請求,該第一播放請求用于向服務(wù)器請求播放目標(biāo)碼流對應(yīng)的待播放視頻。
視頻客戶端內(nèi)播放待播放視頻的播放器先停止播放默認(rèn)碼流的待播放視頻,然后,視頻客戶端向該播放器發(fā)送目標(biāo)碼流對應(yīng)的播放地址,播放器根據(jù)目標(biāo)碼流對應(yīng)的播放地址生成第一播放請求,該第一播放請求用于向服務(wù)器請求目標(biāo)碼流對應(yīng)的待播放視頻。服務(wù)器接收到該第一播放請求后,根據(jù)第一播放請求中的播放地址獲得目標(biāo)碼流對應(yīng)的待播放視頻并發(fā)送給視頻客戶端。
S250,視頻客戶端接收所述服務(wù)器發(fā)送的所述目標(biāo)碼流對應(yīng)的待播放視頻。
S260,視頻客戶端播放所述目標(biāo)碼流對應(yīng)的待播放視頻。
視頻客戶端接收到目標(biāo)碼流對應(yīng)的待播放視頻后,利用上述的播放器播放接收到的視頻流。
本實(shí)施例提供的視頻播放控制方法,利用小窗口播放視頻時(shí),在不影響用戶看到的視頻畫面清晰度的前提下,根據(jù)播放窗口的大小動態(tài)選擇允許的最低碼流作為目標(biāo)碼流,從而播放該目標(biāo)碼流對應(yīng)的視頻文件。碼流越小需要的網(wǎng)絡(luò)帶寬資源越少,從而節(jié)省了網(wǎng)絡(luò)帶寬資源。而且,碼流越小解碼負(fù)擔(dān)越小,對于采用硬解碼的設(shè)備而言,降低了解碼器的負(fù)擔(dān);對于采用軟解碼的設(shè)備而言,降低了CPU的負(fù)擔(dān),從而降低播放視頻所占用的設(shè)備資源。
參見圖4,為本發(fā)明實(shí)施例另一種視頻播放控制方法的流程圖,該方法應(yīng)用于視頻客戶端中,如圖4所示,該方法可以包括以下步驟
S310,當(dāng)所述視頻客戶端播放待播放視頻時(shí),利用第一播放器播放默認(rèn)碼流的待播放視頻。
S320,獲取用于播放所述待播放視頻的播放窗口的尺寸。
S330,從所述待播放視頻所對應(yīng)的全部可選碼流中,確定出分辨率大于或等于所述播放窗口的尺寸且最小的目標(biāo)碼流。
S340,視頻客戶端重新構(gòu)建第二播放器,并向第二播放器提供所述目標(biāo)碼流的待播放視頻所對應(yīng)的播放地址。
第一播放器仍播放默認(rèn)碼流的待播放視頻文件;同時(shí),重新構(gòu)建另一個播放器,并為播放目標(biāo)碼流的待播放視頻文件做準(zhǔn)備。具體的,視頻客戶端將目標(biāo)碼流的待播放視頻對應(yīng)的播放地址提供給第二播放器,第二播放器可以根據(jù)該播放地址向服務(wù)器請求播放目標(biāo)碼流的待播放視頻。
S350,第二播放器根據(jù)所述播放地址向服務(wù)器發(fā)送第二播放請求,所述第二播放請求用于向服務(wù)器請求播放所述目標(biāo)碼流對應(yīng)的待播放視頻。
第二播放器根據(jù)目標(biāo)碼流的待播放視頻對應(yīng)的播放地址生成第二播放請求,并發(fā)送給服務(wù)器,服務(wù)器從第二播放請求中獲取目標(biāo)碼流的待播放視頻對應(yīng)的播放地址,并讀取該播放地址對應(yīng)的視頻流發(fā)送給視頻客戶端內(nèi)的第二播放器。
S360,當(dāng)?shù)诙シ牌鹘邮盏剿龇?wù)器發(fā)送的所述目標(biāo)碼流對應(yīng)的待播放視頻時(shí),銷毀第一播放器。
當(dāng)?shù)诙シ牌鹘邮盏椒?wù)器發(fā)送的目標(biāo)碼流對應(yīng)的待播放視頻后,視頻客戶端會銷毀第一播放器,同時(shí),利用第二播放器播放目標(biāo)碼流的待播放視頻,從而減少用戶等待時(shí)間,實(shí)現(xiàn)從默認(rèn)碼流到目標(biāo)碼流的無縫切換,提高了用戶體驗(yàn)。
S370,建立所述第二播放器與所述播放窗口之間的關(guān)聯(lián)。
在創(chuàng)建播放窗口的過程中需要創(chuàng)建SurfaceHolder,SurfaceHolder是一個接口,其作用就像一個關(guān)于Surface的監(jiān)聽器。提供訪問和控制SurfaceView背后的Surface相關(guān)的方法,通過單個回調(diào)方法,讓我們可以感知到Surface的創(chuàng)建、銷毀或改變。通過getHolder方法可以很方便地獲得SurfaceHolder。
當(dāng)?shù)诙シ牌鳒?zhǔn)備好播放目標(biāo)碼流的待播放視頻后,調(diào)用播放器的setDisplay方法將第二播放器和SurfaceHolder關(guān)聯(lián)起來,這樣,第二播放器輸出的畫面就會顯示在這個surfaceHolder上,從播放窗口看到畫面。
本實(shí)施例提供的視頻播放控制方法,在利用小窗口播放視頻時(shí),在不影響用戶看到的視頻畫面清晰度的前提下,根據(jù)播放窗口的大小動態(tài)選擇允許的最低碼流作為目標(biāo)碼流,在切換到播放目標(biāo)碼流對應(yīng)的視頻之前,一直利用第一播放器播放默認(rèn)碼流的視頻,同時(shí)創(chuàng)建第二播放器,為播放目標(biāo)碼流對應(yīng)的視頻做準(zhǔn)備;當(dāng)?shù)诙シ牌饕呀?jīng)準(zhǔn)備好播放目標(biāo)碼流對應(yīng)的視頻時(shí),銷毀第一播放器,并建立第二播放器與播放窗口之間的關(guān)聯(lián),從而減少用戶等待時(shí)間,實(shí)現(xiàn)從默認(rèn)碼流到目標(biāo)碼流的無縫切換,提高了用戶體驗(yàn)。而且,碼流越小解碼負(fù)擔(dān)越小,對于采用硬解碼的設(shè)備而言,降低了解碼器的負(fù)擔(dān);對于采用軟解碼的設(shè)備而言,降低了CPU的負(fù)擔(dān),從而降低播放視頻所占用的設(shè)備資源。
與本發(fā)明提供的視頻播放控制方法實(shí)施例相對應(yīng),本發(fā)明還提供了一種視頻播放控制裝置實(shí)施例。
參見圖5,為本發(fā)明實(shí)施例提供的一種視頻播放裝置的框圖,該裝置應(yīng)用于視頻客戶端中,如圖5所示,該裝置可以包括第一獲取模塊110、確定模塊120和播放模塊130。
第一獲取模塊110,用于當(dāng)所述視頻客戶端播放待播放視頻時(shí),獲取播放窗口的尺寸。
在本發(fā)明的一些實(shí)施例中,當(dāng)視頻客戶端檢測到用戶使用小的播放窗口播放視頻的操作后,獲取該播放窗口的尺寸,播放窗口的尺寸是指播放窗口的寬高,可以用播放窗口所占屏幕的像素表示,例如,播放窗口的尺寸為1280*720。
如果智能終端設(shè)備是安卓智能設(shè)備,在安卓智能設(shè)備中,視頻在surfaceView中呈現(xiàn);surfaceview是Android系統(tǒng)中的一種特殊視圖,擁有獨(dú)立的繪圖表面,它不與宿主窗口共享同一個繪圖表面。當(dāng)surface的狀態(tài)(大小和格式)發(fā)生變化時(shí)會調(diào)用surfaceChanged函數(shù),可以在surfaceChanged()回調(diào)方法中獲得當(dāng)前播放窗口的寬高。
確定模塊120,用于從所述待播放視頻所對應(yīng)的全部可選碼流中,確定出分辨率大于或等于所述播放窗口的尺寸且最小的目標(biāo)碼流。
參見圖6,為本發(fā)明實(shí)施例提供的一種確定模塊的框圖,如圖6所示,該確定模塊120包括第一獲取子模塊121、比較子模塊122和選擇子模塊123。
第一獲取子模塊121,用于獲取所述待播放視頻的全部可選碼流。
比較子模塊122,用于比較所述可選碼流對應(yīng)分辨率與所述播放窗口的寬高,得到分辨率大于或等于所述播放窗口的寬高的可選碼流。
例如,待播放視頻對應(yīng)的可選碼流包括480P(720*480)、720P(1280*720)和1080P(1920*1080),而當(dāng)前的播放窗口的大小為1280*720,則碼流為720P和1080P的分辨率滿足大于或等于播放窗口的大小。
選擇子模塊123,用于從分辨率大于或等于所述播放窗口的寬高的可選碼流中,選擇像素?cái)?shù)最小的可選碼流確定為所述目標(biāo)碼流。
延用上述示例,720P對應(yīng)視頻的像素?cái)?shù)小于1080P對應(yīng)視頻的像素?cái)?shù),因此,本示例中的目標(biāo)碼流為720P。
播放模塊130,用于播放所述目標(biāo)碼流對應(yīng)的待播放視頻。
播放模塊130用于控制視頻客戶端內(nèi)的播放器。
同一視頻的不同碼流對應(yīng)的視頻文件對應(yīng)不同的播放地址。確定目標(biāo)碼流后,視頻客戶端獲取目標(biāo)碼流的待播放視頻所對應(yīng)的播放地址,并將該播放地址提供給播放器(該播放器由視頻客戶端創(chuàng)建),播放器根據(jù)該播放地址生成用于請求播放目標(biāo)碼流對應(yīng)待播放視頻的播放請求,并將播放請求發(fā)送給服務(wù)器,服務(wù)器讀取播放請求中攜帶的路徑內(nèi)的視頻流,并將該視頻流返回給播放器,由播放器播放該視頻流。
本實(shí)施例提供的視頻播放控制裝置,當(dāng)視頻客戶端播放待播放視頻時(shí),獲取播放窗口的尺寸;然后,從待播放視頻對應(yīng)的全部可選碼流中,選擇出分辨率大于播放窗口的尺寸且最小的目標(biāo)碼流;并在視頻客戶端播放目標(biāo)碼流的待播放視頻。利用該裝置,實(shí)現(xiàn)在不影響視頻畫面清晰度的前提下,根據(jù)播放窗口的大小自動選擇允許的最低碼流,碼流越小需要的網(wǎng)絡(luò)帶寬資源越少,從而節(jié)省了網(wǎng)絡(luò)帶寬資源。而且,碼流越小解碼負(fù)擔(dān)越小,對于采用硬解碼的設(shè)備而言,降低了解碼器的負(fù)擔(dān);對于采用軟解碼的設(shè)備而言,降低了CPU的負(fù)擔(dān),從而降低播放視頻所占用的設(shè)備資源。
在本發(fā)明一些實(shí)施例中,播放模塊在確定出目標(biāo)碼流之前,播放默認(rèn)碼流的待播放視頻,確定出目標(biāo)碼流之后,從播放默認(rèn)碼流的待播放視頻切換到播放目標(biāo)碼流的待播放視頻。
視頻客戶端內(nèi)播放待播放視頻的第一播放器先停止播放默認(rèn)碼流的待播放視頻,然后,視頻客戶端向該第一播放器發(fā)送目標(biāo)碼流對應(yīng)的播放地址;第一播放器根據(jù)目標(biāo)碼流對應(yīng)的播放地址生成第一播放請求,該第一播放請求用于向服務(wù)器請求目標(biāo)碼流對應(yīng)的待播放視頻。服務(wù)器接收到該第一播放請求后,根據(jù)第一播放請求中的播放地址獲得目標(biāo)碼流對應(yīng)的待播放視頻并發(fā)送給第一播放器。
參見圖7,為本發(fā)明實(shí)施例提供的一種播放模塊的框圖,如圖7所示,該播放模塊130包括:停止子模塊1311、第一發(fā)送子模塊1312、接收子模塊1313和播放子模塊1314。
停止子模塊1311,用于使第一播放器停止播放所述默認(rèn)碼流的待播放視頻。
第一發(fā)送子模塊1312,用于向服務(wù)器發(fā)送第一播放請求,所述第一播放請求用于向服務(wù)器請求播放所述目標(biāo)碼流對應(yīng)的待播放視頻。
接收子模塊1313,用于接收所述服務(wù)器發(fā)送的所述目標(biāo)碼流對應(yīng)的待播放視頻。
播放子模塊1314,用于控制第一播放器播放所述目標(biāo)碼流對應(yīng)的待播放視頻。
本實(shí)施例提供的播放模塊,利用小窗口播放視頻時(shí),在不影響用戶看到的視頻畫面清晰度的前提下,根據(jù)播放窗口的大小動態(tài)選擇允許的最低碼流作為目標(biāo)碼流。然后,立即從播放默認(rèn)碼流的待播放視頻切換到目標(biāo)碼流對應(yīng)的視頻。碼流越小需要的網(wǎng)絡(luò)帶寬資源越少,從而節(jié)省了網(wǎng)絡(luò)帶寬資源。而且,碼流越小解碼負(fù)擔(dān)越小,對于采用硬解碼的設(shè)備而言,降低了解碼器的負(fù)擔(dān);對于采用軟解碼的設(shè)備而言,降低了CPU的負(fù)擔(dān),從而降低播放視頻所占用的設(shè)備資源。
在本發(fā)明的其它實(shí)施例中,播放模塊利用第一播放器播放默認(rèn)碼流的待播放視頻,同時(shí)構(gòu)建第二播放器,為播放目標(biāo)碼流的待播放視頻做準(zhǔn)備,當(dāng)?shù)诙シ牌鳒?zhǔn)備好播放目標(biāo)碼流的待播放視頻后,銷毀第一播放器,并用第二播放器播放目標(biāo)碼流的待播放視頻。
參見圖8,為本發(fā)明實(shí)施例提供的另一種播放模塊的框圖,如圖8所示,該播放模塊130包括:構(gòu)建子模塊1321、第二發(fā)送子模塊1322、銷毀子模塊1323和建立子模塊1324。
構(gòu)建子模塊1321,用于重新構(gòu)建第二播放器,并向所述第二播放器提供所述目標(biāo)碼流的待播放視頻所對應(yīng)的播放地址。
第二發(fā)送子模塊1322,用于根據(jù)所述播放地址向服務(wù)器發(fā)送第二播放請求,所述第二播放請求用于向服務(wù)器請求播放所述目標(biāo)碼流對應(yīng)的待播放視頻。
銷毀子模塊1323,用于當(dāng)所述第二播放器接收到所述服務(wù)器發(fā)送的所述目標(biāo)碼流對應(yīng)的待播放視頻時(shí),銷毀第一播放器,所述第一播放器用于播放默認(rèn)碼流的待播放視頻。
建立子模塊1324,用于建立所述第二播放器與所述播放窗口之間的關(guān)聯(lián)。
由上述實(shí)施例可見,在利用小窗口播放視頻時(shí),在不影響用戶看到的視頻畫面清晰度的前提下,根據(jù)播放窗口的大小動態(tài)選擇允許的最低碼流作為目標(biāo)碼流,在切換到播放目標(biāo)碼流對應(yīng)的視頻之前,一直利用第一播放器播放默認(rèn)碼流的視頻,同時(shí)創(chuàng)建第二播放器,為播放目標(biāo)碼流對應(yīng)的視頻做準(zhǔn)備;當(dāng)?shù)诙シ牌饕呀?jīng)準(zhǔn)備好播放目標(biāo)碼流對應(yīng)的視頻時(shí),銷毀第一播放器,并建立第二播放器與播放窗口之間的關(guān)聯(lián),從而減少用戶等待時(shí)間,實(shí)現(xiàn)從默認(rèn)碼流到目標(biāo)碼流的無縫切換,提高了用戶體驗(yàn)。而且,碼流越小解碼負(fù)擔(dān)越小,對于采用硬解碼的設(shè)備而言,降低了解碼器的負(fù)擔(dān);對于采用軟解碼的設(shè)備而言,降低了CPU的負(fù)擔(dān),從而降低播放視頻所占用的設(shè)備資源。
本發(fā)明實(shí)施例提供一種視頻播放客戶端,包括如前述的圖5-圖7任一實(shí)施例所述的視頻播放裝置。
本發(fā)明實(shí)施例提供一種視頻播放客戶端,包括:處理器;
用于存儲處理器可執(zhí)行指令的存儲器;
其中,所述處理器被配置為:
當(dāng)所述視頻客戶端播放待播放視頻時(shí),獲取播放窗口的尺寸;
從所述待播放視頻所對應(yīng)的全部可選碼流中,確定出分辨率大于或等于所述播放窗口的尺寸且最小的目標(biāo)碼流;
播放所述目標(biāo)碼流對應(yīng)的待播放視頻。
本發(fā)明實(shí)施例提供一種計(jì)算機(jī)存儲介質(zhì),其中,該計(jì)算機(jī)存儲介質(zhì)可存儲有程序,該程序執(zhí)行時(shí)可實(shí)現(xiàn)前述圖1-圖4任一項(xiàng)實(shí)施例提供一種視頻播放控制方法的各實(shí)現(xiàn)方式中的部分或全部步驟。
通過以上的方法實(shí)施例的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺的方式來實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實(shí)施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:只讀存儲器(ROM)、隨機(jī)存取存儲器(RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。本說明書中的各個實(shí)施例均采用遞進(jìn)的方式描述,各個實(shí)施例之間相同相似的部分互相參見即可,每個實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對于裝置或系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的裝置及系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實(shí)施。
本發(fā)明可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本發(fā)明,在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲介質(zhì)中。
需要說明的是,在本文中,諸如“第一”和“第二”等之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅是本發(fā)明的具體實(shí)施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。