两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

播放多媒體文件的方法及裝置與流程

文檔序號:11880911閱讀:335來源:國知局
播放多媒體文件的方法及裝置與流程

本發(fā)明涉及信息技術(shù)領(lǐng)域,尤其涉及一種播放多媒體文件的方法及裝置。



背景技術(shù):

多媒體文件的封裝格式包括MP4、MOV、FLV、AVI、MKV和RMVB等。這些封裝格式標(biāo)記了多媒體文件使用的封裝協(xié)議,以便應(yīng)用層使用對應(yīng)的解復(fù)用器對該多媒體文件的音視頻進(jìn)行分離。不同的封裝協(xié)議采用不同的參數(shù)標(biāo)準(zhǔn),例如HeaderSlice、HeaderInfo或HeaderIndex等,這些參數(shù)可以用于解析多媒體文件的基本信息,例如是否存在音頻及字幕、該文件的軌道信息等。這些基本信息可以用于初始化解復(fù)用器的相關(guān)參數(shù),由此使播放器能通過解復(fù)用器正確分離音視頻數(shù)據(jù),從而供解碼模塊進(jìn)行解碼處理。

多媒體文件的編碼格式是針對解復(fù)用器拆分出的音視頻數(shù)據(jù)而存在的重要參數(shù)。目前,大多數(shù)視頻采用H264進(jìn)行編碼,大多數(shù)音頻采用AAC(Advanced Audio Coding,高級音頻編碼)進(jìn)行編碼。每一種編碼方法都有其特定的協(xié)議用于解析額外數(shù)據(jù)(extradata)。視頻數(shù)據(jù)的額外數(shù)據(jù)中包含多個NALU(Network Abstract Layer Unit,網(wǎng)絡(luò)抽象層單元)字段,在視頻數(shù)據(jù)的NALU字段中,根據(jù)其編碼協(xié)議,存儲SPS(Sequence Parameter Set,序列參數(shù)集)、PPS(Picture Parameter Set,圖像參數(shù)集)和IDR(Instantaneous Decoding Refresh,即時解碼刷新)等信息。SPS、PPS和IDR是視頻解碼的重要參數(shù)。音頻數(shù)據(jù)的額外數(shù)據(jù)中也包括NALU字段,在音頻數(shù)據(jù)的NALU字段中,可以包含esds字段等重要的音頻參數(shù)。SPS和PPS等信息可以幫助解碼器獲取AVCProfileIndication(Advanced Video Coding Profile Indication,高級視頻編碼配置文件指示)和音頻采樣率等信息。當(dāng)且僅當(dāng)解碼器正確收集以上相關(guān)信息后,方可進(jìn)行多媒體文件的解碼及渲染。

播放器的性能高低一般根據(jù)播放器播放視頻占用的系統(tǒng)內(nèi)存、播放器播放視頻的功耗以及播放器播放視頻的丟包率來評判。播放器的播放流程包括讀取多媒體文件、解復(fù)用、解碼和渲染等步驟?,F(xiàn)有技術(shù)中,解復(fù)用和解碼通過軟件層完成。在播放器架構(gòu)中,解碼模塊是耗時最大、占用系統(tǒng)內(nèi)存最大的模塊。其原因在于,在解碼階段需要采用大量算法對H264數(shù)據(jù)進(jìn)行解壓縮,從而占用大量的系統(tǒng)內(nèi)存和CPU(Central Processing Unit,中央處理器)等資源,導(dǎo)致對設(shè)備產(chǎn)生了較高的負(fù)載。軟件層的資源消耗無可避免地造成了設(shè)備的功耗增加。由于現(xiàn)有的播放器的應(yīng)用場景多為移動設(shè)備,而移動設(shè)備的電池續(xù)航能力有限,因此高功耗的播放器將大大減少移動設(shè)備的續(xù)航時間。此外,由于終端設(shè)備的性能參差不齊,當(dāng)播放器播放清晰度較高的視頻時,一些性能較低的終端設(shè)備在播放過程中容易出現(xiàn)卡頓現(xiàn)象或者APP(Application,應(yīng)用)無響應(yīng)等現(xiàn)象,從而影響用戶體驗(yàn)。



技術(shù)實(shí)現(xiàn)要素:

技術(shù)問題

有鑒于此,本發(fā)明要解決的技術(shù)問題是,現(xiàn)有技術(shù)在播放多媒體文件時,采用軟件解碼的方式對多媒體文件進(jìn)行解碼,導(dǎo)致解碼過程占用大量的系統(tǒng)內(nèi)存和CPU資源,耗時較大,且在播放過程中容易出現(xiàn)卡頓現(xiàn)象或者應(yīng)用無響應(yīng)的現(xiàn)象。

解決方案

為了解決上述技術(shù)問題,根據(jù)本發(fā)明的一實(shí)施例,提供了一種播放多媒體文件的方法,包括:

獲取待播放的多媒體文件;

對所述多媒體文件進(jìn)行解復(fù)用,得到所述多媒體文件對應(yīng)的解復(fù)用數(shù)據(jù)以及所述解復(fù)用數(shù)據(jù)的格式信息;

根據(jù)所述解復(fù)用數(shù)據(jù)的格式信息初始化硬件解碼器;

采用所述硬件解碼器對所述解復(fù)用數(shù)據(jù)進(jìn)行解碼,得到所述解復(fù)用數(shù)據(jù)對應(yīng)的解碼數(shù)據(jù);

采用硬件渲染器對所述解碼數(shù)據(jù)進(jìn)行渲染。

對于上述方法,在一種可能的實(shí)現(xiàn)方式中,所述方法基于MediaCodec框架。

對于上述方法,在一種可能的實(shí)現(xiàn)方式中,采用所述硬件解碼器對所述解復(fù)用數(shù)據(jù)進(jìn)行解碼,得到所述解復(fù)用數(shù)據(jù)對應(yīng)的解碼數(shù)據(jù),包括:

采用所述硬件解碼器對所述解復(fù)用數(shù)據(jù)中的待解碼幀進(jìn)行解碼,得到所述待解碼幀對應(yīng)的幀解碼數(shù)據(jù)。

對于上述方法,在一種可能的實(shí)現(xiàn)方式中,在采用所述硬件解碼器對所述解復(fù)用數(shù)據(jù)中的待解碼幀進(jìn)行解碼之前,所述方法還包括:將所述待解碼幀的時間戳發(fā)送至所述硬件解碼器;

在得到所述待解碼幀對應(yīng)的幀解碼數(shù)據(jù)之后,所述方法還包括:接收所述硬件解碼器返回的所述幀解碼數(shù)據(jù)的時間戳和所述時間戳的序號,其中,所述幀解碼數(shù)據(jù)的時間戳與所述待解碼幀的時間戳相同。

對于上述方法,在一種可能的實(shí)現(xiàn)方式中,采用硬件渲染器對所述解碼數(shù)據(jù)進(jìn)行渲染,包括:

采用所述硬件渲染器根據(jù)所述幀解碼數(shù)據(jù)的時間戳和所述時間戳的序號對所述幀解碼數(shù)據(jù)進(jìn)行渲染。

對于上述方法,在一種可能的實(shí)現(xiàn)方式中,根據(jù)所述解復(fù)用數(shù)據(jù)的格式信息初始化硬件解碼器,具體為:

采用Java本地接口,通過對象與MediaCodec框架進(jìn)行交互,根據(jù)所述解復(fù)用數(shù)據(jù)的格式信息初始化硬件解碼器。

為了解決上述技術(shù)問題,根據(jù)本發(fā)明的另一實(shí)施例,提供了一種播放多媒體文件的裝置,包括:

獲取模塊,用于獲取待播放的多媒體文件;

解復(fù)用模塊,用于對所述多媒體文件進(jìn)行解復(fù)用,得到所述多媒體文件對應(yīng)的解復(fù)用數(shù)據(jù)以及所述解復(fù)用數(shù)據(jù)的格式信息;

初始化模塊,用于根據(jù)所述解復(fù)用數(shù)據(jù)的格式信息初始化硬件解碼器;

解碼模塊,用于采用所述硬件解碼器對所述解復(fù)用數(shù)據(jù)進(jìn)行解碼,得到所述解復(fù)用數(shù)據(jù)對應(yīng)的解碼數(shù)據(jù);

渲染模塊,用于采用硬件渲染器對所述解碼數(shù)據(jù)進(jìn)行渲染。

對于上述裝置,在一種可能的實(shí)現(xiàn)方式中,所述裝置基于MediaCodec框架。

對于上述裝置,在一種可能的實(shí)現(xiàn)方式中,所述解碼模塊具體用于:

采用所述硬件解碼器對所述解復(fù)用數(shù)據(jù)中的待解碼幀進(jìn)行解碼,得到所述待解碼幀對應(yīng)的幀解碼數(shù)據(jù)。

對于上述裝置,在一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:

時間戳發(fā)送模塊,用于將所述待解碼幀的時間戳發(fā)送至所述硬件解碼器;

時間戳及序號接收模塊,用于接收所述硬件解碼器返回的所述幀解碼數(shù)據(jù)的時間戳和所述時間戳的序號,其中,所述幀解碼數(shù)據(jù)的時間戳與所述待解碼幀的時間戳相同。

對于上述裝置,在一種可能的實(shí)現(xiàn)方式中,所述渲染模塊具體用于:

采用所述硬件渲染器根據(jù)所述幀解碼數(shù)據(jù)的時間戳和所述時間戳的序號對所述幀解碼數(shù)據(jù)進(jìn)行渲染。

對于上述裝置,在一種可能的實(shí)現(xiàn)方式中,所述初始化模塊具體用于:

采用Java本地接口,通過對象與MediaCodec框架進(jìn)行交互,根據(jù)所述解復(fù)用數(shù)據(jù)的格式信息初始化硬件解碼器。

有益效果

通過在播放多媒體文件的過程中,根據(jù)解復(fù)用數(shù)據(jù)的格式信息初始化硬件解碼器,采用硬件解碼器對解復(fù)用數(shù)據(jù)進(jìn)行解碼,并采用硬件渲染器對解碼數(shù)據(jù)進(jìn)行渲染,根據(jù)本發(fā)明實(shí)施例的播放多媒體文件的方法及裝置在播放大多數(shù)的多媒體文件的情況下,能夠采用硬件解碼替代軟件解碼,從而能夠降低CPU占用率,采用GPU(Graphics Processing Unit,圖像處理器)硬件加速替代本地軟件算法,從而能夠降低系統(tǒng)內(nèi)存開銷,降低系統(tǒng)負(fù)載,并能夠降低播放多媒體文件產(chǎn)生的功耗,且避免在播放過程中出現(xiàn)卡頓現(xiàn)象或者APP無響應(yīng)的現(xiàn)象,提高了用戶體驗(yàn),能夠使更多的中低端機(jī)型播放更高清晰度的多媒體文件。

根據(jù)下面參考附圖對示例性實(shí)施例的詳細(xì)說明,本發(fā)明的其它特征及方面將變得清楚。

附圖說明

包含在說明書中并且構(gòu)成說明書的一部分的附圖與說明書一起示出了本發(fā)明的示例性實(shí)施例、特征和方面,并且用于解釋本發(fā)明的原理。

圖1示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法的實(shí)現(xiàn)流程圖;

圖2示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法中硬件解碼器進(jìn)行解碼所根據(jù)的數(shù)據(jù)結(jié)構(gòu)的示意圖;

圖3示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法的一示例性的實(shí)現(xiàn)流程圖;

圖4示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法中的同步邏輯的示意圖;

圖5示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法的另一示例性的實(shí)現(xiàn)流程圖;

圖6a示出根據(jù)現(xiàn)有的播放多媒體文件的方法播放垂直分辨率為480的視頻文件時CPU占用率的示意圖;

圖6b示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法播放垂直分辨率為480的視頻文件時CPU占用率的示意圖;

圖6c示出根據(jù)現(xiàn)有的播放多媒體文件的方法播放垂直分辨率為720的視頻文件時CPU占用率的示意圖;

圖6d示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法播放垂直分辨率為720的視頻文件時CPU占用率的示意圖;

圖7示出根據(jù)本發(fā)明另一實(shí)施例的播放多媒體文件的裝置的結(jié)構(gòu)框圖;

圖8示出了本發(fā)明的另一個實(shí)施例的一種播放多媒體文件的設(shè)備的結(jié)構(gòu)框圖。

具體實(shí)施方式

以下將參考附圖詳細(xì)說明本發(fā)明的各種示例性實(shí)施例、特征和方面。附圖中相同的附圖標(biāo)記表示功能相同或相似的元件。盡管在附圖中示出了實(shí)施例的各種方面,但是除非特別指出,不必按比例繪制附圖。

在這里專用的詞“示例性”意為“用作例子、實(shí)施例或說明性”。這里作為“示例性”所說明的任何實(shí)施例不必解釋為優(yōu)于或好于其它實(shí)施例。

另外,為了更好的說明本發(fā)明,在下文的具體實(shí)施方式中給出了眾多的具體細(xì)節(jié)。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,沒有某些具體細(xì)節(jié),本發(fā)明同樣可以實(shí)施。在一些實(shí)例中,對于本領(lǐng)域技術(shù)人員熟知的方法、手段、元件和電路未作詳細(xì)描述,以便于凸顯本發(fā)明的主旨。

實(shí)施例1

圖1示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法的實(shí)現(xiàn)流程圖。如圖1所示,該方法主要包括:

在步驟S101中,獲取待播放的多媒體文件。

需要說明的是,本實(shí)施例的執(zhí)行主體可以為手機(jī)或者平板電腦等移動終端,還可以為其他播放多媒體文件的裝置,在此不作限定。

在本發(fā)明實(shí)施例中,可以從本地獲取待播放的多媒體文件,也可以從服務(wù)器端獲取待播放的多媒體文件。

在一種可能的實(shí)現(xiàn)方式中,該方法基于MediaCodec框架。在該實(shí)現(xiàn)方式中,播放多媒體文件的裝置基于Android操作系統(tǒng)。

在步驟S102中,對多媒體文件進(jìn)行解復(fù)用,得到多媒體文件對應(yīng)的解復(fù)用數(shù)據(jù)以及解復(fù)用數(shù)據(jù)的格式信息。

作為本發(fā)明實(shí)施例的一個示例,通過軟件層對多媒體文件進(jìn)行解復(fù)用。

在步驟S103中,根據(jù)解復(fù)用數(shù)據(jù)的格式信息初始化硬件解碼器。

在步驟S104中,采用硬件解碼器對解復(fù)用數(shù)據(jù)進(jìn)行解碼,得到解復(fù)用數(shù)據(jù)對應(yīng)的解碼數(shù)據(jù)。

在步驟S105中,采用硬件渲染器對解碼數(shù)據(jù)進(jìn)行渲染。

在本發(fā)明實(shí)施例中,采用硬件解碼器替代軟件解碼器,采用硬件渲染器替代軟件渲染器,從而將解碼以及渲染流程由軟件實(shí)現(xiàn)更改為硬件實(shí)現(xiàn),能夠充分使用GPU硬件加速,既節(jié)省了CPU資源,又節(jié)省了系統(tǒng)內(nèi)存資源,同時由于避免了大量的算法邏輯,大大降低了播放多媒體文件產(chǎn)生的功耗。

圖2示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法中硬件解碼器進(jìn)行解碼所根據(jù)的數(shù)據(jù)結(jié)構(gòu)的示意圖。如圖2所示,該數(shù)據(jù)結(jié)構(gòu)可以為根據(jù)H264規(guī)范解析出的數(shù)據(jù)結(jié)構(gòu)。圖2所示的數(shù)據(jù)結(jié)構(gòu)中的各項(xiàng)參數(shù)可以存在于多媒體文件的額外數(shù)據(jù)(extradata)中。

在一種可能的實(shí)現(xiàn)方式中,采用硬件解碼器對解復(fù)用數(shù)據(jù)進(jìn)行解碼,得到解復(fù)用數(shù)據(jù)對應(yīng)的解碼數(shù)據(jù),包括:采用硬件解碼器對解復(fù)用數(shù)據(jù)中的待解碼幀進(jìn)行解碼,得到待解碼幀對應(yīng)的幀解碼數(shù)據(jù)。在本實(shí)現(xiàn)方式中,采用硬件解碼器對解復(fù)用數(shù)據(jù)進(jìn)行解碼,可以為按照解復(fù)用數(shù)據(jù)中各個待解碼幀的時間順序,分別對各個待解碼幀進(jìn)行解碼。

在一種可能的實(shí)現(xiàn)方式中,在采用硬件解碼器對解復(fù)用數(shù)據(jù)中的待解碼幀進(jìn)行解碼之前,方法還包括:將待解碼幀的時間戳發(fā)送至硬件解碼器;在得到待解碼幀對應(yīng)的幀解碼數(shù)據(jù)之后,方法還包括:接收硬件解碼器返回的幀解碼數(shù)據(jù)的時間戳和時間戳的序號,其中,幀解碼數(shù)據(jù)的時間戳與待解碼幀的時間戳相同。

在本發(fā)明實(shí)施例中,采用硬件層進(jìn)行解碼和渲染,而采用軟件層進(jìn)行解復(fù)用。為了適應(yīng)軟件解碼的流程,作為本發(fā)明實(shí)施例的一個示例,采用消息回調(diào)的方式,在采用硬件解碼器對待解碼幀進(jìn)行解碼之前,將待解碼幀的時間戳發(fā)送至硬件解碼器,并在硬件解碼器解碼得到幀解碼數(shù)據(jù)之后,接收硬件解碼器返回的幀解碼數(shù)據(jù)的時間戳和時間戳的序號,通過C層回調(diào)函數(shù),從而在正確的時間點(diǎn)進(jìn)行下一步的渲染操作。在本示例中,通過時間戳將硬件解碼流程與軟件解碼流程進(jìn)行統(tǒng)一,從而能夠在后期的版本維護(hù)中節(jié)省開發(fā)量以及降低維護(hù)成本。

在一種可能的實(shí)現(xiàn)方式中,采用硬件渲染器對解碼數(shù)據(jù)進(jìn)行渲染,包括:采用硬件渲染器根據(jù)幀解碼數(shù)據(jù)的時間戳和時間戳的序號對幀解碼數(shù)據(jù)進(jìn)行渲染。在該實(shí)現(xiàn)方式中,根據(jù)幀解碼數(shù)據(jù)的時間戳和時間戳的序號對幀解碼數(shù)據(jù)進(jìn)行渲染,從而能夠保證音視頻同步。

圖3示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法的一示例性的實(shí)現(xiàn)流程圖。如圖3所示,該方法包括:

在步驟S301中,獲取待播放的多媒體文件。

在步驟S302中,對多媒體文件進(jìn)行解復(fù)用,得到多媒體文件對應(yīng)的解復(fù)用數(shù)據(jù)以及解復(fù)用數(shù)據(jù)的格式信息。

在步驟S303中,根據(jù)解復(fù)用數(shù)據(jù)的格式信息初始化硬件解碼器。

在步驟S304中,將待解碼幀的時間戳發(fā)送至硬件解碼器。

在步驟S305中,采用硬件解碼器對解復(fù)用數(shù)據(jù)中的待解碼幀進(jìn)行解碼,得到待解碼幀對應(yīng)的幀解碼數(shù)據(jù)。

在步驟S306中,接收硬件解碼器返回的幀解碼數(shù)據(jù)的時間戳和時間戳的序號,其中,幀解碼數(shù)據(jù)的時間戳與待解碼幀的時間戳相同。

在步驟S307中,采用所述硬件渲染器根據(jù)所述幀解碼數(shù)據(jù)的時間戳和所述時間戳的序號對所述幀解碼數(shù)據(jù)進(jìn)行渲染。

圖4示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法中的同步邏輯的示意圖。如圖4所示,例如,圖像數(shù)據(jù)解碼得到Y(jié)UV數(shù)據(jù)(Y表示明亮度,U和V表示色度),音頻數(shù)據(jù)解碼得到PCM(Pulse Code Modulation,脈沖編碼調(diào)制)數(shù)據(jù),在播放每一幀前分別進(jìn)行同步,從而保證音視頻同步。

圖5示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法的另一示例性的實(shí)現(xiàn)流程圖。如圖5所示,該方法包括:

在步驟S501中,獲取待播放的多媒體文件;

在步驟S502中,對多媒體文件進(jìn)行解復(fù)用,得到多媒體文件對應(yīng)的解復(fù)用數(shù)據(jù)以及解復(fù)用數(shù)據(jù)的格式信息;

在步驟S503中,采用Java本地接口,通過對象與MediaCodec框架進(jìn)行交互,根據(jù)解復(fù)用數(shù)據(jù)的格式信息初始化硬件解碼器;

在步驟S504中,采用硬件解碼器對解復(fù)用數(shù)據(jù)進(jìn)行解碼,得到解復(fù)用數(shù)據(jù)對應(yīng)的解碼數(shù)據(jù);

在步驟S505中,采用硬件渲染器對解碼數(shù)據(jù)進(jìn)行渲染。

作為本發(fā)明實(shí)施例的一個示例,在進(jìn)行Android層硬件解碼器的初始化時,可以采用JNI(Java Native Interface,Java本地接口)方式,通過對象與Android的MediaCodec框架進(jìn)行交互。

圖6a示出根據(jù)現(xiàn)有的播放多媒體文件的方法播放垂直分辨率為480的視頻文件時CPU占用率的示意圖,圖6b示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法播放垂直分辨率為480的視頻文件時CPU占用率的示意圖。經(jīng)測試,采用現(xiàn)有的播放多媒體文件的方法播放垂直分辨率為480的視頻文件時CPU占用率的平均值為28%,采用本發(fā)明一實(shí)施例的播放多媒體文件的方法播放垂直分辨率為480的視頻文件時CPU占用率的平均值為16%。

圖6c示出根據(jù)現(xiàn)有的播放多媒體文件的方法播放垂直分辨率為720的視頻文件時CPU占用率的示意圖,圖6d示出根據(jù)本發(fā)明一實(shí)施例的播放多媒體文件的方法播放垂直分辨率為720的視頻文件時CPU占用率的示意圖。經(jīng)測試,采用現(xiàn)有的播放多媒體文件的方法播放垂直分辨率為720的視頻文件時CPU占用率的平均值為34%,采用本發(fā)明一實(shí)施例的播放多媒體文件的方法播放垂直分辨率為720的視頻文件時CPU占用率的平均值為17%。

這樣,通過在播放多媒體文件的過程中,根據(jù)解復(fù)用數(shù)據(jù)的格式信息初始化硬件解碼器,采用硬件解碼器對解復(fù)用數(shù)據(jù)進(jìn)行解碼,并采用硬件渲染器對解碼數(shù)據(jù)進(jìn)行渲染,根據(jù)本發(fā)明實(shí)施例的播放多媒體文件的方法在播放大多數(shù)的多媒體文件的情況下,能夠采用硬件解碼替代軟件解碼,從而能夠降低CPU占用率,采用GPU硬件加速替代本地軟件算法,從而能夠降低系統(tǒng)內(nèi)存開銷,降低系統(tǒng)負(fù)載,并能夠降低播放多媒體文件產(chǎn)生的功耗,且避免在播放過程中出現(xiàn)卡頓現(xiàn)象或者APP無響應(yīng)的現(xiàn)象,提高了用戶體驗(yàn),能夠使更多的中低端機(jī)型播放更高清晰度的多媒體文件。

實(shí)施例2

圖7示出根據(jù)本發(fā)明另一實(shí)施例的播放多媒體文件的裝置的結(jié)構(gòu)框圖。為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。

如圖7所示,該裝置包括:獲取模塊71,用于獲取待播放的多媒體文件;解復(fù)用模塊72,用于對所述多媒體文件進(jìn)行解復(fù)用,得到所述多媒體文件對應(yīng)的解復(fù)用數(shù)據(jù)以及所述解復(fù)用數(shù)據(jù)的格式信息;初始化模塊73,用于根據(jù)所述解復(fù)用數(shù)據(jù)的格式信息初始化硬件解碼器;解碼模塊74,用于采用所述硬件解碼器對所述解復(fù)用數(shù)據(jù)進(jìn)行解碼,得到所述解復(fù)用數(shù)據(jù)對應(yīng)的解碼數(shù)據(jù);渲染模塊75,用于采用硬件渲染器對所述解碼數(shù)據(jù)進(jìn)行渲染。

在一種可能的實(shí)現(xiàn)方式中,所述裝置基于MediaCodec框架。

在一種可能的實(shí)現(xiàn)方式中,所述解碼模塊74具體用于:采用所述硬件解碼器對所述解復(fù)用數(shù)據(jù)中的待解碼幀進(jìn)行解碼,得到所述待解碼幀對應(yīng)的幀解碼數(shù)據(jù)。

在一種可能的實(shí)現(xiàn)方式中,所述裝置還包括:時間戳發(fā)送模塊76,用于將所述待解碼幀的時間戳發(fā)送至所述硬件解碼器;時間戳及序號接收模塊77,用于接收所述硬件解碼器返回的所述幀解碼數(shù)據(jù)的時間戳和所述時間戳的序號,其中,所述幀解碼數(shù)據(jù)的時間戳與所述待解碼幀的時間戳相同。

在一種可能的實(shí)現(xiàn)方式中,所述渲染模塊75具體用于:采用所述硬件渲染器根據(jù)所述幀解碼數(shù)據(jù)的時間戳和所述時間戳的序號對所述幀解碼數(shù)據(jù)進(jìn)行渲染。

在一種可能的實(shí)現(xiàn)方式中,所述初始化模塊73具體用于:采用Java本地接口,通過對象與MediaCodec框架進(jìn)行交互,根據(jù)所述解復(fù)用數(shù)據(jù)的格式信息初始化硬件解碼器。

需要說明的是,這樣,通過在播放多媒體文件的過程中,根據(jù)解復(fù)用數(shù)據(jù)的格式信息初始化硬件解碼器,采用硬件解碼器對解復(fù)用數(shù)據(jù)進(jìn)行解碼,并采用硬件渲染器對解碼數(shù)據(jù)進(jìn)行渲染,根據(jù)本發(fā)明實(shí)施例的播放多媒體文件的裝置在播放大多數(shù)的多媒體文件的情況下,能夠采用硬件解碼替代軟件解碼,從而能夠降低CPU占用率,采用GPU硬件加速替代本地軟件算法,從而能夠降低系統(tǒng)內(nèi)存開銷,降低系統(tǒng)負(fù)載,并能夠降低播放多媒體文件產(chǎn)生的功耗,且避免在播放過程中出現(xiàn)卡頓現(xiàn)象或者APP無響應(yīng)的現(xiàn)象,提高了用戶體驗(yàn),能夠使更多的中低端機(jī)型播放更高清晰度的多媒體文件。

實(shí)施例3

圖8示出了本發(fā)明的另一個實(shí)施例的一種播放多媒體文件的設(shè)備的結(jié)構(gòu)框圖。所述播放多媒體文件的設(shè)備1100可以是具備計算能力的主機(jī)服務(wù)器、個人計算機(jī)PC、或者可攜帶的便攜式計算機(jī)或終端等。本發(fā)明具體實(shí)施例并不對計算節(jié)點(diǎn)的具體實(shí)現(xiàn)做限定。

所述播放多媒體文件的設(shè)備1100包括處理器(processor)1110、通信接口(Communications Interface)1120、存儲器(memory)1130和總線1140。其中,處理器1110、通信接口1120、以及存儲器1130通過總線1140完成相互間的通信。

通信接口1120用于與網(wǎng)絡(luò)設(shè)備通信,其中網(wǎng)絡(luò)設(shè)備包括例如虛擬機(jī)管理中心、共享存儲等。

處理器1110用于執(zhí)行程序。處理器1110可能是一個中央處理器CPU,或者是專用集成電路ASIC(Application Specific Integrated Circuit),或者是被配置成實(shí)施本發(fā)明實(shí)施例的一個或多個集成電路。

存儲器1130用于存放文件。存儲器1130可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。存儲器1130也可以是存儲器陣列。存儲器1130還可能被分塊,并且所述塊可按一定的規(guī)則組合成虛擬卷。

在一種可能的實(shí)施方式中,上述程序可為包括計算機(jī)操作指令的程序代碼。該程序具體可用于:實(shí)現(xiàn)實(shí)施例1中各步驟的操作。

本領(lǐng)域普通技術(shù)人員可以意識到,本文所描述的實(shí)施例中的各示例性單元及算法步驟,能夠以電子硬件、或者計算機(jī)軟件和電子硬件的結(jié)合來實(shí)現(xiàn)。這些功能究竟以硬件還是軟件形式來實(shí)現(xiàn),取決于技術(shù)方案的特定應(yīng)用和設(shè)計約束條件。專業(yè)技術(shù)人員可以針對特定的應(yīng)用選擇不同的方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。

如果以計算機(jī)軟件的形式來實(shí)現(xiàn)所述功能并作為獨(dú)立的產(chǎn)品銷售或使用時,則在一定程度上可認(rèn)為本發(fā)明的技術(shù)方案的全部或部分(例如對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分)是以計算機(jī)軟件產(chǎn)品的形式體現(xiàn)的。該計算機(jī)軟件產(chǎn)品通常存儲在計算機(jī)可讀取的非易失性存儲介質(zhì)中,包括若干指令用以使得計算機(jī)設(shè)備(可以是個人計算機(jī)、服務(wù)器、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各實(shí)施例方法的全部或部分步驟。而前述的存儲介質(zhì)包括U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
玛多县| 富顺县| 苏尼特右旗| 永仁县| 利津县| 汝城县| 从化市| 咸丰县| 德令哈市| 景德镇市| 抚州市| 江门市| 景德镇市| 邮箱| 茂名市| 东阿县| 咸丰县| 潢川县| 调兵山市| 扬中市| 河津市| 温泉县| 天峨县| 平湖市| 绩溪县| 澜沧| 信丰县| 和硕县| 尼勒克县| 乐亭县| 灵寿县| 简阳市| 顺义区| 崇阳县| 苗栗市| 乌拉特中旗| 通州区| 云南省| 诸城市| 平阳县| 台北市|