專利名稱:一種視頻碼流切換方法及裝置的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及信息處理技術(shù)領(lǐng)域,特別是涉及一種視頻碼流切換方法及其相應(yīng)的裝置。
背景技術(shù):
在保證視頻的正常播放情況下,不同的電腦配置、視頻帶寬、網(wǎng)絡(luò)狀態(tài)等因素決定播放器承載的視頻碼流也不相同,因此,通常需要在不同視頻碼流之間進(jìn)行切換,由原視頻碼流切換到目標(biāo)視頻碼流存在時(shí)間延遲。當(dāng)該時(shí)間延遲超過一定閥值時(shí),視頻播放將出現(xiàn)“卡頓”現(xiàn)象,即視頻播放過程中出現(xiàn)停頓,甚至?xí)r間延遲過長出現(xiàn)視頻數(shù)據(jù)丟失,導(dǎo)致“黑屏”。由此可見,視頻碼流切換是否平滑將影響到視頻的播放效果,降低用戶良好的收視體 驗(yàn)?,F(xiàn)有技術(shù)的一種實(shí)現(xiàn)視頻碼流切換的方式是當(dāng)接收到視頻碼流切換觸發(fā)時(shí),視頻播放器立即停止當(dāng)前視頻碼流的視頻播放,連接目標(biāo)視頻碼流對(duì)應(yīng)的物理文件,并加載該物理文件的相應(yīng)視頻數(shù)據(jù),從而開啟目標(biāo)視頻碼流的視頻播放。然而,由于選擇目標(biāo)視頻碼流對(duì)應(yīng)的物理文件與加載視頻數(shù)據(jù)的操作存在時(shí)間延遲,即使原視頻碼流播放的視頻數(shù)據(jù)與目標(biāo)視頻碼流播放的視頻數(shù)據(jù)完全對(duì)接,在該時(shí)間延遲的作用下,切換前后的視頻數(shù)據(jù)播放沒有實(shí)現(xiàn)平滑過渡,導(dǎo)致“卡頓”現(xiàn)象,甚至“黑屏”。
發(fā)明內(nèi)容
為解決上述技術(shù)問題,本申請(qǐng)實(shí)施例提供一種視頻碼流切換方法及其對(duì)應(yīng)的裝置,以實(shí)現(xiàn)視頻碼流切換前后的平滑過渡,避免出現(xiàn)“卡頓”現(xiàn)象,甚至“黑屏”。本申請(qǐng)實(shí)施例提供的視頻碼流切換方法包括在接收到碼流切換觸發(fā)后,繼續(xù)播放視頻數(shù)據(jù)緩存區(qū)內(nèi)的當(dāng)前碼流視頻的第一播放基兀;在視頻數(shù)據(jù)緩存區(qū)內(nèi)的至少一個(gè)第一播放基元未播放完之前,連接目標(biāo)碼流視頻文件,以一個(gè)未播放或未播放完的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn),從所述目標(biāo)碼流視頻文件中將與該時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放。優(yōu)選地,在接收到碼流切換觸發(fā)后,如果視頻數(shù)據(jù)緩存區(qū)內(nèi)存在多個(gè)未播放的第一播放基元,則計(jì)算各第一播放基元的播放結(jié)束時(shí)間與預(yù)設(shè)閥值之差,以差值最小的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn),從所述目標(biāo)碼流視頻文件中將與該時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放,所述預(yù)設(shè)閥值根據(jù)連接目標(biāo)碼流視頻文件和加載目標(biāo)碼流視頻的第二播放基元的時(shí)間確定。優(yōu)選地,當(dāng)從視頻數(shù)據(jù)緩存區(qū)中選擇一個(gè)未播放或未播放完的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn)后,刪除視頻數(shù)據(jù)緩存區(qū)內(nèi)其他未播放的第一播放基元。優(yōu)選地,所述碼流切換觸發(fā)包括
偵聽用戶發(fā)出的碼流切換通知消息,當(dāng)偵聽到通知消息后觸發(fā)碼流切換;和/或,監(jiān)測(cè)網(wǎng)絡(luò)數(shù)據(jù)傳輸情況,當(dāng)網(wǎng)絡(luò)數(shù)據(jù)傳輸情況滿足預(yù)設(shè)條件時(shí)觸發(fā)碼流切換。優(yōu)選地,所述第一播放基元、第二播放基元為視頻TAG。本申請(qǐng)實(shí)施例還提供了一種視頻碼流切換裝置。該裝置包括觸發(fā)接收單元、視頻播放單元、文件連接單元和加載單元,其中所述觸發(fā)接收單元,用于接收碼流切換觸發(fā);所述視頻播放單元,用于在接收到碼流切換觸發(fā)后,繼續(xù)播放視頻數(shù)據(jù)緩存區(qū)內(nèi)的當(dāng)前碼流視頻的第一播放基元;所述文件連接單元,用于在視頻數(shù)據(jù)緩存區(qū)內(nèi)的至少一個(gè)第一播放基元未播放完之前,連接目標(biāo)碼流視頻文件; 所述加載單元,用于在視頻數(shù)據(jù)緩存區(qū)內(nèi)的至少一個(gè)第一播放基元未播放完之前,以一個(gè)未播放或未播放完的第一播放基兀的播放結(jié)束時(shí)間為時(shí)間起點(diǎn),從所述目標(biāo)碼流視頻文件中將與該時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放。優(yōu)選地,在接收到碼流切換觸發(fā)后,如果視頻數(shù)據(jù)緩存區(qū)內(nèi)存在多個(gè)未播放的第一播放基元,則所述加載單元包括計(jì)算子單元和加載子單元,其中所述計(jì)算子單元,用于計(jì)算各第一播放基元的播放結(jié)束時(shí)間與預(yù)設(shè)閥值之差,所述預(yù)設(shè)閥值根據(jù)連接目標(biāo)碼流視頻文件和加載目標(biāo)碼流視頻的第二播放基元的時(shí)間確定;所述加載子單元,用于以差值最小的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn),從所述目標(biāo)碼流視頻文件中將與該時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放。優(yōu)選地,所述裝置還包括刪除單元,用于在從視頻數(shù)據(jù)緩存區(qū)中選擇一個(gè)未播放或未播放完的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn)后,刪除視頻數(shù)據(jù)緩存區(qū)內(nèi)其他未播放的第一播放基元。優(yōu)選地,所述觸發(fā)接收單元接收到的碼流切換觸發(fā)包括偵聽到用戶發(fā)出的碼流切換通知消息后的碼流切換觸發(fā);和/或,監(jiān)測(cè)到網(wǎng)絡(luò)數(shù)據(jù)傳輸情況滿足預(yù)設(shè)條件時(shí)的碼流切換觸發(fā)。優(yōu)選地,所述第一播放基元、第二播放基元為視頻TAG。本申請(qǐng)實(shí)施例在接收到視頻碼流切換觸發(fā)后繼續(xù)播放視頻數(shù)據(jù)緩存區(qū)內(nèi)的當(dāng)前碼流視頻的第一播放基元,在至少一個(gè)第一播放基元未播放完之前,連接目標(biāo)視頻碼流的物理文件和加載目標(biāo)碼流視頻的第二播放基元供播放。與現(xiàn)有技術(shù)相比,由于本申請(qǐng)實(shí)施例在視頻數(shù)據(jù)緩存區(qū)內(nèi)的第一播放基元播放完之前,已加載了目標(biāo)碼流視頻的第二播放基元,從而使得當(dāng)前碼流視頻與目標(biāo)碼流視頻的播放連續(xù),實(shí)現(xiàn)了平滑過渡,避免了出現(xiàn)“卡頓”,甚至“黑屏”現(xiàn)象。
為了更清楚地說明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請(qǐng)中記載的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本申請(qǐng)的視頻碼流切換方法的一個(gè)實(shí)施例的流程圖;圖2為本申請(qǐng)的視頻碼流切換方法的另一個(gè)實(shí)施例的流程圖;圖3為本申請(qǐng)的視頻數(shù)據(jù)緩存區(qū)示意圖;圖4為本申請(qǐng)的視頻碼流切換裝置的實(shí)施例的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本申請(qǐng)中的技術(shù)方案,下面將結(jié)合本申請(qǐng)實(shí)施例中的附圖,對(duì)本申請(qǐng)實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例。基于本申請(qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本申請(qǐng)保護(hù)的范圍。為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說明。參見圖1,該圖示出了本申請(qǐng)的視頻碼流切換方法的一個(gè)實(shí)施例的流程。該實(shí)施例包括步驟SlOl :在接收到碼流切換觸發(fā)后,繼續(xù)播放視頻數(shù)據(jù)緩存區(qū)內(nèi)的當(dāng)前碼流視頻的第一播放基元;視頻碼流反映視頻文件在單位時(shí)間內(nèi)的數(shù)據(jù)流量,是視頻編碼中畫面質(zhì)量控制的重要部分。相同分辨率,視頻文件的碼流越大,畫面質(zhì)量越高。在視頻的實(shí)際播放過程中,由于各種原因可能引起視頻碼流的切換,以適應(yīng)播放需要。引起碼流切換的原因不同,碼流切換的觸發(fā)形式也可能存在差別。如,當(dāng)視頻碼流切換由用戶的特別指定引起時(shí),可以通過設(shè)置對(duì)用戶發(fā)出的碼流切換通知消息的偵聽實(shí)現(xiàn),當(dāng)偵聽到用戶發(fā)出的通知消息,則觸發(fā)碼流切換。還比如,當(dāng)視頻碼流切換是由網(wǎng)絡(luò)環(huán)境等因素引起時(shí),可以通過設(shè)置對(duì)網(wǎng)絡(luò)環(huán)境因素的監(jiān)測(cè)實(shí)現(xiàn),當(dāng)監(jiān)測(cè)到網(wǎng)絡(luò)環(huán)境因素滿足預(yù)設(shè)條件,則觸發(fā)碼流切換。這里的網(wǎng)絡(luò)環(huán)境因素可以是網(wǎng)絡(luò)帶寬、網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)取R跃W(wǎng)絡(luò)數(shù)據(jù)傳輸情況為例,如果當(dāng)前的網(wǎng)絡(luò)用戶較多、數(shù)據(jù)傳輸較為擁堵,當(dāng)網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)膫鬏斔俾市∮谀硞€(gè)預(yù)設(shè)閥值時(shí),則認(rèn)為需要觸發(fā)碼流切換,切換到與該網(wǎng)絡(luò)傳輸速率對(duì)應(yīng)的視頻碼流上。值得注意的是這里的預(yù)設(shè)條件可以是復(fù)合性條件,
如,當(dāng)網(wǎng)絡(luò)傳輸情況在一個(gè)區(qū)間范圍內(nèi)時(shí),觸發(fā)當(dāng)前碼流與第一目標(biāo)碼流之間的切換,當(dāng)網(wǎng)絡(luò)傳輸情況在另一個(gè)區(qū)間范圍內(nèi)時(shí),觸發(fā)當(dāng)前碼流與第二目標(biāo)碼流之間的切換。視頻數(shù)據(jù)緩存區(qū)是用于緩存待播放的視頻文件的播放基元的。在實(shí)際播放視頻文件過程中,由于視頻文件較大,通常需要將一個(gè)大的視頻文件切割為若干個(gè)小的“片段”,這些“片段”的播放開始時(shí)間和結(jié)束時(shí)間連續(xù)構(gòu)成整個(gè)視頻文件的完整播放時(shí)長。一種標(biāo)準(zhǔn)的切割視頻文件的方式是將一個(gè)視頻文件解析為多個(gè)視頻TAG。每個(gè)“片段”可稱為一個(gè)播放基元,一個(gè)播放基元作為整體被加載到內(nèi)存供播放器播放。視頻數(shù)據(jù)緩存區(qū)內(nèi)可以存在一個(gè)或數(shù)個(gè)播放基元,其具體數(shù)量由一個(gè)播放基元的大小和視頻數(shù)據(jù)緩存區(qū)的大小決定。當(dāng)接收到碼流切換觸發(fā)后,本實(shí)施例不停止對(duì)播放基元的播放,以正常方式繼續(xù)播放視頻數(shù)據(jù)緩存區(qū)內(nèi)的未播放的播放基元。不停止視頻數(shù)據(jù)緩存區(qū)內(nèi)播放基元的播放可通過維護(hù)自己獨(dú)立控制的視頻數(shù)據(jù)緩存區(qū)實(shí)現(xiàn)。如果視頻數(shù)據(jù)緩存區(qū)內(nèi)存在多個(gè)播放基元,播放器將按照播放基元的播放開始時(shí)間順序播放。步驟S102 :在視頻數(shù)據(jù)緩存區(qū)內(nèi)的至少一個(gè)第一播放基元未播放完之前,連接目標(biāo)碼流視頻文件,以一個(gè)未播放或未播放完的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn),從所述目標(biāo)碼流視頻文件中將與該時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放;在接收到碼流切換觸發(fā)后到視頻數(shù)據(jù)緩存區(qū)內(nèi)的全部播放基元播放完之前這段時(shí)間內(nèi),本實(shí)施例將完成兩項(xiàng)操作一是連接目標(biāo)碼流視頻文件。由于不同的視頻碼流,對(duì)應(yīng)的視頻文件的壓縮比例不同,通常相同的視頻文件根據(jù)不同的碼流需要分別形成不同的 物理文件,當(dāng)接收到碼流切換觸發(fā)后,即連接到目標(biāo)碼流對(duì)應(yīng)的視頻物理文件,以便從中獲取與當(dāng)前播放的播放基元相接續(xù)的新碼流對(duì)應(yīng)的播放基元。二是從目標(biāo)碼流視頻文件中加載目標(biāo)碼流視頻的第二播放基元,加載的播放基元的時(shí)間起點(diǎn)可以是視頻數(shù)據(jù)緩存區(qū)內(nèi)任何一個(gè)未播放的第一播放基元,或者正在播放但未播放完的第一播放基元的播放結(jié)束時(shí)間。將目標(biāo)碼流視頻文件的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)后,播放器將根據(jù)播放基元本身的時(shí)間先后(播放開始時(shí)間)播放相應(yīng)的播放基元。通過前述兩個(gè)操作完成了由一個(gè)視頻碼流(即前述的當(dāng)前碼流)到另一個(gè)視頻碼流(目標(biāo)碼流)之間的切換。本實(shí)施例在接收到視頻碼流切換觸發(fā)后繼續(xù)播放視頻數(shù)據(jù)緩存區(qū)內(nèi)的當(dāng)前碼流視頻的第一播放基元,在至少一個(gè)第一播放基元未播放完之前,連接目標(biāo)視頻碼流的物理文件和加載目標(biāo)碼流視頻的第二播放基元供播放。與現(xiàn)有技術(shù)相比,由于本申請(qǐng)實(shí)施例在視頻數(shù)據(jù)緩存區(qū)內(nèi)的第一播放基元播放完之前,已加載了目標(biāo)碼流視頻的第二播放基元,從而使得當(dāng)前碼流視頻與目標(biāo)碼流視頻的播放連續(xù),實(shí)現(xiàn)了平滑過渡,避免了出現(xiàn)“卡頓”,甚至“黑屏”現(xiàn)象。在前述實(shí)施例中,盡管從視頻數(shù)據(jù)緩存區(qū)內(nèi)任意選擇一個(gè)未播放的第一播放基元并將其播放結(jié)束時(shí)間作為對(duì)第二播放基元的加載時(shí)間起點(diǎn)的方式并不妨礙本申請(qǐng)發(fā)明目的的實(shí)現(xiàn),但是,在實(shí)際應(yīng)用過程中,如果視頻數(shù)據(jù)緩存區(qū)內(nèi)存在多個(gè)未播放的第一播放基元,如果選擇的是時(shí)間靠后的第一播放基元,那么在完成連接目標(biāo)視頻文件和加載第二播放基元的操作后,視頻數(shù)據(jù)緩存區(qū)內(nèi)的第一播放基元還沒有播放完,導(dǎo)致不當(dāng)“延遲”了對(duì)視頻碼流切換的響應(yīng)。為了解決該問題,本申請(qǐng)?zhí)峁┝擞忠粋€(gè)實(shí)施例,該實(shí)施例在視頻數(shù)據(jù)緩存區(qū)內(nèi)存在多個(gè)未播放的第一播放基元的情況下,給出了選擇第一播放基元的策略,從而“壓縮”對(duì)視頻碼流切換的響應(yīng)時(shí)間。參見圖2,該圖示出了該又一個(gè)實(shí)施例的視頻碼流切換方法的流程。該實(shí)施例包括步驟S201 :接收碼流切換觸發(fā);步驟S202 :在接收到碼流觸發(fā)后繼續(xù)播放視頻數(shù)據(jù)緩存區(qū)內(nèi)的當(dāng)前碼流視頻的
第一播放基兀;步驟S203 :計(jì)算各第一播放基元的播放結(jié)束時(shí)間與預(yù)設(shè)閥值之差,所述預(yù)設(shè)閥值根據(jù)連接目標(biāo)碼流視頻文件和加載目標(biāo)碼流視頻的第二播放基元的時(shí)間確定;視頻數(shù)據(jù)緩存區(qū)內(nèi)的每個(gè)第一播放基元的播放結(jié)束時(shí)間不同,因此,可將各第一播放基元的播放結(jié)束時(shí)間與預(yù)設(shè)閥值進(jìn)行求差,以便從中選擇合適的播放基元,以其播放結(jié)束時(shí)間作為加載第二播放基元的時(shí)間起點(diǎn)。這里的預(yù)設(shè)閥值可以按照經(jīng)驗(yàn)進(jìn)行設(shè)置,也可以根據(jù)目標(biāo)碼流視頻文件和加載目標(biāo)碼流視頻的第二播放基元的時(shí)間進(jìn)行確定。步驟S204 :選擇差值為正數(shù)且最小的第一播放基元的播放結(jié)束時(shí)間確定為時(shí)間起點(diǎn);經(jīng)過前述計(jì)算后,對(duì)這些計(jì)算結(jié)果進(jìn)行比較,從中選擇出差值最小的第一播放基元,將其播放結(jié)束時(shí)間作為時(shí)間起點(diǎn)。通過選擇播放結(jié)束時(shí)間與預(yù)設(shè)值差值為正數(shù)且最小的播放基元,使得在連接目標(biāo)碼流視頻文件并加載第二播放基元兩項(xiàng)操作完成后,原碼流視頻的剩余第一播放基元的播放能夠盡快結(jié)束,而在較短的時(shí)間間隔內(nèi)過渡到對(duì)目標(biāo)碼流視頻的第二播放基元的播放,從而縮短了對(duì)碼流切換的響應(yīng)時(shí)間。步驟S205 :從所述目標(biāo)碼流視頻文件中將與確定的時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放。 本實(shí)施例通過計(jì)算視頻數(shù)據(jù)緩存區(qū)內(nèi)的多個(gè)播放基元與預(yù)設(shè)閥值的差值,進(jìn)而選擇差值最小的播放基元的播放結(jié)束時(shí)間作為加載第二播放基元的時(shí)間起點(diǎn),縮短了從接收碼流切換觸發(fā)到真正完成到目標(biāo)碼流的切換之間的時(shí)間間隔,從而加快了碼流切換的速度。為便于理解,下面舉例對(duì)本實(shí)施例進(jìn)行說明參見圖3,該圖示出了視頻數(shù)據(jù)緩存區(qū)的示意圖。在該圖中視頻數(shù)據(jù)緩存區(qū)內(nèi)存在原碼流視頻的3個(gè)第一播放基元,分別標(biāo)記為A、B、C,3個(gè)第一播放基元的播放時(shí)長(播放結(jié)束時(shí)間到播放開始時(shí)間之間的時(shí)間段)均相同,播放結(jié)束時(shí)間依次為8s、16s、24s(以當(dāng)前時(shí)間為Os為基準(zhǔn)),即按照正常播放順序,應(yīng)當(dāng)是第一播放基元A最先播放,第一播放基元C最后播放。再假設(shè)連接目標(biāo)碼流視頻文件和加載第二播放基元需要的操作時(shí)間為14s (預(yù)設(shè)閥值)?,F(xiàn)在播放器正在播放第一播放基元A,假設(shè)播放到第Is時(shí)接收到碼流切換通知,這時(shí)不停止對(duì)A的播放,但進(jìn)行連接目標(biāo)碼流視頻文件和加載第二播放基元的操作。加載第二播放基元需要選擇加載的時(shí)間起點(diǎn),以便能夠和已播放的第一播放基元接續(xù)上,這時(shí)計(jì)算3個(gè)第一播放基元的結(jié)束時(shí)間與預(yù)設(shè)閥值14s之間的差值,分別為-6s、2s、10s,這里第一播放基元A播放結(jié)束時(shí)間與預(yù)設(shè)閥值的差值為負(fù),說明在第一播放基元A播放結(jié)束時(shí)還來不及將第二播放基元加載到視頻數(shù)據(jù)緩存區(qū),無法實(shí)現(xiàn)平滑切換,不能選擇該播放基元的播放結(jié)束時(shí)間作為加載時(shí)間起點(diǎn)。與此不同的是第一播放基元B、C播放結(jié)束時(shí)間與預(yù)設(shè)閥值的差值均為正,說明在這兩個(gè)播放基元播放結(jié)束時(shí),第二播放基元均能夠加載到視頻數(shù)據(jù)緩存區(qū),這種情況下,可以以第一播放基元B的播放結(jié)束時(shí)間作為時(shí)間起點(diǎn)加載目標(biāo)碼流視頻的第二播放基元,使第一播放基元B播放完后接續(xù)第二播放基元,也可以以第二播放基元C的播放結(jié)束時(shí)間作為時(shí)間起點(diǎn)加載目標(biāo)碼流視頻的第二播放基元,使第一播放基元C播放完后接續(xù)第二播放基元。但是,選擇第一播放基元C的播放結(jié)束時(shí)間作為加載時(shí)間起點(diǎn)的方式顯然需要等待到24s之后才能真正實(shí)現(xiàn)碼流切換,而選擇第一播放基元B的播放結(jié)束時(shí)間作為加載時(shí)間起點(diǎn)的方式僅需要等待到16s后即可真正實(shí)現(xiàn)碼流切換。為縮短碼流切換的響應(yīng)時(shí)間,本例選擇播放結(jié)束時(shí)間與預(yù)設(shè)閥值的差值為正數(shù)且數(shù)值最小的第一播放基元,即第一播放基元B,以其播放結(jié)束時(shí)間作為時(shí)間起點(diǎn)加載第二播放基元,從而加快了碼流切換。
在本實(shí)施例中,基于某些特殊需要,還可以進(jìn)行改進(jìn)以獲得更好的技術(shù)效果。比如,如果視頻數(shù)據(jù)緩存區(qū)內(nèi)存在多個(gè)未播放或未播放完的第一播放基元,當(dāng)確定好作為加載時(shí)間起點(diǎn)的第一播放基元后,加載的第二播放基元將接續(xù)在該第一播放基元后播放,這時(shí)其他第一播放基元便不再具有意義,為節(jié)約視頻數(shù)據(jù)緩存區(qū)的存儲(chǔ)資源,本申請(qǐng)優(yōu)選刪除這些未播放的第一播放基元。以前例而言,當(dāng)選擇第一播放基元B的播放結(jié)束時(shí)間作為加載第二播放基元的時(shí)間起點(diǎn)后,第一播放基元B播放結(jié)束即接續(xù)播放加載的第二播放基元,這時(shí)視頻數(shù)據(jù)緩存區(qū)內(nèi)存在的第一播放基元C便不再被播放,為騰出更多空間存儲(chǔ)后續(xù)的第二播放基元,可以將第一播放基元C予以刪除。以上內(nèi)容是對(duì)本申請(qǐng)方法實(shí)施例的描述,相應(yīng)地,本申請(qǐng)還提供了裝置實(shí)施例。參見圖4,該圖示出了本申請(qǐng)的視頻碼流切換的結(jié)構(gòu)框圖。本裝置實(shí)施例包括觸發(fā)接收單元401、視頻播放單元402、文件連接單元403和加載單元404,其中觸發(fā)接收單元401,用于接收碼流切換觸發(fā);·
視頻播放單元402,用于在接收到碼流切換觸發(fā)后,繼續(xù)播放視頻數(shù)據(jù)緩存區(qū)內(nèi)的當(dāng)前碼流視頻的第一播放基元;文件連接單元403,用于在視頻數(shù)據(jù)緩存區(qū)內(nèi)的至少一個(gè)第一播放基元未播放完之前,連接目標(biāo)碼流視頻文件;加載單元404,用于在視頻數(shù)據(jù)緩存區(qū)內(nèi)的至少一個(gè)第一播放基元未播放完之前,以一個(gè)未播放或未播放完的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn),從所述目標(biāo)碼流視頻文件中將與該時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放。本裝置實(shí)施例的工作過程是觸發(fā)接收單元401接收到碼流切換觸發(fā)后,視頻播放單元402繼續(xù)播放視頻數(shù)據(jù)緩存區(qū)內(nèi)的當(dāng)前碼流視頻的第一播放基元,同時(shí)文件連接單元403在視頻數(shù)據(jù)緩存區(qū)內(nèi)的至少一個(gè)第一播放基元未播放完之前,連接目標(biāo)碼流視頻文件,然后由加載單元404以一個(gè)未播放或未播放完的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn),從目標(biāo)碼流視頻文件中將與該時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放。本裝置實(shí)施例在接收到視頻碼流切換觸發(fā)后繼續(xù)播放視頻數(shù)據(jù)緩存區(qū)內(nèi)的當(dāng)前碼流視頻的第一播放基元,在至少一個(gè)第一播放基元未播放完之前,連接目標(biāo)視頻碼流的物理文件和加載目標(biāo)碼流視頻的第二播放基元供播放。與現(xiàn)有技術(shù)相比,由于本裝置實(shí)施例在視頻數(shù)據(jù)緩存區(qū)內(nèi)的第一播放基元播放完之前,已加載了目標(biāo)碼流視頻的第二播放基元,從而使得當(dāng)前碼流視頻與目標(biāo)碼流視頻的播放連續(xù),實(shí)現(xiàn)了平滑過渡,避免了出現(xiàn)“卡頓”,甚至“黑屏”現(xiàn)象。上述裝置實(shí)施例的加載單元在不同情形下其具體組成結(jié)構(gòu)可能存在差別。比如,在接收到碼流切換觸發(fā)后,如果視頻數(shù)據(jù)緩存區(qū)內(nèi)存在多個(gè)未播放的第一播放基元,這時(shí)加載單元404可以包括計(jì)算子單元4041和加載子單元4042,其中計(jì)算子單元4041,用于計(jì)算各第一播放基元的播放結(jié)束時(shí)間與預(yù)設(shè)閥值之差,所述預(yù)設(shè)閥值根據(jù)連接目標(biāo)碼流視頻文件和加載目標(biāo)碼流視頻的第二播放基元的時(shí)間確定;加載子單元4042,用于以差值為正數(shù)且最小的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn),從所述目標(biāo)碼流視頻文件中將與該時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放。這種加載單元的結(jié)構(gòu)有利于加快碼流切換速度。基于上述加載單元的結(jié)構(gòu),本裝置實(shí)施例還可以包括刪除單元405,用于在從視頻數(shù)據(jù)緩存區(qū)中選擇一個(gè)未播放或未播放完的第一播放基兀的播放結(jié)束時(shí)間為時(shí)間起點(diǎn)后,刪除視頻數(shù)據(jù)緩存區(qū)內(nèi)其他未播放的第一播放基元。通過將無用的第一播放單元從視頻數(shù)據(jù)緩存區(qū)內(nèi)刪除,將可以騰出更多的存儲(chǔ)空間緩存第二播放基元。需要說明的是,上述裝置實(shí)施例的觸發(fā)接收單元接收到的碼流切換觸發(fā)基于不同的碼流切換原因,其具體的觸發(fā)形式可以存在差別,比如,可以是通過設(shè)置偵聽用戶發(fā)出的碼流切換通知消息的部件獲取碼流切換觸發(fā),當(dāng)該部件偵聽到通知消息時(shí)產(chǎn)生碼流切換觸發(fā),還可以通過設(shè)置自動(dòng)監(jiān)測(cè)網(wǎng)絡(luò)環(huán)境因素情況的部件獲取碼流切換觸發(fā),當(dāng)該部件監(jiān)測(cè)到網(wǎng)絡(luò)數(shù)據(jù)傳輸情況滿足預(yù)設(shè)條件時(shí)產(chǎn)生碼流切換觸發(fā)。這兩種方式可以單獨(dú)使用,也可以合并使用,具體采用哪種方式可根據(jù)實(shí)際應(yīng)用需要進(jìn)行選定。此外,本申請(qǐng)為便于區(qū)分當(dāng)前碼流視頻的播放基元和目標(biāo)碼流視頻的播放基元,將他們分別稱呼為第一播放基元、第二播放基元,實(shí)際上,這種區(qū)分僅僅滿足描述需要所作的文字區(qū)分,兩類播放基元可以是相同性質(zhì)、相同屬性的播放基元,比如均為視頻TAG,視頻TAG是視頻播放中的最小數(shù)據(jù)單元。
為了描述的方便,描述以上裝置時(shí)以功能分為各種單元分別描述。當(dāng)然,在實(shí)施本申請(qǐng)時(shí)可以把各單元的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。通過以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來實(shí)現(xiàn)?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,各個(gè)實(shí)施例之間相同相似的部分互相參見即可,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處。尤其,對(duì)于系統(tǒng)實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述得比較簡單,相關(guān)之處參見方法實(shí)施例的部分說明即可。以上所描述的系統(tǒng)實(shí)施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。本申請(qǐng)可用于眾多通用或?qū)S玫挠?jì)算系統(tǒng)環(huán)境或配置中。例如個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。本申請(qǐng)可以在由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計(jì)算環(huán)境中實(shí)踐本申請(qǐng),在這些分布式計(jì)算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。
以上所述僅是本申請(qǐng)的具體實(shí)施方式
,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本申請(qǐng)?jiān)淼那疤嵯?,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本申請(qǐng)的保護(hù)范圍。·
權(quán)利要求
1.一種視頻碼流切換方法,其特征在于,該方法包括 在接收到碼流切換觸發(fā)后,繼續(xù)播放視頻數(shù)據(jù)緩存區(qū)內(nèi)的當(dāng)前碼流視頻的第一播放基元; 在視頻數(shù)據(jù)緩存區(qū)內(nèi)的至少一個(gè)第一播放基元未播放完之前,連接目標(biāo)碼流視頻文件,以一個(gè)未播放或未播放完的第一播放基兀的播放結(jié)束時(shí)間為時(shí)間起點(diǎn),從所述目標(biāo)碼流視頻文件中將與該時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,在接收到碼流切換觸發(fā)后,如果視頻數(shù)據(jù)緩存區(qū)內(nèi)存在多個(gè)未播放的第一播放基元,則 計(jì)算各第一播放基元的播放結(jié)束時(shí)間與預(yù)設(shè)閥值之差,所述預(yù)設(shè)閥值根據(jù)連接目標(biāo)碼流視頻文件和加載目標(biāo)碼流視頻的第二播放基元的時(shí)間確定; 以差值為正數(shù)且最小的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn),從所述目標(biāo)碼流視頻文件中將與該時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放。
3.根據(jù)權(quán)利要求I所述的方法,其特征在于,當(dāng)從視頻數(shù)據(jù)緩存區(qū)中選擇一個(gè)未播放或未播放完的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn)后,刪除視頻數(shù)據(jù)緩存區(qū)內(nèi)其他未播放的第一播放基元。
4.根據(jù)權(quán)利要求I至3中任何一項(xiàng)所述的方法,其特征在于,所述碼流切換觸發(fā)包括 偵聽用戶發(fā)出的碼流切換通知消息,當(dāng)偵聽到通知消息后觸發(fā)碼流切換;和/或,監(jiān)測(cè)網(wǎng)絡(luò)數(shù)據(jù)傳輸情況,當(dāng)網(wǎng)絡(luò)數(shù)據(jù)傳輸情況滿足預(yù)設(shè)條件時(shí)觸發(fā)碼流切換。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述第一播放基元、第二播放基元為視頻TAG。
6.一種視頻碼流切換裝置,其特征在于,該裝置包括觸發(fā)接收單元、視頻播放單元、文件連接單元和加載單元,其中 所述觸發(fā)接收單元,用于接收碼流切換觸發(fā); 所述視頻播放單元,用于在接收到碼流切換觸發(fā)后,繼續(xù)播放視頻數(shù)據(jù)緩存區(qū)內(nèi)的當(dāng)前碼流視頻的第一播放基元; 所述文件連接單元,用于在視頻數(shù)據(jù)緩存區(qū)內(nèi)的至少一個(gè)第一播放基元未播放完之前,連接目標(biāo)碼流視頻文件; 所述加載單元,用于在視頻數(shù)據(jù)緩存區(qū)內(nèi)的至少一個(gè)第一播放基元未播放完之前,以一個(gè)未播放或未播放完的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn),從所述目標(biāo)碼流視頻文件中將與該時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,在接收到碼流切換觸發(fā)后,如果視頻數(shù)據(jù)緩存區(qū)內(nèi)存在多個(gè)未播放的第一播放基元,則所述加載單元包括計(jì)算子單元和加載子單元,其中 所述計(jì)算子單元,用于計(jì)算各第一播放基元的播放結(jié)束時(shí)間與預(yù)設(shè)閥值之差,所述預(yù)設(shè)閥值根據(jù)連接目標(biāo)碼流視頻文件和加載目標(biāo)碼流視頻的第二播放基元的時(shí)間確定; 所述加載子單元,用于以差值為正數(shù)且最小的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn),從所述目標(biāo)碼流視頻文件中將與該時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括刪除單元,用于在從視頻數(shù)據(jù)緩存區(qū)中選擇一個(gè)未播放或未播放完的第一播放基兀的播放結(jié)束時(shí)間為時(shí)間起點(diǎn)后,刪除視頻數(shù)據(jù)緩存區(qū)內(nèi)其他未播放的第一播放基元。
9.根據(jù)權(quán)利要求6至8中任何一項(xiàng)所述的裝置,其特征在于,所述觸發(fā)接收單元接收到的碼流切換觸發(fā)包括 偵聽到用戶發(fā)出的碼流切換通知消息后的碼流切換觸發(fā);和/或,監(jiān)測(cè)到網(wǎng)絡(luò)數(shù)據(jù)傳輸情況滿足預(yù)設(shè)條件時(shí)的碼流切換觸發(fā)。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述第一播放基元、第二播放基元為視頻 TAG。
全文摘要
本發(fā)明實(shí)施例公開了一種視頻碼流切換方法。該方法包括在接收到碼流切換觸發(fā)后,繼續(xù)播放視頻數(shù)據(jù)緩存區(qū)內(nèi)的當(dāng)前碼流視頻的第一播放基元;在視頻數(shù)據(jù)緩存區(qū)內(nèi)的至少一個(gè)第一播放基元未播放完之前,連接目標(biāo)碼流視頻文件,以一個(gè)未播放或未播放完的第一播放基元的播放結(jié)束時(shí)間為時(shí)間起點(diǎn),從所述目標(biāo)碼流視頻文件中將與該時(shí)間起點(diǎn)對(duì)應(yīng)的目標(biāo)碼流視頻的第二播放基元加載到視頻數(shù)據(jù)緩存區(qū)以供播放。本發(fā)明實(shí)施例還提供了一種視頻碼流切換裝置。本發(fā)明實(shí)施例的方案可以實(shí)現(xiàn)視頻碼流的平滑切換,避免出現(xiàn)“卡頓”、“黑屏”現(xiàn)象。
文檔編號(hào)H04N21/44GK102905188SQ201210431708
公開日2013年1月30日 申請(qǐng)日期2012年11月1日 優(yōu)先權(quán)日2012年11月1日
發(fā)明者鄧治民 申請(qǐng)人:北京奇藝世紀(jì)科技有限公司