專利名稱:一種緩沖區(qū)中媒體流的管理方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,尤其涉及一種緩沖區(qū)中媒體流的管理方法及裝置。
背景技術(shù):
現(xiàn)有技術(shù)中,對緩沖區(qū)中媒體流的管理方法如下獲取緩沖區(qū)內(nèi)的媒體流的數(shù)據(jù)尺寸(即字節(jié)數(shù)),如果媒體流的數(shù)據(jù)尺寸低于下水線,則停止播放媒體流并緩沖媒體流,直到媒體流的數(shù)據(jù)尺寸高于上水線后,重新開始播放媒體流。緩沖區(qū)在確定媒體流的數(shù)據(jù)尺寸時,通常不會把從緩沖區(qū)流入到底層硬件緩沖(音視頻解碼裝置)的媒體流考慮在內(nèi)。這是因為獲取這些流入底層硬件緩沖的媒體流的實際數(shù)據(jù)尺寸需要得知底層硬件緩沖的大小,但是在不同的硬件平臺下,從底層獲取硬件緩沖的實際數(shù)據(jù)尺寸是不同的,再加上在有些硬件平臺下是不能獲取到底層硬件緩沖信息的,這無疑使得獲取這些流入底層硬件緩沖的媒體流的實際數(shù)據(jù)尺寸變得十分困難。但是,如果不獲取從緩沖區(qū)流入到底層硬件緩沖的媒體流的數(shù)據(jù)尺寸,就會存在一定的數(shù)據(jù)尺寸誤差,會導(dǎo)致當(dāng)媒體流的實際數(shù)據(jù)尺寸未低于下水線時,緩沖區(qū)因未考慮到底層硬件緩沖而誤認為當(dāng)前媒體流的數(shù)據(jù)尺寸已低于下水線,從而過早的停止對媒體流的播放。
發(fā)明內(nèi)容
本發(fā)明實施例所要解決的技術(shù)問題在于,提供一種緩沖區(qū)中媒體流的管理方法及裝置,可以減小底層硬件緩沖所造成的誤差。為了解決上述技術(shù)問題,本發(fā)明實施例提供了一種緩沖區(qū)中媒體流的管理方法,包括
對媒體流進行解復(fù)用,得到對應(yīng)的數(shù)據(jù)流,所述數(shù)據(jù)流包括音頻數(shù)據(jù)流和視頻數(shù)據(jù)
流;
獲取每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長信息;
當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的下限值時,停止播放所述數(shù)據(jù)流;
當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的下限值時,繼續(xù)播放所述數(shù)據(jù)流。其中,所述獲取緩沖區(qū)內(nèi)的每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長信息包括
獲取緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的首尾時間戳信息;
通過計算所述獲取的首尾時間戳的差值,確定每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長。
其中,所述獲取緩沖區(qū)內(nèi)的每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長信息之后還包括
當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的上限值時,播放所述數(shù)據(jù)流;
當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的上限值時,繼續(xù)緩沖所述數(shù)據(jù)流。其中,所述方法還包括
當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的下限值時,判斷所述媒體流是否結(jié)束,若是,則播放完殘留在緩沖區(qū)的數(shù)據(jù)流;若否,則停止播放數(shù)據(jù)流。其中,所述方法還包括當(dāng)接收到用戶的播放控制指示時,根據(jù)所述播放控制指示在緩沖區(qū)定位出用戶所需要訪問的關(guān)鍵幀,并對所述關(guān)鍵幀進行解碼,得到用戶所需訪問的信息,其中所述播放控制指示包括在緩沖區(qū)查看快照指示、快進指示、快退指示中的任一項。 相應(yīng)地,本發(fā)明實施例還提供了一種緩沖區(qū)中媒體流的管理裝置,包括
解復(fù)用模塊,用于對媒體流進行解復(fù)用,得到對應(yīng)地數(shù)據(jù)流,所述數(shù)據(jù)流包括音頻數(shù)據(jù)流和視頻數(shù)據(jù)流;
時長信息獲取模塊,用于獲取緩沖區(qū)內(nèi)的每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長信息;
第一控制模塊,用于當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的下限值時,停止播放所述數(shù)據(jù)流;當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的下限值時,繼續(xù)播放所述數(shù)據(jù)流。其中,所述時長信息獲取模塊包括
時間戳獲取單元,用于獲取緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的首尾時間戳信息;
時長確定單元,用于通過計算所述獲取的首尾時間戳的差值,確定每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長。其中,所述裝置還包括
第二控制模塊,用于當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的上限值時,播放所述數(shù)據(jù)流;當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的上限值時,繼續(xù)緩沖所述數(shù)據(jù)流。其中,所述裝置還包括
判斷模塊,用于當(dāng)緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于下限值時,判斷所述媒體流是否結(jié)束,若是,則播放完殘留在緩沖區(qū)的數(shù)據(jù)流;若否,則停止播放數(shù)據(jù)流。其中,所述裝置還包括
關(guān)鍵幀提取模塊,用于當(dāng)接收到用戶的播放控制指示時,根據(jù)所述播放控制指示在緩沖區(qū)定位出用戶所需要訪問的關(guān)鍵幀,并對所述關(guān)鍵幀進行解碼,得到用戶所需訪問的信息,其中所述播放控制指示包括在緩沖區(qū)查看快照指示、快進指示、快退指示中的任一項。實施本發(fā)明實施例,具有如下有益效果
本發(fā)明的實施例將緩沖區(qū)內(nèi)通過解復(fù)用得到的每一路的音頻數(shù)據(jù)流和每一路的視頻數(shù)據(jù)流的時長以及預(yù)設(shè)的下限值進行比較,確定是否播放或者停止播放相應(yīng)的媒體數(shù)據(jù),較大程度地避免由于數(shù)據(jù)尺寸誤差所導(dǎo)致的過早停止播放相應(yīng)的媒體數(shù)據(jù)的問題,更好地實現(xiàn)了緩沖區(qū)中媒體流的管理,提高了用戶的使用體驗。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是本發(fā)明的緩沖區(qū)中媒體流的管理方法的第一實施例的流程示意 圖2是本發(fā)明的緩沖區(qū)中媒體流的管理方法的第二實施例流程示意 圖3是本發(fā)明的緩沖區(qū)中媒體流的管理方法的第三實施例流程示意 圖4是本發(fā)明的緩沖區(qū)中媒體流的管理裝置的第一實施例的結(jié)構(gòu)示意 圖5是圖4所示的關(guān)鍵幀提取模塊的實施例的結(jié)構(gòu)示意 圖6是本發(fā)明的緩沖區(qū)中媒體流的管理裝置的第二實施例的結(jié)構(gòu)示意 圖7是本發(fā)明的緩沖區(qū)中媒體流的管理裝置的第三實施例的結(jié)構(gòu)示意圖。
具體實施例方式下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。請參照圖1,是本發(fā)明的緩沖區(qū)中媒體流的管理方法的第一實施例的流程示意圖。所述管理方法包括
步驟S11,對媒體流進行解復(fù)用,得到對應(yīng)數(shù)據(jù)流,其中數(shù)據(jù)流包括音頻數(shù)據(jù)流和視頻數(shù)據(jù)流。步驟S12,獲取緩沖區(qū)內(nèi)的每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長信息。從解復(fù)用得到的數(shù)據(jù)流中可以獲取時間戳信息,時間戳包括PTS (PresentationTime Stamp,顯示時間標(biāo)簽)和DTS (Decoding Time Stamp,解碼時間標(biāo)簽)。音頻數(shù)據(jù)流的PTS和DTS是一樣的,所以可以通過計算緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流的首尾PTS或DTS的差值,來確定每一路音頻數(shù)據(jù)流的時長。視頻數(shù)據(jù)流的DTS是連續(xù)的(PTS在一些情況下如在有前后參考的B幀時是不連續(xù)的,因此視頻數(shù)據(jù)流的首尾時間戳的差值最好是通過DTS來獲取),所以可以通過計算緩沖區(qū)內(nèi)每一路視頻數(shù)據(jù)流的首尾DTS的差值,來確定每一路視頻數(shù)據(jù)流的時長。步驟S13,當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的下限值時,停止播放數(shù)據(jù)流。步驟S14,當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的下限值時,繼續(xù)播放數(shù)據(jù)流。由于音視頻數(shù)據(jù)流的格式不同,同樣時長的音頻數(shù)據(jù)和視頻數(shù)據(jù),音頻數(shù)據(jù)尺寸小,視頻數(shù)據(jù)尺寸大。當(dāng)媒體流從緩沖區(qū)流入到底層硬件緩沖時,通常會出現(xiàn)的情況是,更多的音頻數(shù)據(jù)進入了底層硬件緩沖,留在緩沖區(qū)內(nèi)的視頻數(shù)據(jù)的時長遠大于音頻數(shù)據(jù)的時長。本發(fā)明的實施例將緩沖區(qū)內(nèi)每一路的音頻數(shù)據(jù)流和每一路的視頻數(shù)據(jù)流的時長與下限值進行比較,只有當(dāng)所有的音頻數(shù)據(jù)流和視頻數(shù)據(jù)流的時長均低于下限值時,才會停止播放數(shù)據(jù)流,這就使得當(dāng)緩沖區(qū)內(nèi)的音頻數(shù)據(jù)流較少時,只要視頻數(shù)據(jù)流的時長不低于下限值就不會停止對數(shù)據(jù)流的播放,減少了底層硬件緩沖所帶來的誤差。請參照圖2,是本發(fā)明的緩沖區(qū)中媒體流的管理方法的 第二實施例的流程示意圖。所述方法包括
步驟S21,對媒體流進行解復(fù)用,得到對應(yīng)數(shù)據(jù)流,其中,數(shù)據(jù)流包括音頻數(shù)據(jù)流和視頻數(shù)據(jù)流。。步驟S22,獲取緩沖區(qū)內(nèi)每一路視頻數(shù)據(jù)流及每一路音頻數(shù)據(jù)流的時長信息。獲取緩沖區(qū)內(nèi)每一路視頻數(shù)據(jù)流及每一路音頻數(shù)據(jù)流的時長信息包括以下兩個步驟
步驟A,獲取緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的首尾時間戳信息。步驟B,通過計算獲取的首尾時間戳的差值,確定每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長。從解復(fù)用得到的數(shù)據(jù)流中可以獲取時間戳信息,時間戳包括PTS和DTS。音頻數(shù)據(jù)流的PTS和DTS是一樣的,所以可以利用PTS或DTS來計算時長,但視頻數(shù)據(jù)流的PTS在一般情況下是不連續(xù)的,所以采用DTS來計算時長。步驟S23,當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的下限值時,繼續(xù)播放數(shù)據(jù)流。步驟S24,當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的下限值時,進入步驟S27 ;
步驟S25,當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的上限值時,播放數(shù)據(jù)流。步驟S26,當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的上限值時,繼續(xù)緩沖數(shù)據(jù)流。步驟S27,判斷原始媒體流是否結(jié)束,若判斷結(jié)果為是,則播放完殘留在緩沖區(qū)的數(shù)據(jù)流,若判斷結(jié)果為否,則緩沖數(shù)據(jù)流。當(dāng)緩沖區(qū)確定原始媒體流結(jié)束時,無論當(dāng)前數(shù)據(jù)流的時長是否低于下限值,都需播放完緩沖區(qū)內(nèi)殘留的數(shù)據(jù)流。與音視頻數(shù)據(jù)流不同,字幕流是單獨處理的,不將其拿來與上限值和下限值作比較,這是因為字幕流是一種特殊的流,并不是像音視頻流一樣是連續(xù)的流,有可能會存在間隔很長時間才出現(xiàn)一個字幕的情況。由于音視頻數(shù)據(jù)流的格式不同,同樣時長的音頻數(shù)據(jù)流和視頻數(shù)據(jù)流,音頻數(shù)據(jù)流數(shù)據(jù)尺寸小,視頻數(shù)據(jù)流數(shù)據(jù)尺寸大。當(dāng)媒體流從緩沖區(qū)流入到底層硬件緩沖時,通常會出現(xiàn)的情況是,更多的音頻數(shù)據(jù)流進入了底層硬件緩沖,留在緩沖區(qū)內(nèi)的視頻數(shù)據(jù)流的時長遠大于音頻數(shù)據(jù)流的時長。本發(fā)明的實施例將緩沖區(qū)內(nèi)每一路的音頻數(shù)據(jù)流和每一路的視頻數(shù)據(jù)流的時長與下限值進行比較,只有當(dāng)所有的音頻數(shù)據(jù)流和視頻數(shù)據(jù)流的時長均低于下限值時,才停止播放媒體流,這就使得當(dāng)緩沖區(qū)內(nèi)的音頻數(shù)據(jù)流較少時,只要視頻數(shù)據(jù)流的時長不低于下限值就不會停止對媒體流的播放。本發(fā)明的實施例還將緩沖區(qū)內(nèi)每一路的音頻數(shù)據(jù)流和每一路的視頻數(shù)據(jù)流的時長與上限值進行比較,只要任一路的音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于上限值時,就會繼續(xù)播放數(shù)據(jù)流,這就使得當(dāng)緩沖區(qū)內(nèi)的音頻數(shù)據(jù)流較少時,只要視頻數(shù)據(jù)流的時長高于上限值就能繼續(xù)對數(shù)據(jù)流進行播放。相較于現(xiàn)有技術(shù)中因未考慮底層硬件緩沖,而低估緩沖區(qū)內(nèi)的媒體流的當(dāng)前數(shù)據(jù)尺寸,最終導(dǎo)致緩沖區(qū)在將媒體流的數(shù)據(jù)尺寸與下水線進行比較時,過早的停止播放媒體流,以及將媒體流的數(shù)據(jù)尺寸與上水線進行比較時,過晚的開始播放媒體流而言,本發(fā)明的實施例在很大程度上緩解了底層硬件緩沖所帶來的影響,減小了誤差。請參照圖3,是本發(fā)明的緩沖區(qū)中媒體流的管理方法的第三實施例流程示意圖。所述管理方法包括
步驟S31,對媒體流進行解復(fù)用,得到對應(yīng)數(shù)據(jù)流,其中,數(shù)據(jù)流包括音頻數(shù)據(jù)流和視頻數(shù)據(jù)流。。步驟S32,獲取緩沖區(qū)內(nèi)每一路視頻數(shù)據(jù)流及每一路音頻數(shù)據(jù)流的時長信息。獲取緩沖區(qū)內(nèi)每一路視頻數(shù)據(jù)流及每一路音頻數(shù)據(jù)流的時長信息包括以下兩個步驟
步驟A,獲取緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的首尾時間戳信息。步驟B,通過計算獲取的首尾時間戳的差值,確定每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長。從解復(fù)用得到的數(shù)據(jù)流中可以獲取時間戳信息,時間戳包括PTS和DTS。音頻數(shù)據(jù)流的PTS和DTS是一樣的,所以可以利用PTS或DTS來計算時長,但視頻數(shù)據(jù)流的PTS在一些情況下是不連續(xù)的,所以采用DTS來計算時長。步驟S33,當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的下限值時,進入步驟S38。步驟S34,當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的下限值時,繼續(xù)播放數(shù)據(jù)流。步驟S35,當(dāng)接收到用戶的播放控制指示時,根據(jù)播放控制指示在緩沖區(qū)定位出用戶所需要訪問的關(guān)鍵幀,并對關(guān)鍵幀進行解碼,得到用戶所需訪問的信息,其中播放控制指示包括在緩沖區(qū)查看快照指示、快進指示、快退指示中的任一項。在緩沖區(qū)內(nèi)實現(xiàn)查看快照,快進快退等操作,都需要獲取關(guān)鍵幀信息,但這些關(guān)鍵幀的信息在媒體流中是無法獲取的,只能對媒體流進行解復(fù)用后才能得到。由于音視頻數(shù)據(jù)的格式不同,同樣時長的音頻數(shù)據(jù)和視頻數(shù)據(jù),音頻數(shù)據(jù)尺寸小,視頻數(shù)據(jù)尺寸大。當(dāng)媒體流從緩沖區(qū)流入到底層硬件緩沖時,通常會出現(xiàn)的情況是,更多的音頻數(shù)據(jù)進入了底層硬件緩沖,留在緩沖區(qū)內(nèi)的視頻數(shù)據(jù)的時長遠大于音頻數(shù)據(jù)的時長。本發(fā)明的實施例將緩沖區(qū)內(nèi)每一路的音頻數(shù)據(jù)流和每一路的視頻數(shù)據(jù)流的時長與下限值進行比較,只有當(dāng)所有的音頻數(shù)據(jù)流和視頻數(shù)據(jù)流的時長均低于下限值時,才會停止播放數(shù)據(jù)流,這就使得當(dāng)緩沖區(qū)內(nèi)的音頻數(shù)據(jù)流較少時,只要視頻數(shù)據(jù)流的時長不低于下限值就不會停止對數(shù)據(jù)流的播放,減少了底層硬件緩沖所帶來的誤差。圖I至圖3對本發(fā)明實施例的數(shù)字電視搜索節(jié)目的方法進行了詳細的闡述,其執(zhí)行的主體可以是諸如機頂盒、數(shù)字電視一體機和手機電視等數(shù)字電視接收終端。上述對管理緩沖區(qū)的方法的實施例進行了詳細闡述后,下面將繼續(xù)結(jié)合附圖,對相應(yīng)于上述方法流程的裝置進行說明請參照圖4,是本發(fā)明的緩沖區(qū)中媒體流的管理裝置的第一實施例的結(jié)構(gòu)示意圖。所述管理裝置100包括
解復(fù)用模塊110,用于在媒體流進入緩沖區(qū)前,對媒體流進行解復(fù)用,得到數(shù)據(jù)流,所述數(shù)據(jù)流包括音頻數(shù)據(jù)流和視頻數(shù)據(jù)流。時長信息獲取模塊120,用于獲取緩沖區(qū)內(nèi)的每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長信息。從解復(fù)用得到的數(shù)據(jù)流中可以獲取時間戳信息,時間戳包括PTS和DTS。音頻數(shù)據(jù)流的PTS和DTS是一樣的,所以可以通過計算緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流的首尾PTS或DTS的差值,來確定每一路音頻數(shù)據(jù)流的時長。視頻數(shù)據(jù)流的DTS是連續(xù)的(PTS在一些情況如在有前后參考的B幀時是不連續(xù)的,因此視頻數(shù)據(jù)流的首尾時間戳的差值最好是通過DTS來獲取),所以可以通過計算緩沖區(qū)內(nèi)每一路視頻數(shù)據(jù)流的首尾DTS的差值,來確定每一路視頻數(shù)據(jù)流的時長。第一控制模塊130,用于當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的下限值時,停止播放數(shù)據(jù)流;當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的下限值時,繼續(xù)播放數(shù)據(jù)流。由于音視頻數(shù)據(jù)流的格式不同,同樣時長的音頻數(shù)據(jù)和視頻數(shù)據(jù),音頻數(shù)據(jù)尺寸小,視頻數(shù)據(jù)尺寸大。當(dāng)媒體流從緩沖區(qū)流入到底層硬件緩沖時,通常會出現(xiàn)的情況是,更多的音頻數(shù)據(jù)進入了底層硬件緩沖,留在緩沖區(qū)內(nèi)的視頻數(shù)據(jù)的時長遠大于音頻數(shù)據(jù)的時長。本發(fā)明的實施例將緩沖區(qū)內(nèi)每一路的音頻數(shù)據(jù)流和每一路的視頻數(shù)據(jù)流的時長與下限值進行比較,只有當(dāng)所有的音頻數(shù)據(jù)流和視頻數(shù)據(jù)流的時長均低于下限值時,才會停止播放數(shù)據(jù)流,這就使得當(dāng)緩沖區(qū)內(nèi)的音頻數(shù)據(jù)流較少時,只要視頻數(shù)據(jù)流的時長不低于下限值就不會停止對數(shù)據(jù)流的播放,減少了底層硬件緩沖所帶來的誤差。請參照圖5,是圖4所示的時長信息獲取模塊的實施例的結(jié)構(gòu)示意圖。所述時長信息獲取模塊120包括
時間戳獲取單元121,用于獲取緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的首尾時間戳信息;
時長確定單元122,用于通過計算獲取的首尾時間戳的差值,確定每一路音視流及每一路視頻數(shù)據(jù)流的時長。從解復(fù)用得到的數(shù)據(jù)流中可以獲取時間戳信息,時間戳包括PTS和DTS。音頻數(shù)據(jù)流的PTS和DTS是一樣的,所以可以通過計算緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流的首尾PTS或DTS的差值,來確定每一路音頻數(shù)據(jù)流的時長。視頻數(shù)據(jù)流的DTS是連續(xù)的,所以可以通過計算緩沖區(qū)內(nèi)每一路視頻數(shù)據(jù)流的首尾DTS的差值,來確定每一路視頻數(shù)據(jù)流的時長。請參照圖6,是本發(fā)明本發(fā)明的緩沖區(qū)中媒體流的管理裝置的第二實施例的結(jié)構(gòu)示意圖。所述管理裝置100包括解復(fù)用模塊110,用于在媒體流進入緩沖區(qū)前,對媒體流進行解復(fù)用,得到數(shù)據(jù)流,所述數(shù)據(jù)流包括音頻數(shù)據(jù)流和視頻數(shù)據(jù)流。時長信息獲取模塊120,用于獲取緩沖區(qū)內(nèi)的每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長信息。從解復(fù)用得到的數(shù)據(jù)流中可以獲取時間戳信息,時間戳包括PTS和DTS。音頻數(shù)據(jù)流的PTS和DTS是一樣的,所以可以通過計算緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流的首尾PTS或DTS的差值,來確定每一路音頻數(shù)據(jù)流的時長。視頻數(shù)據(jù)流的DTS是連續(xù)的,所以可以通過計算緩沖區(qū)內(nèi)每一路視頻數(shù)據(jù)流的首尾DTS的差值,來確定每一路視頻數(shù)據(jù)流的時長。
第一控制模塊130,用于當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的下限值時,緩沖數(shù)據(jù)流;當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的下限值時,繼續(xù)播放數(shù)據(jù)流。第二控制模塊140,用于當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的上限值時,播放數(shù)據(jù)流;當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的上限值時,繼續(xù)緩沖數(shù)據(jù)流。判斷模塊150,用于當(dāng)緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于下限值時,判斷所述媒體流是否結(jié)束,若是,則播放完殘留在緩沖區(qū)的數(shù)據(jù)流;若否,則停止播放數(shù)據(jù)流。當(dāng)緩沖區(qū)確定原始媒體流數(shù)據(jù)結(jié)束時,此時無論當(dāng)前數(shù)據(jù)流的時長是否低于下限值,都需播放完緩沖區(qū)內(nèi)殘留的數(shù)據(jù)流。本發(fā)明實施例在緩沖區(qū)內(nèi)為每一路視頻數(shù)據(jù)流及每一路音頻數(shù)據(jù)流都維護一個隊列,用于保存解復(fù)用之后的音視頻數(shù)據(jù)流。與音視頻數(shù)據(jù)流不同的,字幕流是單獨處理的,不將其拿來與上限值和下限值作比較,這是因為字幕流是一種特殊的流,并不是像音視頻流一樣是連續(xù)的流,有可能會存在間隔很長時間才出現(xiàn)一個字幕的情況。由于音視頻數(shù)據(jù)流的格式不同,同樣時長的音頻數(shù)據(jù)流和視頻數(shù)據(jù)流,音頻數(shù)據(jù)流數(shù)據(jù)尺寸小,視頻數(shù)據(jù)流數(shù)據(jù)尺寸大。當(dāng)媒體流從緩沖區(qū)流入到底層硬件緩沖時,通常會出現(xiàn)的情況是,更多的音頻數(shù)據(jù)流進入了底層硬件緩沖,留在緩沖區(qū)內(nèi)的視頻數(shù)據(jù)流的時長遠大于音頻數(shù)據(jù)流的時長。本發(fā)明的實施例將緩沖區(qū)內(nèi)每一路的音頻數(shù)據(jù)流和每一路的視頻數(shù)據(jù)流的時長與下限值進行比較,只有當(dāng)所有的音頻數(shù)據(jù)流和視頻數(shù)據(jù)流的時長均低于下限值時,才停止播放數(shù)據(jù)流,這就使得當(dāng)緩沖區(qū)內(nèi)的音頻數(shù)據(jù)流較少時,只要視頻數(shù)據(jù)流的時長不低于下限值就不會停止對數(shù)據(jù)流的播放。本發(fā)明的實施例還將緩沖區(qū)內(nèi)每一路的音頻數(shù)據(jù)流和每一路的視頻數(shù)據(jù)流的時長與上限值進行比較,只要任一路的音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于上限值時,就會繼續(xù)播放數(shù)據(jù)流,這就使得當(dāng)緩沖區(qū)內(nèi)的音頻數(shù)據(jù)流較少時,只要視頻數(shù)據(jù)流的時長高于上限值就能繼續(xù)對數(shù)據(jù)流進行播放。相較于現(xiàn)有技術(shù)中因未考慮底層硬件緩沖,而低估緩沖區(qū)內(nèi)的媒體流的當(dāng)前數(shù)據(jù)尺寸,最終導(dǎo)致緩沖區(qū)在將媒體流的數(shù)據(jù)尺寸與下水線進行比較時,過早的停止播放媒體流,以及將媒體流的數(shù)據(jù)尺寸與上水線進行比較時,過晚的開始播放媒體流而言,本發(fā)明的實施例在很大程度上緩解了底層硬件緩沖所帶來的影響,減小了誤差。
請參照圖7,是本發(fā)明本發(fā)明的緩沖區(qū)中媒體流管理裝置的第三實施例的結(jié)構(gòu)示意圖。所述管理裝置100包括
解復(fù)用模塊110,用于在媒體流進入緩沖區(qū)前,對媒體流進行解復(fù)用,得到數(shù)據(jù)流,所述數(shù)據(jù)流包括音頻數(shù)據(jù)流和視頻數(shù)據(jù)流。時長信息獲取模塊120,用于獲取緩沖區(qū)內(nèi)的每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長信息。從解復(fù)用得到的數(shù)據(jù)流中可以獲取時間戳信息,時間戳包括PTS和DTS。音頻數(shù)據(jù)流的PTS和DTS是一樣的,所以可以通過計算緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流的首尾PTS或DTS的差值,來確定每一路音頻數(shù)據(jù)流的時長。視頻數(shù)據(jù)流的DTS是連續(xù)的(PTS在一些情況下如在有前后參考的B幀時,是不連續(xù)的,因此視頻數(shù)據(jù)流的首尾時間戳的差值最好是通過DTS來獲取),所以可以通過計算緩沖區(qū)內(nèi)每一路視頻數(shù)據(jù)流的首尾DTS的差值,來確定每一路視頻數(shù)據(jù)流的時長。第一控制模塊130,用于當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的下限值時,緩沖數(shù)據(jù)流;當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的下限值時,繼續(xù)播放數(shù)據(jù)流。關(guān)鍵幀提取模塊160,用于當(dāng)接收到用戶的播放控制指示時,根據(jù)播放控制指示在緩沖區(qū)定位出用戶所需要訪問的關(guān)鍵幀,并對關(guān)鍵幀進行解碼,得到用戶所需訪問的信息,其中播放控制指示包括在緩沖區(qū)查看快照指示、快進指示、快退指示中的任一項。在緩沖區(qū)內(nèi)實現(xiàn)查看快照,快進快退等操作,都需要獲取關(guān)鍵幀信息,但這些關(guān)鍵幀的信息在媒體流中是無法獲取的,只能對媒體流進行解復(fù)用后才能得到。由于音視頻數(shù)據(jù)的格式不同,同樣時長的音頻數(shù)據(jù)和視頻數(shù)據(jù),音頻數(shù)據(jù)尺寸小,視頻數(shù)據(jù)尺寸大。當(dāng)媒體流從緩沖區(qū)流入到底層硬件緩沖時,通常會出現(xiàn)的情況是,更多的音頻數(shù)據(jù)進入了底層硬件緩沖,留在緩沖區(qū)內(nèi)的視頻數(shù)據(jù)的時長遠大于音頻數(shù)據(jù)的時長。本發(fā)明的實施例將緩沖區(qū)內(nèi)每一路的音頻數(shù)據(jù)流和每一路的視頻數(shù)據(jù)流的時長與下限值進行比較,只有當(dāng)所有的音頻數(shù)據(jù)流和視頻數(shù)據(jù)流的時長均低于下限值時,才會停止播放數(shù)據(jù)流,這就使得當(dāng)緩沖區(qū)內(nèi)的音頻數(shù)據(jù)流較少時,只要視頻數(shù)據(jù)流的時長不低于下限值就不會停止對數(shù)據(jù)流的播放,減少了底層硬件緩沖所帶來的誤差。本發(fā)明在圖4至圖7所述的緩沖區(qū)管理裝置可以由諸如機頂盒、數(shù)字電視一體機和手機電視等數(shù)字電視接收終端來實現(xiàn)。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random AccessMemory, RAM)等。以上所揭露的僅為本發(fā)明一種較佳實施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。
權(quán)利要求
1.一種緩沖區(qū)中媒體流的管理方法,其特征在于,包括 對媒體流進行解復(fù)用,得到對應(yīng)的數(shù)據(jù)流,所述數(shù)據(jù)流包括音頻數(shù)據(jù)流和視頻數(shù)據(jù)流; 獲取每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長信息; 當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的下限值時,停止播放所述數(shù)據(jù)流; 當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的下限值時,繼續(xù)播放所述數(shù)據(jù)流。
2.如權(quán)利要求I所述的方法,其特征在于,所述獲取緩沖區(qū)內(nèi)的每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長信息包括 獲取緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的首尾時間戳信息; 通過計算所述獲取的首尾時間戳的差值,確定每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長。
3.如權(quán)利要求I或2所述的方法,其特征在于,所述獲取緩沖區(qū)內(nèi)的每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長信息之后還包括 當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的上限值時,播放所述數(shù)據(jù)流; 當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的上限值時,繼續(xù)緩沖所述數(shù)據(jù)流。
4.如權(quán)利要求I或2所述的方法,其特征在于,所述方法還包括 當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的下限值時,判斷所述媒體流是否結(jié)束,若是,則播放完殘留在緩沖區(qū)的數(shù)據(jù)流;若否,則停止播放數(shù)據(jù)流。
5.如權(quán)利要求I所述的方法,其特征在于,所述方法還包括當(dāng)接收到用戶的播放控制指示時,根據(jù)所述播放控制指示在緩沖區(qū)定位出用戶所需要訪問的關(guān)鍵幀,并對所述關(guān)鍵幀進行解碼,得到用戶所需訪問的信息,其中所述播放控制指示包括在緩沖區(qū)查看快照指示、快進指示、快退指示中的任一項。
6.一種緩沖區(qū)中媒體流的管理裝置,其特征在于,包括 解復(fù)用模塊,用于對媒體流進行解復(fù)用,得到對應(yīng)地數(shù)據(jù)流,所述數(shù)據(jù)流包括音頻數(shù)據(jù)流和視頻數(shù)據(jù)流; 時長信息獲取模塊,用于獲取緩沖區(qū)內(nèi)的每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長信息; 第一控制模塊,用于當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的下限值時,停止播放所述數(shù)據(jù)流;當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的下限值時,繼續(xù)播放所述數(shù)據(jù)流。
7.如權(quán)利要求6所述的裝置,其特征在于,所述時長信息獲取模塊包括 時間戳獲取單元,用于獲取緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的首尾時間戳信息; 時長確定單元,用于通過計算所述獲取的首尾時間戳的差值,確定每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長。
8.如權(quán)利要求6或7所述的裝置,其特征在于,所述裝置還包括 第二控制模塊,用于當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的上限值時,播放所述數(shù)據(jù)流;當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的上限值時,繼續(xù)緩沖所述數(shù)據(jù)流。
9.如權(quán)利要求6或7所述的裝置,其特征在于,所述裝置還包括 判斷模塊,用于當(dāng)緩沖區(qū)內(nèi)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于下限值時,判斷所述媒體流是否結(jié)束,若是,則播放完殘留在緩沖區(qū)的數(shù)據(jù)流;若否,則停止播放數(shù)據(jù)流。
10.如權(quán)利要求6所述的裝置,其特征在于,所述裝置還包括 關(guān)鍵幀提取模塊,用于當(dāng)接收到用戶的播放控制指示時,根據(jù)所述播放控制指示在緩沖區(qū)定位出用戶所需要訪問的關(guān)鍵幀,并對所述關(guān)鍵幀進行解碼,得到用戶所需訪問的信息,其中所述播放控制指示包括在緩沖區(qū)查看快照指示、快進指示、快退指示中的任一項。
全文摘要
本發(fā)明實施例公開了一種緩沖區(qū)中媒體流的管理方法,包括對媒體流進行解復(fù)用,得到對應(yīng)的數(shù)據(jù)流,數(shù)據(jù)流包括音頻數(shù)據(jù)流和視頻數(shù)據(jù)流;獲取每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長信息;當(dāng)每一路音頻數(shù)據(jù)流及每一路視頻數(shù)據(jù)流的時長均低于預(yù)設(shè)的下限值時,停止播放所述數(shù)據(jù)流;當(dāng)至少有一路音頻數(shù)據(jù)流或視頻數(shù)據(jù)流的時長高于預(yù)設(shè)的下限值時,繼續(xù)播放所述數(shù)據(jù)流。本發(fā)明還提供了一種緩沖區(qū)中媒體流的管理裝置。采用本發(fā)明,可以減小底層硬件緩沖所帶來的誤差,提高用戶體驗。
文檔編號H04N21/462GK102630058SQ20121007968
公開日2012年8月8日 申請日期2012年3月23日 優(yōu)先權(quán)日2012年3月23日
發(fā)明者李昌盛, 黃雙彩 申請人:深圳創(chuàng)維數(shù)字技術(shù)股份有限公司, 深圳市創(chuàng)維軟件有限公司