一種音軌切換的方法、設(shè)備及系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種音軌切換的方法、設(shè)備及系統(tǒng),其中,方法包括接收音軌切換的請(qǐng)求;停止發(fā)送視頻數(shù)據(jù)給視頻解碼器和停止發(fā)送音軌數(shù)據(jù)給音頻解碼器;清空音頻解碼器的流緩沖區(qū),不清空音頻解碼器的幀緩沖區(qū);從文件或網(wǎng)絡(luò)流中讀取音軌切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū)。該方法節(jié)省了內(nèi)存的空間,對(duì)于內(nèi)存配置較低的低端產(chǎn)品來(lái)說(shuō)比較適用。并且可以保證音頻的正常輸出,避免卡頓的現(xiàn)象。由于讀取的新音軌數(shù)據(jù)可以與音頻解碼器的幀緩沖區(qū)的音軌數(shù)據(jù)銜接上,因此,不會(huì)出現(xiàn)音軌切換過(guò)程中有卡頓的現(xiàn)象,也不會(huì)出現(xiàn)短時(shí)間內(nèi)沒(méi)有音頻輸出。因此,可以實(shí)現(xiàn)音軌切換的平滑過(guò)渡。
【專利說(shuō)明】一種音軌切換的方法、設(shè)備及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及信息處理【技術(shù)領(lǐng)域】,特別涉及一種音軌切換的方法、設(shè)備及系統(tǒng)。
【背景技術(shù)】
[0002]隨著技術(shù)的發(fā)展,目前很多人使用電腦或者移動(dòng)終端觀看視頻或者電影。為了滿足更多用戶的需求,現(xiàn)在同一部電影的媒體文件都包括多個(gè)音軌,每個(gè)音軌使用不同語(yǔ)言進(jìn)行配音,例如,即包括中文的音軌,又包括英文的音軌。
[0003]當(dāng)使用媒體播放器播放這種媒體文件時(shí),用戶選擇不同的音軌時(shí),將會(huì)涉及到音軌的切換,但是音軌切換時(shí)媒體文件播放的流暢度將直接影響用戶的體驗(yàn)。
[0004]現(xiàn)有技術(shù)中,解碼器包括流緩沖區(qū)和幀緩沖區(qū)。其中,流緩沖區(qū)用于存放待解碼的數(shù)據(jù);幀緩沖區(qū)用于存放解碼后的數(shù)據(jù)。當(dāng)媒體文件正常播放時(shí),還需要用內(nèi)存同時(shí)緩存其他所有音軌的數(shù)據(jù)。當(dāng)切換音軌時(shí),重啟解碼器并清空流緩沖區(qū)和幀緩沖區(qū),將新音軌數(shù)據(jù)送入流緩沖區(qū)進(jìn)行播放。
[0005]現(xiàn)有技術(shù)存在以下缺點(diǎn),一是由于采用內(nèi)存緩存所有音軌數(shù)據(jù),這種方法將占用更多的內(nèi)存,對(duì)于內(nèi)存低的產(chǎn)品來(lái)說(shuō)并不適用;二是,由于音軌切換時(shí),視頻處于正常的播放狀態(tài),當(dāng)清空流緩沖區(qū)和幀緩沖區(qū)時(shí),將造成音軌數(shù)據(jù)的暫時(shí)缺失,如果等待新音軌數(shù)據(jù)解碼,音頻和視頻同步將可能造成卡頓現(xiàn)象,如果不等待新音軌數(shù)據(jù),將造成短時(shí)間內(nèi)沒(méi)有音頻輸出。
[0006]因此,本領(lǐng)域技術(shù)人員需要提供一種音軌切換的方法,能夠在音軌切換時(shí),保證平滑切換,并且不會(huì)占用內(nèi)存來(lái)緩存音軌數(shù)據(jù)。
【發(fā)明內(nèi)容】
[0007]本發(fā)明實(shí)施例提供一種音軌切換的方法、設(shè)備及系統(tǒng),能夠在音軌切換時(shí),保證平滑切換,并且不會(huì)占用內(nèi)存來(lái)緩存音軌數(shù)據(jù),釋放了內(nèi)存空間。
[0008]本發(fā)明實(shí)施例提供一種音軌切換的方法,包括以下步驟:
[0009]接收音軌切換的請(qǐng)求;
[0010]停止發(fā)送視頻數(shù)據(jù)給視頻解碼器和停止發(fā)送音軌數(shù)據(jù)給音頻解碼器;
[0011]清空音頻解碼器的流緩沖區(qū),不清空音頻解碼器的幀緩沖區(qū);
[0012]從文件或網(wǎng)絡(luò)流中讀取音軌切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū)。
[0013]優(yōu)選地,所述從文件或網(wǎng)絡(luò)流讀取切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū),具體包括:
[0014]從所述音頻解碼器的流緩沖區(qū)中獲取將要解碼的下一幀音軌數(shù)據(jù)的顯示時(shí)間戳APTS ;
[0015]記錄最后發(fā)送給視頻解碼器的流緩沖區(qū)的一幀視頻數(shù)據(jù)的顯示時(shí)間戳VPTS ;
[0016]從所述文件或網(wǎng)絡(luò)流中讀取新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū);所述新音軌數(shù)據(jù)為讀取指針從所述APTS對(duì)應(yīng)的位置開(kāi)始,直到讀取指針等于VPTS為止讀取的新音軌數(shù)據(jù)。
[0017]優(yōu)選地,所述從所述文件或網(wǎng)絡(luò)流中讀取新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū);之前,還包括:
[0018]從所述文件或網(wǎng)絡(luò)流中利用讀取指針重新讀取所述APTS對(duì)應(yīng)的位置開(kāi)始直到等于VPTS為止的視頻數(shù)據(jù)和音軌數(shù)據(jù),將所述APTS與VPTS之間的視頻數(shù)據(jù)丟棄,將所述APTS與VPTS之間的新音軌數(shù)據(jù)之外的音軌數(shù)據(jù)丟棄。
[0019]本發(fā)明實(shí)施例還提供一種音頻切換設(shè)備,包括:接收單元、控制單元和數(shù)據(jù)讀取單元;
[0020]所述接收單元,用于接收音頻切換請(qǐng)求;
[0021]所述控制單元,用于當(dāng)接收單元接收到音頻切換請(qǐng)求后,停止發(fā)送視頻數(shù)據(jù)給視頻解碼器和停止發(fā)送音軌數(shù)據(jù)給音頻解碼器;清空音頻解碼器的流緩沖區(qū),不清空音頻解碼器的幀緩沖區(qū);控制所述數(shù)據(jù)讀取單元從文件或網(wǎng)絡(luò)流讀取切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū)。
[0022]優(yōu)選地,所述數(shù)據(jù)讀取單元包括:音軌數(shù)據(jù)顯示時(shí)間戳讀取子單元、視頻數(shù)據(jù)顯示時(shí)間戳讀取子單元和發(fā)送子單元;
[0023]所述音軌數(shù)據(jù)顯示時(shí)間戳讀取子單元,用于從所述音頻解碼器的流緩沖區(qū)中獲取將要解碼的下一幀音軌數(shù)據(jù)的顯示時(shí)間戳APTS ;
[0024]所述視頻數(shù)據(jù)顯示時(shí)間戳讀取子單元,用于記錄最后發(fā)送給視頻解碼器的流緩沖區(qū)的一幀視頻數(shù)據(jù)的顯示時(shí)間戳VPTS ;
[0025]所述發(fā)送子單元,從所述文件或網(wǎng)絡(luò)流中讀取新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū);所述新音軌數(shù)據(jù)為讀取指針從所述APTS對(duì)應(yīng)的位置開(kāi)始,直到讀取指針等于VPTS為止的新音軌數(shù)據(jù)。
[0026]優(yōu)選地,所述數(shù)據(jù)讀取單元還包括:數(shù)據(jù)讀取子單元和丟棄子單元;
[0027]所述數(shù)據(jù)讀取子單元,用于從所述文件或網(wǎng)絡(luò)流中重新讀取所述APTS與VPTS之間的視頻數(shù)據(jù)和音軌數(shù)據(jù);
[0028]所述丟棄子單元,用于從所述文件或網(wǎng)絡(luò)流中利用讀取指針重新讀取所述APTS對(duì)應(yīng)的位置開(kāi)始直到等于VPTS為止的視頻數(shù)據(jù)和音軌數(shù)據(jù),將所述APTS與VPTS之間的視頻數(shù)據(jù)丟棄,將所述APTS與VPTS之間的新音軌數(shù)據(jù)之外的音軌數(shù)據(jù)丟棄。
[0029]本發(fā)明實(shí)施例還提供一種音軌切換的系統(tǒng),包括:播放器、音頻解碼器、視頻解碼器;
[0030]所述音頻解碼器包括音頻流緩沖區(qū)和音頻幀緩沖區(qū),所述音頻流緩沖區(qū)存放待解碼的音軌數(shù)據(jù),所述音頻幀緩沖區(qū)存放解碼后的音軌數(shù)據(jù);
[0031]所述視頻解碼器包括視頻流緩沖區(qū)和視頻幀緩沖區(qū),所述視頻流緩沖區(qū)存放待解碼的視頻數(shù)據(jù),所述視頻幀緩沖區(qū)存放解碼后的視頻數(shù)據(jù);
[0032]所述播放器,用于接收音軌切換的請(qǐng)求,停止發(fā)送視頻數(shù)據(jù)給所述視頻解碼器和停止發(fā)送音軌數(shù)據(jù)給所述音頻解碼器;清空音頻解碼器的流緩沖區(qū),不清空音頻解碼器的幀緩沖區(qū);還用于從文件或網(wǎng)絡(luò)流讀取切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū)。[0033]優(yōu)選地,所述播放器還用于從文件或網(wǎng)絡(luò)流讀取切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū),具體為:
[0034]從所述音頻解碼器的流緩沖區(qū)中獲取將要解碼的下一幀音軌數(shù)據(jù)的顯示時(shí)間戳APTS ;記錄最后發(fā)送給視頻解碼器的流緩沖區(qū)的一幀視頻數(shù)據(jù)的顯示時(shí)間戳VPTS ;從所述文件或網(wǎng)絡(luò)流中讀取新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū);所述新音軌數(shù)據(jù)為讀取指針從所述APTS對(duì)應(yīng)的位置開(kāi)始,直到讀取指針等于VPTS為止讀取的新音軌數(shù)據(jù)。
[0035]優(yōu)選地,所述播放器將從所述文件或網(wǎng)絡(luò)流中讀取的APTS和VPTS之間的新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū)之前;
[0036]還用于:從所述文件或網(wǎng)絡(luò)流中利用讀取指針重新讀取所述APTS對(duì)應(yīng)的位置開(kāi)始直到等于VPTS為止的視頻數(shù)據(jù)和音軌數(shù)據(jù),將所述APTS與VPTS之間的視頻數(shù)據(jù)丟棄,將所述APTS與VPTS之間的新音軌數(shù)據(jù)之外的音軌數(shù)據(jù)丟棄。
[0037]以上技術(shù)方案,沒(méi)有設(shè)置專門的內(nèi)存來(lái)緩存視頻數(shù)據(jù)和音軌數(shù)據(jù),而是直接從文件或網(wǎng)絡(luò)流中來(lái)讀取新音軌數(shù)據(jù),因此,節(jié)省了內(nèi)存的空間,對(duì)于內(nèi)存配置較低的低端產(chǎn)品來(lái)說(shuō)比較適用。并且,本發(fā)明中沒(méi)有清空音頻解碼器的幀緩沖區(qū),可以繼續(xù)輸出音頻解碼器的幀緩沖區(qū)中的音軌數(shù)據(jù),可以保證音頻的正常輸出,避免卡頓的現(xiàn)象。本實(shí)施例中將切換過(guò)程中的新音軌數(shù)據(jù)從文件或網(wǎng)絡(luò)流中讀取到音頻解碼器的流緩沖區(qū)。由于讀取的新音軌數(shù)據(jù)可以與音頻解碼器的幀緩沖區(qū)的音軌數(shù)據(jù)銜接上,因此,不會(huì)出現(xiàn)音軌切換過(guò)程中有卡頓的現(xiàn)象,也不會(huì)出現(xiàn)短時(shí)間內(nèi)沒(méi)有音頻輸出。因此,可以實(shí)現(xiàn)音軌切換的平滑過(guò)渡。
【專利附圖】
【附圖說(shuō)明】
[0038]為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0039]圖1是本發(fā)明提供的音軌切換的方法實(shí)施例一流程圖;
[0040]圖2是本發(fā)明提供的音軌切換的方法實(shí)施例二流程圖;
[0041]圖3是本發(fā)明提供的音軌切換的方法實(shí)施例三流程圖;
[0042]圖4是本發(fā)明提供的音軌切換設(shè)備實(shí)施例一示意圖;
[0043]圖5是本發(fā)明提供的音軌切換設(shè)備實(shí)施例二示意圖;
[0044]圖6是本發(fā)明提供的音軌切換設(shè)備實(shí)施例三意圖;
[0045]圖7是本發(fā)明提供的音軌切換系統(tǒng)實(shí)施例一示意圖;
[0046]圖8是本發(fā)明提供的用電設(shè)備結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0047]需要說(shuō)明的是,本發(fā)明實(shí)施例提供的一種音軌切換的方法、設(shè)備及系統(tǒng),其中,方法包括接收音軌切換的請(qǐng)求;停止發(fā)送視頻數(shù)據(jù)給視頻解碼器和停止發(fā)送音軌數(shù)據(jù)給音頻解碼器;清空音頻解碼器的流緩沖區(qū),不清空音頻解碼器的幀緩沖區(qū);從文件或網(wǎng)絡(luò)流中讀取音軌切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū)。
[0048]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0049]為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明的【具體實(shí)施方式】做詳細(xì)的說(shuō)明。
[0050]方法實(shí)施例一:
[0051]參見(jiàn)圖1,該圖為本發(fā)明提供的音軌切換的方法實(shí)施例一流程圖。
[0052]本實(shí)施例提供的音軌切換的方法,包括以下步驟:
[0053]SlOl:接收音軌切換的請(qǐng)求;
[0054]可以理解的是,音軌切換的請(qǐng)求,一般都是由用戶來(lái)觸發(fā)的,例如,用戶在觀看影片時(shí),點(diǎn)擊按鈕或者選項(xiàng)來(lái)選擇自己需要的音軌,這樣播放器就會(huì)接收到用戶觸發(fā)的音軌切換的請(qǐng)求,例如將音軌由中文切換為英文。
[0055]S102:停止發(fā)送視頻數(shù)據(jù)給視頻解碼器和停止發(fā)送音軌數(shù)據(jù)給音頻解碼器;
[0056]當(dāng)播放器接收到音軌切換的請(qǐng)求后,就會(huì)暫停分別向音頻解碼器和視頻解碼器發(fā)送音軌數(shù)據(jù)和視頻數(shù)據(jù),可以理解的是,該暫停是很短的,對(duì)于用戶來(lái)說(shuō),人耳是辨別不出來(lái)有停頓的。
[0057]S103:清空音頻解碼器的流緩沖區(qū),不清空音頻解碼器的幀緩沖區(qū);
[0058]與現(xiàn)有技術(shù)不同的,本發(fā)明實(shí)施例中并沒(méi)有清空音頻解碼器的幀緩沖區(qū),僅清空了音頻解碼器的流緩沖區(qū),這是為了在音軌切換期間,繼續(xù)輸出音頻解碼器的幀緩沖區(qū)的音軌數(shù)據(jù),可以保證音頻的正常輸出,避免卡頓的現(xiàn)象。當(dāng)然,由于音頻解碼器的幀緩沖區(qū)很小,這樣被切換前的音軌數(shù)據(jù)輸出時(shí)間較短,用戶不會(huì)感覺(jué)到有明顯的延遲現(xiàn)象。
[0059]另外,可以理解的是,對(duì)于視頻解碼器的流緩沖區(qū)和幀緩沖區(qū)沒(méi)有做任何改變,因?yàn)?,音軌切換時(shí),視頻不受影響,視頻數(shù)據(jù)一直在照常輸出進(jìn)行播放。
[0060]S104:從文件或網(wǎng)絡(luò)流中讀取音軌切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū)。
[0061]需要說(shuō)明的是,新音軌數(shù)據(jù)指的是切換后的目的音軌數(shù)據(jù)。切換前的音軌數(shù)據(jù)指的是舊音軌數(shù)據(jù)。
[0062]本實(shí)施例中是將音軌切換過(guò)程中的新音軌數(shù)據(jù)重新讀取到音頻解碼器的流緩沖區(qū)進(jìn)行播放。因?yàn)橐糗壡袚Q過(guò)程中的新音軌數(shù)據(jù)可以與音頻解碼器的幀緩沖區(qū)的音軌數(shù)據(jù)銜接上,這樣對(duì)于用戶來(lái)說(shuō)就沒(méi)有停頓。
[0063]本發(fā)明中并沒(méi)有設(shè)置專門的內(nèi)存來(lái)緩存視頻數(shù)據(jù)和音軌數(shù)據(jù),而是直接從文件或網(wǎng)絡(luò)流中來(lái)讀取視頻數(shù)據(jù)和音軌數(shù)據(jù)。這樣就避免了內(nèi)存的占用,釋放了內(nèi)存空間,對(duì)于內(nèi)存配置小的低端產(chǎn)品來(lái)說(shuō)比較適用。
[0064]本發(fā)明實(shí)施例提供的音軌切換的方法,沒(méi)有設(shè)置專門的內(nèi)存來(lái)緩存視頻數(shù)據(jù)和音軌數(shù)據(jù),而是直接從文件或網(wǎng)絡(luò)流中來(lái)讀取新音軌數(shù)據(jù),因此,節(jié)省了內(nèi)存的空間,對(duì)于內(nèi)存配置較低的低端產(chǎn)品來(lái)說(shuō)比較適用。并且,本發(fā)明中沒(méi)有清空音頻解碼器的幀緩沖區(qū),可以繼續(xù)輸出音頻解碼器的幀緩沖區(qū)中的音軌數(shù)據(jù),可以保證音頻的正常輸出,避免卡頓的現(xiàn)象。本實(shí)施例中將切換過(guò)程中的新音軌數(shù)據(jù)從文件或網(wǎng)絡(luò)流中讀取到音頻解碼器的流緩沖區(qū)。由于讀取的新音軌數(shù)據(jù)可以與音頻解碼器的幀緩沖區(qū)的音軌數(shù)據(jù)銜接上,因此,不會(huì)出現(xiàn)音軌切換過(guò)程中有卡頓的現(xiàn)象,也不會(huì)出現(xiàn)短時(shí)間內(nèi)沒(méi)有音頻輸出。因此,可以實(shí)現(xiàn)音軌切換的平滑過(guò)渡。
[0065]下面結(jié)合方法實(shí)施例二具體介紹從文件或網(wǎng)絡(luò)流中讀取切換過(guò)程中的新音軌數(shù)據(jù)的過(guò)程。
[0066]方法實(shí)施例二:
[0067]參見(jiàn)圖2,該圖為本發(fā)明提供的音軌切換的方法實(shí)施例二流程圖。
[0068]本實(shí)施例中的S201-S203與方法實(shí)施例一中的S101-S103分別相同,在此不再贅述。
[0069]S204:從所述音頻解碼器的流緩沖區(qū)中獲取將要解碼的下一幀音軌數(shù)據(jù)的顯示時(shí)間戳APTS ;
[0070]由于本發(fā)明實(shí)施例中不清空音頻解碼器幀緩沖區(qū)中的音軌數(shù)據(jù),因此,需要補(bǔ)充的新音軌數(shù)據(jù)就是在音頻解碼器流緩沖區(qū)中將要解碼的下一幀音軌數(shù)據(jù),因此,已經(jīng)解碼的音軌數(shù)據(jù)都會(huì)存放在幀緩沖區(qū),只要補(bǔ)充流緩沖區(qū)中將要解碼的下一幀音軌數(shù)據(jù)開(kāi)始補(bǔ)充新音軌數(shù)據(jù)即可。
[0071]需要說(shuō)明的是,當(dāng)獲取到音頻解碼器的流緩沖區(qū)中將要解碼的下一幀音軌數(shù)據(jù)的APTS,便可以清空音頻解碼器的流緩沖區(qū)。
[0072]S205:記錄最后發(fā)送給視頻解碼器的流緩沖區(qū)的一幀視頻數(shù)據(jù)的顯示時(shí)間戳VPTS ;
[0073]此處的最后是指接收到音軌切換請(qǐng)求時(shí),送入視頻解碼器的流緩沖區(qū)的最后一幀視頻數(shù)據(jù)。
[0074]由于音頻解碼器和視頻解碼器是獨(dú)立的,并且視頻解碼器在切換音軌時(shí)是不間斷地播放視頻的,因此,需要通過(guò)視頻數(shù)據(jù)來(lái)判斷需要補(bǔ)充的新音軌數(shù)據(jù)的截止時(shí)間戳。
[0075]并且,由于音軌數(shù)據(jù)和視頻數(shù)據(jù)是交錯(cuò)讀取的,因此,送入音頻解碼器的顯示時(shí)間戳在APTS和VPTS之間的新音軌數(shù)據(jù)和視頻數(shù)據(jù)是同步的。
[0076]S206:從所述文件或網(wǎng)絡(luò)流中讀取新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū);所述新音軌數(shù)據(jù)為讀取指針從所述APTS對(duì)應(yīng)的位置開(kāi)始,直到讀取指針等于VPTS為止讀取的新音軌數(shù)據(jù)。
[0077]本實(shí)施例提供的方法利用顯示時(shí)間戳從文件或網(wǎng)絡(luò)流中重新讀取APTS到VPTS之間的新音軌數(shù)據(jù),例如原來(lái)是第一條音軌,現(xiàn)在切換為第二條音軌,則將APTS與VPTS之間的新音軌數(shù)據(jù)讀取到音頻解碼器的流緩沖區(qū)。音軌切換過(guò)程完畢以后,播發(fā)器開(kāi)始正常發(fā)送音軌數(shù)據(jù)和視頻數(shù)據(jù)。
[0078]方法實(shí)施例三:
[0079]參見(jiàn)圖3,該圖為本發(fā)明提供的音軌切換的方法實(shí)施例三流程圖。
[0080]本實(shí)施例中的S301-S305與方法實(shí)施例二中的S201-S205相同,區(qū)別是本實(shí)施例中增加S306 ;
[0081]即在S206從所述文件或網(wǎng)絡(luò)流中讀取新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū);之前增加S306 ;
[0082]S306:從所述文件或網(wǎng)絡(luò)流中利用讀取指針重新讀取所述APTS對(duì)應(yīng)的位置開(kāi)始直到等于VPTS為止的視頻數(shù)據(jù)和音軌數(shù)據(jù),將所述APTS與VPTS之間的視頻數(shù)據(jù)丟棄,將所述APTS與VPTS之間的新音軌數(shù)據(jù)之外的音軌數(shù)據(jù)丟棄。
[0083]由于播放器從文件或網(wǎng)絡(luò)流中讀取音軌數(shù)據(jù)和視頻數(shù)據(jù)是交錯(cuò)讀取的,即讀取一幀音軌時(shí)間,再讀取一幀視頻數(shù)據(jù)。因此,會(huì)將讀取指針?biāo)鶎?duì)應(yīng)的從APTS到VPTS之間的音軌數(shù)據(jù)和視頻數(shù)據(jù)一起讀取,由于現(xiàn)在需要補(bǔ)充的僅是讀取指針從APTS到VPTS之間的新音軌數(shù)據(jù),因此,將讀取過(guò)來(lái)的視頻數(shù)據(jù)和其他音軌數(shù)據(jù)直接丟棄即可,僅保留新音軌數(shù)據(jù)即可。
[0084]S307和S206相同,在此不再贅述。
[0085]綜上,本發(fā)明提供的音軌切換方法實(shí)施例,可以實(shí)現(xiàn)減少音頻數(shù)據(jù)和視頻數(shù)據(jù)占用的內(nèi)存,不需要專門的內(nèi)存來(lái)緩存,而是直接從文件或網(wǎng)絡(luò)流中讀取音頻數(shù)據(jù)和視頻數(shù)據(jù)。另外,在音軌切換時(shí),不清空音頻解碼器的幀緩沖區(qū),繼續(xù)播放音頻解碼器的幀緩沖區(qū)中的已經(jīng)解碼的音頻數(shù)據(jù)。同時(shí)重新從文件或網(wǎng)絡(luò)讀取切換過(guò)程中還未播放的音頻數(shù)據(jù),進(jìn)行新音軌的播放。這樣可以避免音軌切換時(shí),視頻播放卡頓現(xiàn)象,提升用戶的體驗(yàn)。
[0086]基于以上實(shí)施例提供的一種音軌切換的方法,本發(fā)明實(shí)施例還提供了一種音軌切換設(shè)備,下面結(jié)合附圖來(lái)詳細(xì)介紹。
[0087]設(shè)備實(shí)施例一:
[0088]參見(jiàn)圖4,該圖為本發(fā)明提供的音軌切換設(shè)備實(shí)施例一示意圖。
[0089]本實(shí)施例提供的音軌切換設(shè)備,包括:接收單元400、控制單元500和數(shù)據(jù)讀取單元 600 ;
[0090]所述接收單元400,用于接收音頻切換請(qǐng)求;
[0091]可以理解的是,音軌切換的請(qǐng)求,一般都是由用戶來(lái)觸發(fā)的,例如,用戶在觀看影片時(shí),點(diǎn)擊按鈕或者選項(xiàng)來(lái)選擇自己需要的音軌,這樣播放器就會(huì)接收到用戶觸發(fā)的音軌切換的請(qǐng)求,例如將音軌由中文切換為英文。
[0092]所述控制單元500,用于當(dāng)接收單元接收到音頻切換請(qǐng)求后,停止發(fā)送視頻數(shù)據(jù)給視頻解碼器和停止發(fā)送音軌數(shù)據(jù)給音頻解碼器;清空音頻解碼器的流緩沖區(qū),不清空音頻解碼器的幀緩沖區(qū);控制所述數(shù)據(jù)讀取單元600從文件或網(wǎng)絡(luò)流讀取切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū)。
[0093]當(dāng)播放器接收到音軌切換的請(qǐng)求后,就會(huì)暫停分別向音頻解碼器和視頻解碼器發(fā)送音軌數(shù)據(jù)和視頻數(shù)據(jù),可以理解的是,該暫停是很短的,對(duì)于用戶來(lái)說(shuō),人耳是辨別不出來(lái)有停頓的。
[0094]與現(xiàn)有技術(shù)不同的,本發(fā)明實(shí)施例中并沒(méi)有清空音頻解碼器的幀緩沖區(qū),僅清空了音頻解碼器的流緩沖區(qū),這是為了在音軌切換期間,繼續(xù)輸出音頻解碼器的幀緩沖區(qū)的音軌數(shù)據(jù),可以保證音頻的正常輸出,避免卡頓的現(xiàn)象。當(dāng)然,由于音頻解碼器的幀緩沖區(qū)很小,這樣被切換前的音軌數(shù)據(jù)輸出時(shí)間較短,用戶不會(huì)感覺(jué)到有明顯的延遲現(xiàn)象。
[0095]另外,可以理解的是,對(duì)于視頻解碼器的流緩沖區(qū)和幀緩沖區(qū)沒(méi)有做任何改變,因?yàn)椋糗壡袚Q時(shí),視頻不受影響,視頻數(shù)據(jù)一直在照常輸出進(jìn)行播放。
[0096]需要說(shuō)明的是,新音軌數(shù)據(jù)指的是切換后的目的音軌數(shù)據(jù)。切換前的音軌數(shù)據(jù)指的是舊音軌數(shù)據(jù)。
[0097]本實(shí)施例中是將音軌切換過(guò)程中的新音軌數(shù)據(jù)重新讀取到音頻解碼器的流緩沖區(qū)進(jìn)行播放。因?yàn)橐糗壡袚Q過(guò)程中的新音軌數(shù)據(jù)可以與音頻解碼器的幀緩沖區(qū)的音軌數(shù)據(jù)銜接上,這樣對(duì)于用戶來(lái)說(shuō)就沒(méi)有停頓。
[0098]本發(fā)明中并沒(méi)有設(shè)置專門的內(nèi)存來(lái)緩存視頻數(shù)據(jù)和音軌數(shù)據(jù),而是直接從文件或網(wǎng)絡(luò)流中來(lái)讀取視頻數(shù)據(jù)和音軌數(shù)據(jù)。這樣就避免了內(nèi)存的占用,釋放了內(nèi)存空間,對(duì)于內(nèi)存配置小的低端產(chǎn)品來(lái)說(shuō)比較適用。
[0099]本發(fā)明實(shí)施例提供的音軌切換的方法,沒(méi)有設(shè)置專門的內(nèi)存來(lái)緩存視頻數(shù)據(jù)和音軌數(shù)據(jù),而是直接從文件或網(wǎng)絡(luò)流中來(lái)讀取新音軌數(shù)據(jù),因此,節(jié)省了內(nèi)存的空間,對(duì)于內(nèi)存配置較低的低端產(chǎn)品來(lái)說(shuō)比較適用。并且,本發(fā)明中沒(méi)有清空音頻解碼器的幀緩沖區(qū),可以繼續(xù)輸出音頻解碼器的幀緩沖區(qū)中的音軌數(shù)據(jù),可以保證音頻的正常輸出,避免卡頓的現(xiàn)象。本實(shí)施例中將切換過(guò)程中的新音軌數(shù)據(jù)從文件或網(wǎng)絡(luò)流中讀取到音頻解碼器的流緩沖區(qū)。由于讀取的新音軌數(shù)據(jù)可以與音頻解碼器的幀緩沖區(qū)的音軌數(shù)據(jù)銜接上,因此,不會(huì)出現(xiàn)音軌切換過(guò)程中有卡頓的現(xiàn)象,也不會(huì)出現(xiàn)短時(shí)間內(nèi)沒(méi)有音頻輸出。因此,可以實(shí)現(xiàn)音軌切換的平滑過(guò)渡。
[0100]設(shè)備實(shí)施例二:
[0101]參見(jiàn)圖5,該圖為本發(fā)明提供的音軌切換設(shè)備實(shí)施例二示意圖。
[0102]本實(shí)施例提供的音頻切換設(shè)備,所述數(shù)據(jù)讀取單元600包括:音軌數(shù)據(jù)顯示時(shí)間戳讀取子單元601、視頻數(shù)據(jù)顯示時(shí)間戳讀取子單元602和發(fā)送子單元603 ;
[0103]所述音軌數(shù)據(jù)顯示時(shí)間戳讀取子單元601,用于從所述音頻解碼器的流緩沖區(qū)中獲取將要解碼的下一幀音軌數(shù)據(jù)的顯示時(shí)間戳APTS ;
[0104]由于本發(fā)明實(shí)施例中不清空音頻解碼器幀緩沖區(qū)中的音軌數(shù)據(jù),因此,需要補(bǔ)充的新音軌數(shù)據(jù)就是在音頻解碼器流緩沖區(qū)中將要解碼的下一幀音軌數(shù)據(jù),因此,已經(jīng)解碼的音軌數(shù)據(jù)都會(huì)存放在幀緩沖區(qū),只要補(bǔ)充流緩沖區(qū)中將要解碼的下一幀音軌數(shù)據(jù)開(kāi)始補(bǔ)充新音軌數(shù)據(jù)即可。
[0105]需要說(shuō)明的是,當(dāng)獲取到音頻解碼器的流緩沖區(qū)中將要解碼的下一幀音軌數(shù)據(jù)的APTS,便可以清空音頻解碼器的流緩沖區(qū)。
[0106]所述視頻數(shù)據(jù)顯示時(shí)間戳讀取子單元602,用于記錄最后發(fā)送給視頻解碼器的流緩沖區(qū)的一幀視頻數(shù)據(jù)的顯示時(shí)間戳VPTS ;
[0107]此處的最后是指接收到音軌切換請(qǐng)求時(shí),送入視頻解碼器的流緩沖區(qū)的最后一幀視頻數(shù)據(jù)。
[0108]由于音頻解碼器和視頻解碼器是獨(dú)立的,并且視頻解碼器在切換音軌時(shí)是不間斷地播放視頻的,因此,需要通過(guò)視頻數(shù)據(jù)來(lái)判斷需要補(bǔ)充的新音軌數(shù)據(jù)的截止時(shí)間戳。
[0109]并且,由于音軌數(shù)據(jù)和視頻數(shù)據(jù)是交錯(cuò)讀取的,因此,送入音頻解碼器的顯示時(shí)間戳在APTS和VPTS之間的新音軌數(shù)據(jù)和視頻數(shù)據(jù)是同步的。
[0110]所述發(fā)送子單元603,從所述文件或網(wǎng)絡(luò)流中讀取新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū);所述新音軌數(shù)據(jù)為讀取指針從所述APTS對(duì)應(yīng)的位置開(kāi)始,直到讀取指針等于VPTS為止的新音軌數(shù)據(jù)。
[0111]本實(shí)施例提供的設(shè)備利用顯示時(shí)間戳從文件或網(wǎng)絡(luò)流中重新讀取APTS到VPTS之間的新音軌數(shù)據(jù),例如原來(lái)是第一條音軌,現(xiàn)在切換為第二條音軌,則將APTS與VPTS之間的新音軌數(shù)據(jù)讀取到音頻解碼器的流緩沖區(qū)。音軌切換過(guò)程完畢以后,播放器開(kāi)始正常發(fā)送音軌數(shù)據(jù)和視頻數(shù)據(jù)。[0112]設(shè)備實(shí)施例三:
[0113]參見(jiàn)圖6,該圖為本發(fā)明提供的音軌切換設(shè)備實(shí)施例三意圖。
[0114]本發(fā)明實(shí)施例提供的音軌切換的設(shè)備,所述數(shù)據(jù)讀取單元600還包括:數(shù)據(jù)讀取子單元604和丟棄子單元605 ;
[0115]所述數(shù)據(jù)讀取子單元604,用于從所述文件或網(wǎng)絡(luò)流中重新讀取所述APTS與VPTS之間的視頻數(shù)據(jù)和音軌數(shù)據(jù);
[0116]所述丟棄子單元605,用于從所述文件或網(wǎng)絡(luò)流中利用讀取指針重新讀取所述APTS對(duì)應(yīng)的位置開(kāi)始直到等于VPTS為止的視頻數(shù)據(jù)和音軌數(shù)據(jù),將所述APTS與VPTS之間的視頻數(shù)據(jù)丟棄,將所述APTS與VPTS之間的新音軌數(shù)據(jù)之外的音軌數(shù)據(jù)丟棄。
[0117]由于播放器從文件或網(wǎng)絡(luò)流中讀取音軌數(shù)據(jù)和視頻數(shù)據(jù)是交錯(cuò)讀取的,即讀取一幀音軌時(shí)間,再讀取一幀視頻數(shù)據(jù)。因此,會(huì)將讀取指針?biāo)鶎?duì)應(yīng)的從APTS到VPTS之間的音軌數(shù)據(jù)和視頻數(shù)據(jù)一起讀取,由于現(xiàn)在需要補(bǔ)充的僅是讀取指針從APTS到VPTS之間的新音軌數(shù)據(jù),因此,將讀取過(guò)來(lái)的視頻數(shù)據(jù)和其他音軌數(shù)據(jù)直接丟棄即可,僅保留新音軌數(shù)據(jù)即可。
[0118]綜上,本發(fā)明提供的音軌切換設(shè)備實(shí)施例,可以實(shí)現(xiàn)減少音頻數(shù)據(jù)和視頻數(shù)據(jù)占用的內(nèi)存,不需要專門的內(nèi)存來(lái)緩存,而是直接從文件或網(wǎng)絡(luò)流中讀取音頻數(shù)據(jù)和視頻數(shù)據(jù)。另外,在音軌切換時(shí),不清空音頻解碼器的幀緩沖區(qū),繼續(xù)播放音頻解碼器的幀緩沖區(qū)中的已經(jīng)解碼的音頻數(shù)據(jù)。同時(shí)重新從文件或網(wǎng)絡(luò)讀取切換過(guò)程中還未播放的音頻數(shù)據(jù),進(jìn)行新音軌的播放。這樣可以避免音軌切換時(shí),視頻播放卡頓現(xiàn)象,提升用戶的體驗(yàn)。
[0119]基于以上實(shí)施例提供的音軌切換方法和設(shè)備,本發(fā)明還提供了一種音軌切換系統(tǒng),下面結(jié)合附圖對(duì)該音軌切換系統(tǒng)進(jìn)行介紹。
[0120]系統(tǒng)實(shí)施例一:
[0121]參見(jiàn)圖7,該圖為本發(fā)明提供的音軌切換系統(tǒng)實(shí)施例一示意圖。
[0122]本實(shí)施例提供的音軌切換的系統(tǒng),包括:播放器700、音頻解碼器800、視頻解碼器900 ;
[0123]所述音頻解碼器800包括音頻流緩沖區(qū)和音頻幀緩沖區(qū),所述音頻流緩沖區(qū)存放待解碼的音軌數(shù)據(jù),所述音頻幀緩沖區(qū)存放解碼后的音軌數(shù)據(jù);
[0124]所述視頻解碼器900包括視頻流緩沖區(qū)和視頻幀緩沖區(qū),所述視頻流緩沖區(qū)存放待解碼的視頻數(shù)據(jù),所述視頻幀緩沖區(qū)存放解碼后的視頻數(shù)據(jù);
[0125]所述播放器700,用于接收音軌切換的請(qǐng)求,停止發(fā)送視頻數(shù)據(jù)給所述視頻解碼器900和停止發(fā)送音軌數(shù)據(jù)給所述音頻解碼器800 ;清空音頻解碼器800的流緩沖區(qū),不清空音頻解碼器800的幀緩沖區(qū);還用于從文件或網(wǎng)絡(luò)流讀取切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū)。
[0126]可以理解的是,音軌切換的請(qǐng)求,一般都是由用戶來(lái)觸發(fā)的,例如,用戶在觀看影片時(shí),點(diǎn)擊按鈕或者選項(xiàng)來(lái)選擇自己需要的音軌,這樣播放器就會(huì)接收到用戶觸發(fā)的音軌切換的請(qǐng)求,例如將音軌由中文切換為英文。
[0127]當(dāng)播放器接收到音軌切換的請(qǐng)求后,就會(huì)暫停分別向音頻解碼器和視頻解碼器發(fā)送音軌數(shù)據(jù)和視頻數(shù)據(jù),可以理解的是,該暫停是很短的,對(duì)于用戶來(lái)說(shuō),人耳是辨別不出來(lái)有停頓的。[0128]與現(xiàn)有技術(shù)不同的,本發(fā)明實(shí)施例中并沒(méi)有清空音頻解碼器的幀緩沖區(qū),僅清空了音頻解碼器的流緩沖區(qū),這是為了在音軌切換期間,繼續(xù)輸出音頻解碼器的幀緩沖區(qū)的音軌數(shù)據(jù),可以保證音頻的正常輸出,避免卡頓的現(xiàn)象。當(dāng)然,由于音頻解碼器的幀緩沖區(qū)很小,這樣被切換前的音軌數(shù)據(jù)輸出時(shí)間較短,用戶不會(huì)感覺(jué)到有明顯的延遲現(xiàn)象。
[0129]另外,可以理解的是,對(duì)于視頻解碼器的流緩沖區(qū)和幀緩沖區(qū)沒(méi)有做任何改變,因?yàn)椋糗壡袚Q時(shí),視頻不受影響,視頻數(shù)據(jù)一直在照常輸出進(jìn)行播放。
[0130]需要說(shuō)明的是,新音軌數(shù)據(jù)指的是切換后的目的音軌數(shù)據(jù)。切換前的音軌數(shù)據(jù)指的是舊音軌數(shù)據(jù)。
[0131]本實(shí)施例中是將音軌切換過(guò)程中的新音軌數(shù)據(jù)重新讀取到音頻解碼器的流緩沖區(qū)進(jìn)行播放。因?yàn)橐糗壡袚Q過(guò)程中的新音軌數(shù)據(jù)可以與音頻解碼器的幀緩沖區(qū)的音軌數(shù)據(jù)銜接上,這樣對(duì)于用戶來(lái)說(shuō)就沒(méi)有停頓。
[0132]本發(fā)明中并沒(méi)有設(shè)置專門的內(nèi)存來(lái)緩存視頻數(shù)據(jù)和音軌數(shù)據(jù),而是直接從文件或網(wǎng)絡(luò)流中來(lái)讀取視頻數(shù)據(jù)和音軌數(shù)據(jù)。這樣就避免了內(nèi)存的占用,釋放了內(nèi)存空間,對(duì)于內(nèi)存配置小的低端產(chǎn)品來(lái)說(shuō)比較適用。
[0133]本發(fā)明實(shí)施例提供的音軌切換系統(tǒng),沒(méi)有設(shè)置專門的內(nèi)存來(lái)緩存視頻數(shù)據(jù)和音軌數(shù)據(jù),而是直接從文件或網(wǎng)絡(luò)流中來(lái)讀取新音軌數(shù)據(jù),因此,節(jié)省了內(nèi)存的空間,對(duì)于內(nèi)存配置較低的低端產(chǎn)品來(lái)說(shuō)比較適用。并且,本發(fā)明中沒(méi)有清空音頻解碼器的幀緩沖區(qū),可以繼續(xù)輸出音頻解碼器的幀緩沖區(qū)中的音軌數(shù)據(jù),可以保證音頻的正常輸出,避免卡頓的現(xiàn)象。本實(shí)施例中將切換過(guò)程中的新音軌數(shù)據(jù)從文件或網(wǎng)絡(luò)流中讀取到音頻解碼器的流緩沖區(qū)。由于讀取的新音軌數(shù)據(jù)可以與音頻解碼器的幀緩沖區(qū)的音軌數(shù)據(jù)銜接上,因此,不會(huì)出現(xiàn)音軌切換過(guò)程中有卡頓的現(xiàn)象,也不會(huì)出現(xiàn)短時(shí)間內(nèi)沒(méi)有音頻輸出。因此,可以實(shí)現(xiàn)音軌切換的平滑過(guò)渡。
[0134]在本發(fā)明提供的另一種音軌切換系統(tǒng)中,所述播放器還用于從文件或網(wǎng)絡(luò)流讀取切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū),具體為:
[0135]從所述音頻解碼器的流緩沖區(qū)中獲取將要解碼的下一幀音軌數(shù)據(jù)的顯示時(shí)間戳APTS ;記錄最后發(fā)送給視頻解碼器的流緩沖區(qū)的一幀視頻數(shù)據(jù)的顯示時(shí)間戳VPTS ;從所述文件或網(wǎng)絡(luò)流中讀取新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū);所述新音軌數(shù)據(jù)為讀取指針從所述APTS對(duì)應(yīng)的位置開(kāi)始,直到讀取指針等于VPTS為止讀取的新音軌數(shù)據(jù)。
[0136]由于本發(fā)明實(shí)施例中不清空音頻解碼器幀緩沖區(qū)中的音軌數(shù)據(jù),因此,需要補(bǔ)充的新音軌數(shù)據(jù)就是在音頻解碼器流緩沖區(qū)中將要解碼的下一幀音軌數(shù)據(jù),因此,已經(jīng)解碼的音軌數(shù)據(jù)都會(huì)存放在幀緩沖區(qū),只要補(bǔ)充流緩沖區(qū)中將要解碼的下一幀音軌數(shù)據(jù)開(kāi)始補(bǔ)充新音軌數(shù)據(jù)即可。
[0137]需要說(shuō)明的是,當(dāng)獲取到音頻解碼器的流緩沖區(qū)中將要解碼的下一幀音軌數(shù)據(jù)的APTS,便可以清空音頻解碼器的流緩沖區(qū)。
[0138]此處的最后是指接收到音軌切換請(qǐng)求時(shí),送入視頻解碼器的流緩沖區(qū)的最后一幀視頻數(shù)據(jù)。
[0139]由于音頻解碼器和視頻解碼器是獨(dú)立的,并且視頻解碼器在切換音軌時(shí)是不間斷地播放視頻的,因此,需要通過(guò)視頻數(shù)據(jù)來(lái)判斷需要補(bǔ)充的新音軌數(shù)據(jù)的截止時(shí)間戳。
[0140]并且,由于音軌數(shù)據(jù)和視頻數(shù)據(jù)是交錯(cuò)讀取的,因此,送入音頻解碼器的顯示時(shí)間戳在APTS和VPTS之間的新音軌數(shù)據(jù)和視頻數(shù)據(jù)是同步的。
[0141]本實(shí)施例提供的系統(tǒng)利用顯示時(shí)間戳從文件或網(wǎng)絡(luò)流中重新讀取APTS到VPTS之間的新音軌數(shù)據(jù),例如原來(lái)是第一條音軌,現(xiàn)在切換為第二條音軌,則將APTS與VPTS之間的新音軌數(shù)據(jù)讀取到音頻解碼器的流緩沖區(qū)。音軌切換過(guò)程完畢以后,播發(fā)器開(kāi)始正常發(fā)送音軌數(shù)據(jù)和視頻數(shù)據(jù)。
[0142]在本發(fā)明提供另一種音軌切換系統(tǒng)中,所述播放器將從所述文件或網(wǎng)絡(luò)流中讀取的APTS和VPTS之間的新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū)之前;
[0143]還用于:從所述文件或網(wǎng)絡(luò)流中利用讀取指針重新讀取所述APTS對(duì)應(yīng)的位置開(kāi)始直到等于VPTS為止的視頻數(shù)據(jù)和音軌數(shù)據(jù),將所述APTS與VPTS之間的視頻數(shù)據(jù)丟棄,將所述APTS與VPTS之間的新音軌數(shù)據(jù)之外的音軌數(shù)據(jù)丟棄。
[0144]由于播放器從文件或網(wǎng)絡(luò)流中讀取音軌數(shù)據(jù)和視頻數(shù)據(jù)是交錯(cuò)讀取的,即讀取一幀音軌時(shí)間,再讀取一幀視頻數(shù)據(jù)。因此,會(huì)將讀取指針?biāo)鶎?duì)應(yīng)的從APTS到VPTS之間的音軌數(shù)據(jù)和視頻數(shù)據(jù)一起讀取,由于現(xiàn)在需要補(bǔ)充的僅是讀取指針從APTS到VPTS之間的新音軌數(shù)據(jù),因此,將讀取過(guò)來(lái)的視頻數(shù)據(jù)和其他音軌數(shù)據(jù)直接丟棄即可,僅保留新音軌數(shù)據(jù)即可。
[0145]綜上,本發(fā)明提供的音軌切換系統(tǒng)實(shí)施例,可以實(shí)現(xiàn)減少音頻數(shù)據(jù)和視頻數(shù)據(jù)占用的內(nèi)存,不需要專門的內(nèi)存來(lái)緩存,而是直接從文件或網(wǎng)絡(luò)流中讀取音頻數(shù)據(jù)和視頻數(shù)據(jù)。另外,在音軌切換時(shí),不清空音頻解碼器的幀緩沖區(qū),繼續(xù)播放音頻解碼器的幀緩沖區(qū)中的已經(jīng)解碼的音頻數(shù)據(jù)。同時(shí)重新從文件或網(wǎng)絡(luò)讀取切換過(guò)程中還未播放的音頻數(shù)據(jù),進(jìn)行新音軌的播放。這樣可以避免音軌切換時(shí),視頻播放卡頓現(xiàn)象,提升用戶的體驗(yàn)。
[0146]本發(fā)明實(shí)施例還提供了 一種用電設(shè)備,下面結(jié)合附圖來(lái)詳細(xì)介紹其組成。
[0147]參見(jiàn)圖8,本發(fā)明提供的用電設(shè)備結(jié)構(gòu)示意圖。
[0148]本發(fā)明實(shí)施例涉及的用電設(shè)備,所述用電設(shè)備可以包括手機(jī)、平板電腦、PDA(Personal Digital Assistant,個(gè)人數(shù)字助理)、P0S (Point of Sales,銷售終端)、車載電腦等。
[0149]以用電設(shè)備為手機(jī)為例,圖8示出的是與本發(fā)明實(shí)施例相關(guān)的手機(jī)1000的部分結(jié)構(gòu)的框圖。
[0150]參考圖8,手機(jī)1000包括處理器1000a、輸入單元1000b、顯示單元1000c、存儲(chǔ)器IOOOd 和電池 IOOOe。
[0151]處理器IOOOa是手機(jī)1000的控制中心,利用各種接口和線路連接整個(gè)手機(jī)的各個(gè)部分,通過(guò)運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器IOOOd內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器IOOd內(nèi)的數(shù)據(jù),執(zhí)行手機(jī)1000的各種功能和處理數(shù)據(jù),從而對(duì)手機(jī)進(jìn)行整體監(jiān)控??蛇x的,處理器IOOOa可包括一個(gè)或多個(gè)處理單元;優(yōu)選的,處理器IOOOa可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無(wú)線通信??梢岳斫獾氖牵鲜稣{(diào)制解調(diào)處理器也可以不集成到處理器IOOOa 中。
[0152]本實(shí)施例中,處理器IOOOa接收音軌切換的請(qǐng)求;停止發(fā)送視頻數(shù)據(jù)給視頻解碼器和停止發(fā)送音軌數(shù)據(jù)給音頻解碼器;清空音頻解碼器的流緩沖區(qū),不清空音頻解碼器的幀緩沖區(qū);從文件或網(wǎng)絡(luò)流中讀取音軌切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū)。
[0153]輸入單元IOOOb可用于接收用戶發(fā)送的切換音軌的請(qǐng)求。
[0154]具體地,輸入單元IOOOb可包括觸控面板IOOObl以及其他輸入設(shè)備1000b2。觸控面板lOOObl,也稱為觸摸屏,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸控面板IOOObl上或在觸控面板IOOObl附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動(dòng)相應(yīng)的連接裝置。可選的,觸控面板IOOObl可包括觸摸檢測(cè)裝置和觸摸控制器兩個(gè)部分。其中,觸摸檢測(cè)裝置檢測(cè)用戶的觸摸方位,并檢測(cè)觸摸操作帶來(lái)的信號(hào),將信號(hào)傳送給觸摸控制器;觸摸控制器從觸摸檢測(cè)裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器1000a,并能接收處理器IOOOa發(fā)來(lái)的命令并加以執(zhí)行。
[0155]此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實(shí)現(xiàn)觸控面板lOOObl。
[0156]除了觸控面板lOOObl,輸入單元1000b還可以包括其他輸入設(shè)備1000b2。具體地,其他輸入設(shè)備1000b2可以包括但不限于物理鍵盤(pán)、功能鍵(比如音量控制按鍵、開(kāi)關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。
[0157]用戶可以通過(guò)顯示單元1000c來(lái)觀看影片的播放。
[0158]顯示單元1000c可包括顯示面板IOOOcl,可選的,可以采用IXD(Liquid CrystalDisplay,液晶顯示器)、OLED (Organic Light-Emitting Diode,有機(jī)發(fā)光二極管)等形式來(lái)配置顯示面板IOOOcl。
[0159]進(jìn)一步的,觸控面板IOOObl可覆蓋顯示面板IOOOcl,當(dāng)觸控面板IOOObl檢測(cè)到在其上或附近的觸摸操作后,傳送給處理器1000a以確定觸摸事件的類型,隨后處理器1000a根據(jù)觸摸事件的類型在顯示面板IOOOcI上提供相應(yīng)的視覺(jué)輸出。
[0160]雖然在圖8中,觸控面板IOOObl與顯示面板IOOOcl是作為兩個(gè)獨(dú)立的部件來(lái)實(shí)現(xiàn)手機(jī)1000的輸入和輸入功能,但是在某些實(shí)施例中,可以將觸控面板IOOObl與顯示面板IOOOcl集成而實(shí)現(xiàn)手機(jī)100的輸入和輸出功能。
[0161]在上述實(shí)施例中,中央處理器203具體可以是英特爾公司生產(chǎn)的奔騰系列處理器或安騰處理器等。
[0162]在上述發(fā)明實(shí)施例中,移動(dòng)終端包括但不限于手機(jī)、個(gè)人數(shù)字助理(PersonalDigital Assistant, PDA)、平板電腦等移動(dòng)通訊設(shè)備。
[0163]需要說(shuō)明的是,本領(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 Access Memory, RAM)等。
[0164]以上所述,僅是本發(fā)明的較佳實(shí)施例而已,并非對(duì)本發(fā)明作任何形式上的限制。雖然本發(fā)明已以較佳實(shí)施例揭露如上,然而并非用以限定本發(fā)明。任何熟悉本領(lǐng)域的技術(shù)人員,在不脫離本發(fā)明技術(shù)方案范圍情況下,都可利用上述揭示的方法和技術(shù)內(nèi)容對(duì)本發(fā)明技術(shù)方案做出許多可能的變動(dòng)和修飾,或修改為等同變化的等效實(shí)施例。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對(duì)以上實(shí)施例所做的任何簡(jiǎn)單修改、等同變化及修飾,均仍屬于本發(fā)明技術(shù)方案保護(hù)的范圍內(nèi)。
【權(quán)利要求】
1.一種音軌切換的方法,其特征在于,包括以下步驟: 接收音軌切換的請(qǐng)求; 停止發(fā)送視頻數(shù)據(jù)給視頻解碼器和停止發(fā)送音軌數(shù)據(jù)給音頻解碼器; 清空音頻解碼器的流緩沖區(qū),不清空音頻解碼器的幀緩沖區(qū); 從文件或網(wǎng)絡(luò)流中讀取音軌切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū)。
2.根據(jù)權(quán)利要求1所述的音軌切換的方法,其特征在于,所述從文件或網(wǎng)絡(luò)流讀取切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū),具體包括: 從所述音頻解碼器的流緩沖區(qū)中獲取將要解碼的下一幀音軌數(shù)據(jù)的顯示時(shí)間戳APTS ; 記錄最后發(fā)送給視頻解碼器的流緩沖區(qū)的一幀視頻數(shù)據(jù)的顯示時(shí)間戳VPTS ; 從所述文件或網(wǎng)絡(luò)流中讀取新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū);所述新音軌數(shù)據(jù)為讀取指針從所述APTS對(duì)應(yīng)的位置開(kāi)始,直到讀取指針等于VPTS為止讀取的新音軌數(shù)據(jù)。
3.根據(jù)權(quán)利要求2所述的音軌切換的方法,其特征在于,所述從所述文件或網(wǎng)絡(luò)流中讀取新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū);之前,還包括: 從所述文件或網(wǎng)絡(luò)流中利用讀取指針重新讀取所述APTS對(duì)應(yīng)的位置開(kāi)始直到等于VPTS為止的視頻數(shù)據(jù)和音軌數(shù)據(jù),將所述APTS與VPTS之間的視頻數(shù)據(jù)丟棄,將所述APTS與VPTS之間的新音軌數(shù)據(jù)之外的音軌數(shù)據(jù)丟棄。
4.一種音頻切換設(shè)備,其特征在于,包括:接收單元、控制單元和數(shù)據(jù)讀取單元; 所述接收單元,用于接收音頻切換請(qǐng)求; 所述控制單元,用于當(dāng)接收單元接收到音頻切換請(qǐng)求后,停止發(fā)送視頻數(shù)據(jù)給視頻解碼器和停止發(fā)送音軌數(shù)據(jù)給音頻解碼器;清空音頻解碼器的流緩沖區(qū),不清空音頻解碼器的幀緩沖區(qū);控制所述數(shù)據(jù)讀取單元從文件或網(wǎng)絡(luò)流讀取切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū)。
5.根據(jù)權(quán)利要求4所述的音頻切換設(shè)備,其特征在于,所述數(shù)據(jù)讀取單元包括:音軌數(shù)據(jù)顯示時(shí)間戳讀取子單元、視頻數(shù)據(jù)顯示時(shí)間戳讀取子單元和發(fā)送子單元; 所述音軌數(shù)據(jù)顯示時(shí)間戳讀取子單元,用于從所述音頻解碼器的流緩沖區(qū)中獲取將要解碼的下一幀音軌數(shù)據(jù)的顯示時(shí)間戳APTS ; 所述視頻數(shù)據(jù)顯示時(shí)間戳讀取子單元,用于記錄最后發(fā)送給視頻解碼器的流緩沖區(qū)的一幀視頻數(shù)據(jù)的顯示時(shí)間戳VPTS ; 所述發(fā)送子單元,從所述文件或網(wǎng)絡(luò)流中讀取新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū);所述新音軌數(shù)據(jù)為讀取指針從所述APTS對(duì)應(yīng)的位置開(kāi)始,直到讀取指針等于VPTS為止的新音軌數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的音頻切換設(shè)備,其特征在于,所述數(shù)據(jù)讀取單元還包括:數(shù)據(jù)讀取子單元和丟棄子單元; 所述數(shù)據(jù)讀取子單元,用于從所述文件或網(wǎng)絡(luò)流中重新讀取所述APTS與VPTS之間的視頻數(shù)據(jù)和音軌數(shù)據(jù); 所述丟棄子單元,用于從所述文件或網(wǎng)絡(luò)流中利用讀取指針重新讀取所述APTS對(duì)應(yīng)的位置開(kāi)始直到等于VPTS為止的視頻數(shù)據(jù)和音軌數(shù)據(jù),將所述APTS與VPTS之間的視頻數(shù)據(jù)丟棄,將所述APTS與VPTS之間的新音軌數(shù)據(jù)之外的音軌數(shù)據(jù)丟棄。
7.一種音軌切換的系統(tǒng),其特征在于,包括:播放器、音頻解碼器、視頻解碼器; 所述音頻解碼器包括音頻流緩沖區(qū)和音頻幀緩沖區(qū),所述音頻流緩沖區(qū)存放待解碼的音軌數(shù)據(jù),所述音頻幀緩沖區(qū)存放解碼后的音軌數(shù)據(jù); 所述視頻解碼器包括視頻流緩沖區(qū)和視頻幀緩沖區(qū),所述視頻流緩沖區(qū)存放待解碼的視頻數(shù)據(jù),所述視頻幀緩沖區(qū)存放解碼后的視頻數(shù)據(jù); 所述播放器,用于接收音軌切換的請(qǐng)求,停止發(fā)送視頻數(shù)據(jù)給所述視頻解碼器和停止發(fā)送音軌數(shù)據(jù)給所述音頻解碼器;清空音頻解碼器的流緩沖區(qū),不清空音頻解碼器的幀緩沖區(qū);還用于從文件或網(wǎng)絡(luò)流讀取切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū)。
8.根據(jù)權(quán)利要求7所述的音軌切換的系統(tǒng),其特征在于,所述播放器還用于從文件或網(wǎng)絡(luò)流讀取切換過(guò)程中的新音軌數(shù)據(jù)發(fā)送給音頻解碼器的流緩沖區(qū),具體為: 從所述音頻解碼器的流緩沖區(qū)中獲取將要解碼的下一幀音軌數(shù)據(jù)的顯示時(shí)間戳APTS ;記錄最后發(fā)送給視頻解碼器的流緩沖區(qū)的一幀視頻數(shù)據(jù)的顯示時(shí)間戳VPTS ;從所述文件或網(wǎng)絡(luò)流中讀取新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū);所述新音軌數(shù)據(jù)為讀取指針從所述APTS對(duì)應(yīng)的位置開(kāi)始,直到讀取指針等于VPTS為止讀取的新音軌數(shù)據(jù)。
9.根據(jù)權(quán)利要求8所述的音軌切換的方法,其特征在于,所述播放器將從所述文件或網(wǎng)絡(luò)流中讀取的APTS和VPTS之間的新音軌數(shù)據(jù)發(fā)送給所述音頻解碼器的流緩沖區(qū)之前; 還用于:從所述文件或網(wǎng)絡(luò)流中利用讀取指針重新讀取所述APTS對(duì)應(yīng)的位置開(kāi)始直到等于VPTS為止的視頻數(shù)據(jù)和音軌數(shù)據(jù),將所述APTS與VPTS之間的視頻數(shù)據(jù)丟棄,將所述APTS與VPTS之間的新音軌數(shù)據(jù)之外的音軌數(shù)據(jù)丟棄。
【文檔編號(hào)】H04N21/439GK103780943SQ201410036198
【公開(kāi)日】2014年5月7日 申請(qǐng)日期:2014年1月24日 優(yōu)先權(quán)日:2014年1月24日
【發(fā)明者】梁偉 申請(qǐng)人:華為技術(shù)有限公司