本發(fā)明涉及多媒體
技術(shù)領(lǐng)域:
:,具體而言,涉及一種多媒體文件的播放方法、封裝方法以及相應(yīng)的裝置、終端。
背景技術(shù):
::多媒體技術(shù),尤其是多媒體文件的封裝和播放技術(shù),在多媒體從模擬到數(shù)字化轉(zhuǎn)變的過程中得到了蓬勃發(fā)展。隨著人們對視頻、音頻等多媒體內(nèi)容的清晰度、流暢度、精簡度的要求越來越苛刻,使其成為了一項(xiàng)炙手可熱的技術(shù)。新的應(yīng)用和產(chǎn)品幾乎每天都會出現(xiàn),通過時間和市場實(shí)踐的驗(yàn)證,各大應(yīng)用和產(chǎn)品的優(yōu)勢逐漸顯現(xiàn),缺點(diǎn)也隨之暴露出來。人們對于高性能的不斷追求促使新的多媒體文件的封裝和播放技術(shù)誕生。目前,mp4文件封裝格式標(biāo)準(zhǔn)作為市場上主流的多媒體文件封裝、播放格式之一,被認(rèn)為是較為全面的容器格式。在mp4文件中,包的數(shù)量非常多,大包中存放小包,一級嵌套一級來存放媒體信息,因此需要層層解析,然后綜合起來還原媒體信息,其中還包括那些可能用到也可能用不到的包??梢?,這種復(fù)雜的解析、播放和封裝方式,使得多媒體文件內(nèi)容冗余,需要占用較多的系統(tǒng)內(nèi)存空間寫入標(biāo)準(zhǔn)必須而不一定用到的信息,手機(jī)內(nèi)存占用較高,代碼復(fù)雜度也高。技術(shù)實(shí)現(xiàn)要素:為克服上述技術(shù)問題或者至少部分地解決上述技術(shù)問題,特提出以下技術(shù)方案:本發(fā)明的實(shí)施例提出了一種多媒體文件的播放方法,所述多媒體文件由文件頭包、媒體信息包,媒體數(shù)據(jù)包依次組成,所述播放方法包括:解析所述文件頭包中的信息字段,并根據(jù)文件頭包中的信息字段確定所述多媒體文件的格式類型;當(dāng)確定出的格式類型為預(yù)定多媒體封裝格式類型時,解析所述媒體信息包中的信息字段以獲取所述多媒體文件的音頻和視頻的參數(shù)信息;解析所述媒體數(shù)據(jù)包中交叉保存的視頻壓縮數(shù)據(jù)包和音頻壓縮數(shù)據(jù)包,以獲取到視頻數(shù)據(jù)和音頻數(shù)據(jù);根據(jù)所述音頻和視頻的參數(shù)信息,以及獲取到的視頻數(shù)據(jù)和音頻數(shù)據(jù),進(jìn)行多媒體文件播放。具體地,所述根據(jù)文件頭包中的信息字段確定所述多媒體文件的格式類型的步驟,包括:判斷所述文件頭包中的信息字段與預(yù)定多媒體封裝格式類型對應(yīng)的字符串是否匹配;若匹配,則確定所述多媒體文件的格式類型為預(yù)定多媒體封裝格式類型。實(shí)際使用時,所述音頻和視頻的參數(shù)信息包括以下至少一項(xiàng):視頻編碼器名稱、視頻高度、視頻寬度、視頻幀率、視頻比特率、音頻編碼器名稱、音頻采樣率、音頻比特率、多媒體文件比特率。進(jìn)一步地,所述解析所述媒體數(shù)據(jù)包中交叉保存的視頻壓縮數(shù)據(jù)包和音頻壓縮數(shù)據(jù)包,以獲取到視頻數(shù)據(jù)和音頻數(shù)據(jù)的步驟,包括:讀取所述視頻壓縮數(shù)據(jù)包中的信息字段,得到視頻壓縮數(shù)據(jù)包的字節(jié)數(shù)、視頻時間戳表、視頻時間長度和具體視頻數(shù)據(jù);讀取所述音頻壓縮數(shù)據(jù)包中的信息字段,得到音頻壓縮數(shù)據(jù)包的字節(jié)數(shù)、音頻時間戳表、音頻時間長度和具體音頻數(shù)據(jù)。另一方面,本發(fā)明實(shí)施例還提供了一種多媒體文件的封裝方法,包括:將視頻數(shù)據(jù)和音頻數(shù)據(jù)封裝成交叉保存的視頻壓縮數(shù)據(jù)包和音頻壓縮數(shù)據(jù)包,得到媒體數(shù)據(jù)包;根據(jù)所述視頻數(shù)據(jù)和音頻數(shù)據(jù),確定音頻和視頻的參數(shù)信息,并將音頻和視頻的參數(shù)信息以信息字段的方式寫入媒體信息包中;將標(biāo)識預(yù)定多媒體封裝格式類型的文件頭包、所述媒體信息包及所述媒體數(shù)據(jù)包按順序封裝,得到所述多媒體文件。其中,還包括:將預(yù)定多媒體封裝格式類型對應(yīng)的字符串以信息字段的方式寫入文件頭包中,以用于標(biāo)識所述多媒體文件的格式類型為預(yù)定多媒體封裝格式類型。本發(fā)明實(shí)施例提供了一種多媒體文件的播放裝置,所述多媒體文件由文件頭包、媒體信息包,媒體數(shù)據(jù)包依次組成,所述播放裝置包括:格式類型確定模塊,用于解析所述文件頭包中的信息字段,并根據(jù)文件頭包中的信息字段確定所述多媒體文件的格式類型;參數(shù)信息獲取模塊,用于當(dāng)確定出的格式類型為預(yù)定多媒體封裝格式類型時,解析所述媒體信息包中的信息字段以獲取所述多媒體文件的音頻和視頻的參數(shù)信息;數(shù)據(jù)獲取模塊,用于解析所述媒體數(shù)據(jù)包中交叉保存的視頻壓縮數(shù)據(jù)包和音頻壓縮數(shù)據(jù)包,以獲取到視頻數(shù)據(jù)和音頻數(shù)據(jù);播放模塊,用于根據(jù)所述音頻和視頻的參數(shù)信息,以及獲取到的視頻數(shù)據(jù)和音頻數(shù)據(jù),進(jìn)行多媒體文件播放。本發(fā)明實(shí)施例還提供了一種多媒體文件的封裝裝置,包括:數(shù)據(jù)封裝模塊,用于將視頻數(shù)據(jù)和音頻數(shù)據(jù)封裝成交叉保存的視頻壓縮數(shù)據(jù)包和音頻壓縮數(shù)據(jù)包,得到媒體數(shù)據(jù)包;參數(shù)信息封裝模塊,用于根據(jù)所述視頻數(shù)據(jù)和音頻數(shù)據(jù),確定音頻和視頻的參數(shù)信息,并將音頻和視頻的參數(shù)信息以信息字段的方式寫入媒體信息包中;文件封裝模塊,用于將標(biāo)識預(yù)定多媒體封裝格式類型的文件頭包、所述媒體信息包及所述媒體數(shù)據(jù)包按順序封裝,得到所述多媒體文件。進(jìn)一步地,還包括:格式類型封裝模塊,用于將預(yù)定多媒體封裝格式類型對應(yīng)的字符串以信息字段的方式寫入文件頭包中,以用于標(biāo)識所述多媒體文件的格式類型為預(yù)定多媒體封裝格式類型。本發(fā)明實(shí)施例還提供了一種終端,包括:存儲器、處理器及存儲在存儲器上并可在處理器上運(yùn)行的程序,所述處理器執(zhí)行所述程序時實(shí)現(xiàn)以上任一項(xiàng)所述的方法。本發(fā)明實(shí)施例提供的多媒體文件的播放方法、封裝方法以及相應(yīng)的裝置、終端,通過用文件頭包中的信息字段確定出多媒體文件的格式類型為預(yù)定多媒體封裝格式類型,即可相應(yīng)的解析媒體信息包中的信息字段以獲取多媒體文件的音頻和視頻的參數(shù)信息,以及解析媒體數(shù)據(jù)包中交叉保存的視頻壓縮數(shù)據(jù)包和音頻壓縮數(shù)據(jù)包來獲取到視頻數(shù)據(jù)和音頻數(shù)據(jù),根據(jù)音頻和視頻的參數(shù)信息,以及獲取到的視頻數(shù)據(jù)和音頻數(shù)據(jù),進(jìn)行多媒體文件播放。與現(xiàn)有技術(shù)的多媒體文件中音頻和視頻的參數(shù)信息都嵌套在不同的包中,對多媒體文件解碼時需要分別進(jìn)行解析,以及多媒體文件中包含的視頻數(shù)據(jù)和音頻數(shù)據(jù)位置不固定從而導(dǎo)致的解析難度大相比,本發(fā)明通過直接解析信息字段獲取多媒體文件中最核心、最關(guān)鍵的音頻和視頻的參數(shù)信息,以及對交叉保存的視頻壓縮數(shù)據(jù)包和音頻壓縮數(shù)據(jù)包進(jìn)行解析獲得視頻數(shù)據(jù)和音頻數(shù)據(jù)的方式,達(dá)到降低多媒體文件播放的復(fù)雜度、并節(jié)約內(nèi)存占用資源的目的。本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。附圖說明為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例中所需要使用的附圖作簡單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對范圍的限定,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。圖1為本發(fā)明實(shí)施例提供的多媒體文件的數(shù)據(jù)結(jié)構(gòu)的實(shí)例;圖2為本發(fā)明實(shí)施例提供的多媒體文件的播放方法的流程示意圖;圖3為本發(fā)明實(shí)施例提供的多媒體文件的封裝方法的流程示意圖;圖4為本發(fā)明實(shí)施例提供的多媒體文件的播放裝置的框架示意圖;圖5為本發(fā)明實(shí)施例提供的多媒體文件的封裝裝置的框架示意圖。具體實(shí)施方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來布置和設(shè)計(jì)。因此,以下對在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例。基于本發(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍??紤]到復(fù)雜的多媒體解析、播放和封裝方式,使得多媒體文件內(nèi)容冗余,需要占用較多的系統(tǒng)內(nèi)存空間寫入標(biāo)準(zhǔn)必須而不一定用到的信息,手機(jī)內(nèi)存占用較高,代碼復(fù)雜度也高。基于此,本發(fā)明實(shí)施例提供了一種多媒體文件的播放方法、封裝方法以及相應(yīng)的裝置、終端,下面通過實(shí)施例進(jìn)行描述。本發(fā)明實(shí)施例提供了一種多媒體文件的播放方法,如圖1所示,其中多媒體文件由文件頭包(fileheaderpackage,以下簡稱為fhp)、媒體信息包(mediainformationpackage,以下簡稱為mip),媒體數(shù)據(jù)包(mediadatapackage,以下簡稱為mdp)依次組成。如圖2所示,播放方法具體包括如下步驟:s201:解析所述文件頭包中的信息字段,并根據(jù)文件頭包中的信息字段確定所述多媒體文件的格式類型;在本發(fā)明實(shí)施例中,fhp作為多媒體文件中的第一個包,可以指示這個多媒體文件的格式類型,以便采取正確的解析方式,這是有效播放多媒體文件的第一步,也是必要步驟。例如,fhp中依照順序?qū)懭肓俗址癴hpsyberformat”,一共占用16個字節(jié)的信息字段。當(dāng)播放器去解析時,首先要判斷fhp中的信息字段與預(yù)定多媒體封裝格式類型對應(yīng)的字符串是否匹配,通過解析這個多媒體文件的預(yù)定字節(jié)中,即前16個字節(jié),也就是fhp中的信息字段是否為預(yù)定多媒體封裝格式類型對應(yīng)的字符串“fhpsyberformat”。若匹配,則可以確定多媒體文件的格式類型是預(yù)定多媒體封裝格式類型,即可以采取本發(fā)明實(shí)施例提供的播放方法來解析和播放這個多媒體文件。實(shí)際使用時,預(yù)定多媒體封裝格式類型對應(yīng)的指示方式并沒有嚴(yán)格的限制,也可以采用其他信息字段甚至其他形式執(zhí)行。本發(fā)明實(shí)施例采取解析fhp獲取格式類型的方式,既可以明確該格式類型的特殊性,也可以在匹配失敗時保護(hù)其他包中的信息;采用解析信息字段的方式就可以獲取格式類型,以較低的解析復(fù)雜度達(dá)到了安全可靠的目的。s202:當(dāng)確定出的格式類型為預(yù)定多媒體封裝格式類型時,解析所述媒體信息包中的信息字段以獲取所述多媒體文件的音頻和視頻的參數(shù)信息;在s201中已經(jīng)明確了執(zhí)行本步驟的條件。本發(fā)明實(shí)施例中,mip(mediainformationpackage,媒體信息包)作為多媒體文件中的第二個包,可以指示出封裝在這個多媒體文件中的音頻和視頻的相關(guān)參數(shù)信息。不同于mp4等多媒體播放形式封裝的音頻和視頻的參數(shù)信息都由嵌套在大包中的小包按不同參數(shù)類別分別保存,解析較復(fù)雜的特點(diǎn),本發(fā)明實(shí)施例通過解析mip中的信息字段,就可以得到音頻和視頻的全部參數(shù)信息。也就是說,音頻和視頻的參數(shù)信息全部集中寫到一個包中,即mip中,這種方式便于編碼器的快速寫入和播放器的快速解析,降低了系統(tǒng)代碼的復(fù)雜度。本發(fā)明實(shí)施例中提供的音頻和視頻的參數(shù)信息包括以下至少一項(xiàng):視頻編碼器名稱(videocodec)、視頻高度(videoheight)、視頻寬度(videowidth)、視頻幀率(videoframerates)、視頻比特率(videobitrates)、音頻編碼器名稱(audiocodec)、音頻采樣率(audiosamplerates)、音頻比特率(audiobitrates)、多媒體文件比特率(totalbitrates)。較佳地,以上音頻和視頻的參數(shù)信息都以固定的順序占據(jù)mip中的信息字段,例如,按照上述羅列的順序,每個音頻和視頻的參數(shù)信息相應(yīng)的信息字段分別占據(jù)4個字節(jié)數(shù),進(jìn)一步加快了解析效率,同時也方便開發(fā)人員定位和調(diào)試分析。s203:解析所述媒體數(shù)據(jù)包中交叉保存的視頻壓縮數(shù)據(jù)包和音頻壓縮數(shù)據(jù)包,以獲取到視頻數(shù)據(jù)和音頻數(shù)據(jù);在本發(fā)明實(shí)施例中,mdp(mediadatapackage,媒體數(shù)據(jù)包)作為多媒體文件中的第三個包,包含了具體音頻數(shù)據(jù)和具體視頻數(shù)據(jù)。具體可以為,如圖1所示,由一個一個視頻壓縮數(shù)據(jù)包(videochunkpackage,以下簡稱為vcp)和一個一個音頻壓縮數(shù)據(jù)包(audiochunkpackage,以下簡稱為acp)交叉保存而成,通過解析mdp中的各個vcp和acp,就可以獲取到視頻數(shù)據(jù)和音頻數(shù)據(jù)。其中兩種包內(nèi)部結(jié)構(gòu)相同,解析方式也相同,下面以vcp為例來具體說明包內(nèi)結(jié)構(gòu)和解析方式。為達(dá)到正常播放完整視頻,以及與音頻同步的目的,vcp中除了存儲有具體的視頻數(shù)據(jù)外,還應(yīng)該包括一些參數(shù)信息用于解析后進(jìn)行播放,可以包括:vcp的字節(jié)數(shù)(size)、視頻時間戳表(timestamptable)、視頻時間長度(duration)和具體視頻數(shù)據(jù)(streamdata)。不同于mp4多媒體文件解析后會存在較多冗余和無用的數(shù)據(jù),如索引值,創(chuàng)建時間等等,對于播放多媒體文件并沒有實(shí)際意義,還需要占用多余的系統(tǒng)內(nèi)存空間,本發(fā)明所實(shí)施例提供的播放方法在解析過程中只涉及了最核心、最有效的音視頻參數(shù)信息,達(dá)到降低系統(tǒng)內(nèi)存占用資源的目的。其中,解析得到一個vcp的字節(jié)數(shù),就能知道該vcp占用的字節(jié)長度,結(jié)合acp的字節(jié)長度,就可以知道下一個vcp或acp的位置,同理,通過累加可以知道各個vcp或acp的位置,方便查找和讀取。解析得到視頻時間戳表,指示每個vcp中的每個視頻幀的時間戳信息,用于播放時與音頻幀保持同步。解析得到視頻時間長度,指示每個vcp中所有視頻幀的時間長度。累加每個vcp包的視頻時間長度,就可以得到這整個多媒體文件的視頻時間長度。解析得到具體視頻數(shù)據(jù),即為播放用的視頻。類似于mip的解析方式,以上參數(shù)信息也可以按固定的順序占據(jù)vcp中的信息字段,例如按照上述羅列的順序。其中,vcp的字節(jié)數(shù)和視頻時間長度對應(yīng)的信息字段可以寫為占據(jù)4個字節(jié)數(shù)或者其他存儲方式,而視頻時間戳表和具體視頻數(shù)據(jù)可以根據(jù)具體視頻幀的分布方式進(jìn)行存儲。較佳的,vcp不僅僅可以考慮是將單個視頻幀寫成的一個包,也可以是當(dāng)視頻幀達(dá)到一個標(biāo)準(zhǔn)時,寫成的一個vcp??梢韵胂螅粋€完整視頻拆分的vcp的數(shù)量越少,一定程度上可以節(jié)約系統(tǒng)的i/o讀寫,而vcp的數(shù)量過少,則會使服務(wù)器帶寬壓力增大且播放選擇性差,影響用戶體驗(yàn)。本發(fā)明實(shí)施例中未限定所要解析的vcp包含的視頻幀的具體標(biāo)準(zhǔn),作為示例地,建議解析vcp可以得到100個視頻幀的視頻數(shù)據(jù)。acp的包內(nèi)結(jié)構(gòu)和解析方式與vcp相同,在此不再贅述。值得說明的是,每個vcp包對應(yīng)的acp包最好保持相同幀長。若最后的視頻幀和音頻幀達(dá)不到vcp和acp的標(biāo)準(zhǔn),則將剩余幀打包成一個vcp或者acp,解析后保證視頻數(shù)據(jù)和音頻數(shù)據(jù)的完整性。因此,通過讀取vcp中的信息字段,得到vcp的字節(jié)數(shù)、視頻時間戳表、視頻時間長度和具體視頻數(shù)據(jù),讀取acp中的信息字段,得到acp的字節(jié)數(shù)、音頻時間戳表、音頻時間長度和具體音頻數(shù)據(jù)后,就可以執(zhí)行s204步驟。s204:根據(jù)所述音頻和視頻的參數(shù)信息,以及獲取到的視頻數(shù)據(jù)和音頻數(shù)據(jù),進(jìn)行多媒體文件播放。本發(fā)明實(shí)施例提供的多媒體文件的播放方法,通過讀取fhp中的信息字段確定出多媒體文件的格式類型為預(yù)定多媒體封裝格式類型,即可相應(yīng)的解析mip中的信息字段以獲取多媒體文件的音頻和視頻的參數(shù)信息,以及解析mdp中交叉保存的vcp和acp來獲取到視頻數(shù)據(jù)和音頻數(shù)據(jù),根據(jù)音頻和視頻的參數(shù)信息,以及獲取到的視頻數(shù)據(jù)和音頻數(shù)據(jù),進(jìn)行多媒體文件播放。與現(xiàn)有技術(shù)的多媒體文件中音頻和視頻的參數(shù)信息都嵌套在不同的包中,對多媒體文件解碼時需要分別進(jìn)行解析,以及多媒體文件中包含的視頻數(shù)據(jù)和音頻數(shù)據(jù)位置不固定從而導(dǎo)致的解析難度大相比,本發(fā)明實(shí)施例通過直接解析信息字段獲取多媒體文件中最核心、最關(guān)鍵的音頻和視頻的參數(shù)信息,以及對交叉保存的vcp和acp進(jìn)行解析獲得視頻數(shù)據(jù)和音頻數(shù)據(jù)的方式,達(dá)到降低多媒體文件播放的復(fù)雜度、并節(jié)約內(nèi)存占用資源的目的。本發(fā)明實(shí)施例還提供了一種多媒體文件的封裝方法,如圖3所示,具體包括以下步驟:s301:將視頻數(shù)據(jù)和音頻數(shù)據(jù)封裝成交叉保存的視頻壓縮數(shù)據(jù)包和音頻壓縮數(shù)據(jù)包,得到媒體數(shù)據(jù)包(即mdp)。在本發(fā)明實(shí)施例中,將視頻數(shù)據(jù)和音頻數(shù)據(jù)分別按一定的標(biāo)準(zhǔn)幀數(shù)拆分成多個視頻壓縮數(shù)據(jù)包(即vcp)和音頻壓縮數(shù)據(jù)包(即acp)。將一個個vcp和一個一個acp交叉保存的方式進(jìn)行封裝,形成mdp。因vcp和acp具有相同的包內(nèi)部結(jié)構(gòu)和封裝方式,下面以vcp為例來具體說明。較佳的,vcp不僅僅可以考慮將單個視頻幀封裝成的一個包,也可以當(dāng)視頻幀達(dá)到一個標(biāo)準(zhǔn)時,封裝成一個vcp??梢韵胂?,一個完整視頻拆分的vcp的數(shù)量越少,一定程度上可以節(jié)約系統(tǒng)的i/o讀寫,而vcp的數(shù)量過少,則會使服務(wù)器帶寬壓力增大且播放選擇性差,影響用戶體驗(yàn)。本發(fā)明實(shí)施例中未限定封裝vcp時截取的視頻幀的具體標(biāo)準(zhǔn),作為示例地,建議是當(dāng)達(dá)到100個視頻幀時,就封裝成一個vcp寫入mdp。acp的包內(nèi)結(jié)構(gòu)和解析方式與vcp相同,在此不再贅述。值得說明的是,為acp包截取音頻幀的幀數(shù),最好與相應(yīng)的vcp包的視頻幀幀數(shù)保持相同。若最后的視頻幀和音頻幀達(dá)不到vcp和acp的幀數(shù)標(biāo)準(zhǔn),則將剩余幀封裝成一個vcp或者acp,保證視頻數(shù)據(jù)和音頻數(shù)據(jù)的完整性。為達(dá)到正常播放完整視頻,以及與音頻同步的目的,vcp中除了存儲有具體的視頻數(shù)據(jù)外,還應(yīng)該封裝進(jìn)一些參數(shù)信息用于解析后進(jìn)行播放,可以包括:vcp的字節(jié)數(shù)(size)、視頻時間戳表(timestamptable)、視頻時間長度(duration)和具體視頻數(shù)據(jù)(streamdata)。不同于mp4多媒體文件解析后會存在較多冗余和無用的數(shù)據(jù),如索引值,創(chuàng)建時間等等,對于播放多媒體文件并沒有實(shí)際意義,還需要占用多余的系統(tǒng)內(nèi)存空間,本發(fā)明實(shí)施例提供的封裝方法只保留了最核心、最有效的音視頻參數(shù)信息,達(dá)到了降低系統(tǒng)內(nèi)存占用的目的。其中,添加vcp的字節(jié)數(shù),是為了指示該vcp占用的字節(jié)長度,結(jié)合acp的字節(jié)長度,就可以知道下一個vcp或acp的位置,同理,通過累加可以知道各個vcp或acp的位置,方便查找和讀取。添加視頻時間戳表,是為了指示每個vcp中的每個視頻幀的時間戳信息,用于播放時與音頻幀保持同步。添加視頻時間長度,是為了指示每個vcp中所有視頻幀的時間長度。累加每個vcp包的視頻時間長度,就可以得到這整個多媒體文件的視頻時間長度。以上參數(shù)信息也可以按固定的順序占據(jù)vcp中的信息字段,例如按照上述羅列的順序。其中,vcp的字節(jié)數(shù)和視頻時間長度對應(yīng)的信息字段可以寫為占據(jù)4個字節(jié)數(shù)或者其他存儲方式,而視頻時間戳表和具體視頻數(shù)據(jù)可以根據(jù)具體視頻幀的分布方式進(jìn)行封裝。相較于mp4等多媒體播放形式所要解析的視頻壓縮數(shù)據(jù)和音頻壓縮數(shù)據(jù)位置隨機(jī)不固定,不便于查找的特點(diǎn),本發(fā)明實(shí)施例以vcp保存為偶數(shù)包,acp保存為奇數(shù)包為例,這樣的數(shù)據(jù)結(jié)構(gòu)可以很簡單方便的做到線程同步,只要寫視頻線程工作,則寫音頻線程阻塞;反之寫音頻線程工作,則寫視頻線程阻塞,降低了系統(tǒng)線程工作的復(fù)雜度。s302:根據(jù)所述視頻數(shù)據(jù)和音頻數(shù)據(jù),確定音頻和視頻的參數(shù)信息,并將音頻和視頻的參數(shù)信息以信息字段的方式寫入媒體信息包(即mip)中;不同于mp4等多媒體播放形式封裝的音頻和視頻的參數(shù)信息都由嵌套在大包中的小包按不同參數(shù)類別分別保存,解析較復(fù)雜的特點(diǎn),本發(fā)明實(shí)施例直接將音頻和視頻的參數(shù)信息以信息字段的方式寫入mip。也就是說,音頻和視頻的參數(shù)信息全部集中寫到一個包中,即mip中,這種方式便于編碼器的快速寫入和播放器的快速解析,降低了系統(tǒng)代碼的復(fù)雜度。考慮到過多冗余和無用的數(shù)據(jù)會占用多余的系統(tǒng)內(nèi)存空間,對于播放多媒體文件也沒有實(shí)際意義,本發(fā)明實(shí)施例中提供最核心、最關(guān)鍵的音頻和視頻的參數(shù)信息,包括:視頻編碼器名稱(videocodec)、視頻高度(videoheight)、視頻寬度(videowidth)、視頻幀率(videoframerates)、視頻比特率(videobitrates)、音頻編碼器名稱(audiocodec)、音頻采樣率(audiosamplerates)、音頻比特率(audiobitrates)、多媒體文件比特率(totalbitrates)。較佳地,以上音頻和視頻的參數(shù)信息都以固定的順序占據(jù)mip中的信息字段,例如,按照上述羅列的順序,每個音頻和視頻的參數(shù)信息相應(yīng)的信息字段分別占據(jù)4個字節(jié)數(shù),進(jìn)一步加快了解析效率,同時也方便開發(fā)人員定位和調(diào)試分析。s303:將標(biāo)識預(yù)定多媒體封裝格式類型的文件頭包、所述媒體信息包及所述媒體數(shù)據(jù)包按順序封裝,得到所述多媒體文件。在此步驟之前,還包括將預(yù)定多媒體封裝格式類型對應(yīng)的字符串以信息字段的方式寫入文件頭包(即fhp)中,以用于標(biāo)識多媒體文件的格式類型為預(yù)定多媒體封裝格式類型。例如,在fhp中依照順序以信息字段的方式寫入字符串“fhpsyberformat”,一共占用16個字節(jié)。當(dāng)播放器去解析時,必須要先解析這個多媒體文件的預(yù)定字節(jié)中,即前16個字節(jié),也就是fhp中的信息字段是否為“fhpsyberformat”。若是,則可以采取本發(fā)明實(shí)施例提供的上述播放方法來解析和播放這個多媒體文件。實(shí)際使用時,預(yù)定多媒體封裝格式類型對應(yīng)的指示方式并沒有嚴(yán)格的限制,也可以采用其他信息字段甚至其他形式執(zhí)行。本發(fā)明實(shí)施例采取解析fhp獲取格式類型的方式,既可以明確該格式類型的特殊性,也可以在匹配失敗時保護(hù)其他包中的信息;采用解析信息字段的方式就可以獲取格式類型,以較低的解析復(fù)雜度達(dá)到了安全可靠的目的。將fhp、mip、mdp按順序封裝成的多媒體文件,就具備了降低多媒體文件播放的復(fù)雜度,并節(jié)約內(nèi)存占用空間的優(yōu)點(diǎn)。如圖4所示,本發(fā)明實(shí)施例還提供了一種多媒體文件的播放裝置,包括:格式類型確定模塊401、參數(shù)信息獲取模塊402、數(shù)據(jù)獲取模塊403和播放模塊404。其中,格式類型確定模塊401用于解析fhp中的信息字段,并根據(jù)fhp中的信息字段確定多媒體文件的格式類型;參數(shù)信息獲取模塊402用于當(dāng)確定出的格式類型為預(yù)定多媒體封裝格式類型時,解析mip中的信息字段以獲取多媒體文件的音頻和視頻的參數(shù)信息;數(shù)據(jù)獲取模塊403用于解析mdp中交叉保存的視頻壓縮數(shù)據(jù)包和音頻壓縮數(shù)據(jù)包,以獲取到視頻數(shù)據(jù)和音頻數(shù)據(jù);播放模塊404用于根據(jù)音頻和視頻的參數(shù)信息,以及獲取到的視頻數(shù)據(jù)和音頻數(shù)據(jù),進(jìn)行多媒體文件播放。具體地,格式類型確定模塊401包括信息字段判斷單元和格式類型確定單元。信息字段判斷單元用于判斷fhp中的信息字段與預(yù)定多媒體封裝格式類型對應(yīng)的字符串是否匹配;格式類型確定單元用于當(dāng)fhp中的信息字段與預(yù)定多媒體封裝格式類型對應(yīng)的字符串匹配時,則確定所述多媒體文件的格式類型為預(yù)定多媒體封裝格式類型。數(shù)據(jù)獲取模塊403包括視頻讀取單元和音頻讀取單元。視頻讀取單元用于讀取所述視頻壓縮數(shù)據(jù)包中的信息字段,得到視頻壓縮數(shù)據(jù)包的字節(jié)數(shù)、視頻時間戳表、視頻時間長度和具體視頻數(shù)據(jù);音頻讀取單元用于讀取所述音頻壓縮數(shù)據(jù)包中的信息字段,得到音頻壓縮數(shù)據(jù)包的字節(jié)數(shù)、音頻時間戳表、音頻時間長度和具體音頻數(shù)據(jù)。本發(fā)明實(shí)施例還提供了一種多媒體文件的封裝裝置,如圖5所示,包括:數(shù)據(jù)封裝模塊501、參數(shù)信息封裝模塊502、文件封裝模塊503。其中,數(shù)據(jù)封裝模塊501用于將視頻數(shù)據(jù)和音頻數(shù)據(jù)封裝成交叉保存的視頻壓縮數(shù)據(jù)包和音頻壓縮數(shù)據(jù)包,得到mdp;參數(shù)信息封裝模塊502用于根據(jù)視頻數(shù)據(jù)和音頻數(shù)據(jù),確定音頻和視頻的參數(shù)信息,并將音頻和視頻的參數(shù)信息以信息字段的方式寫入媒體信息包中;文件封裝模塊503用于將標(biāo)識預(yù)定多媒體封裝格式類型的fhp、mip及mdp按順序封裝,得到多媒體文件。如圖5所示,該多媒體文件的封裝裝置還包括格式類型封裝模塊504。格式類型封裝模塊504用于將預(yù)定多媒體封裝格式類型對應(yīng)的字符串以信息字段的方式寫入文件頭包中,以用于標(biāo)識多媒體文件的格式類型為預(yù)定多媒體封裝格式類型。本發(fā)明實(shí)施例還提供一種終端,包括:存儲器、處理器及存儲在存儲器上并可在處理器上運(yùn)行的程序,所述處理器執(zhí)行所述程序時實(shí)現(xiàn)以上任一項(xiàng)所述的方法。與現(xiàn)有技術(shù)的多媒體文件中音頻和視頻的參數(shù)信息都嵌套在不同的包中,對多媒體文件解碼時需要分別進(jìn)行解析,以及多媒體文件中包含的視頻數(shù)據(jù)和音頻數(shù)據(jù)位置不固定從而導(dǎo)致的解析難度大相比,本發(fā)明實(shí)施例提供的多媒體文件的播放裝置及封裝裝置可以直接解析信息字段獲取多媒體文件中最核心、最關(guān)鍵的音頻和視頻的參數(shù)信息,以及對交叉保存的視頻壓縮數(shù)據(jù)包和音頻壓縮數(shù)據(jù)包進(jìn)行解析獲得視頻數(shù)據(jù)和音頻數(shù)據(jù)的方式,達(dá)到降低多媒體文件播放的復(fù)雜度、并節(jié)約內(nèi)存占用資源的目的。本發(fā)明實(shí)施例所提供的多媒體文件的播放裝置及封裝裝置可以為設(shè)備上的特定硬件或者安裝于設(shè)備上的軟件或固件等。本發(fā)明實(shí)施例所提供的裝置,其實(shí)現(xiàn)原理及產(chǎn)生的技術(shù)效果和前述方法實(shí)施例相同,為簡要描述,裝置實(shí)施例部分未提及之處,可參考前述方法實(shí)施例中相應(yīng)內(nèi)容。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,前述描述的系統(tǒng)、裝置和單元的具體工作過程,均可以參考上述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。本
技術(shù)領(lǐng)域:
:技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說明書中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個或多個其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”到另一元件時,它可以直接連接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”可以包括無線連接或無線耦接。這里使用的措辭“和/或”包括一個或更多個相關(guān)聯(lián)的列出項(xiàng)的全部或任一單元和全部組合。本
技術(shù)領(lǐng)域:
:技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(包括技術(shù)術(shù)語和科學(xué)術(shù)語),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語,應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會用理想化或過于正式的含義來解釋。本
技術(shù)領(lǐng)域:
:技術(shù)人員可以理解,本發(fā)明包括涉及用于執(zhí)行本申請中所述操作中的一項(xiàng)或多項(xiàng)的設(shè)備。這些設(shè)備可以為所需的目的而專門設(shè)計(jì)和制造,或者也可以包括通用計(jì)算機(jī)中的已知設(shè)備。這些設(shè)備具有存儲在其內(nèi)的計(jì)算機(jī)程序,這些計(jì)算機(jī)程序選擇性地激活或重構(gòu)。這樣的計(jì)算機(jī)程序可以被存儲在設(shè)備(例如,計(jì)算機(jī))可讀介質(zhì)中或者存儲在適于存儲電子指令并分別耦聯(lián)到總線的任何類型的介質(zhì)中,所述計(jì)算機(jī)可讀介質(zhì)包括但不限于任何類型的盤(包括軟盤、硬盤、光盤、cd-rom、和磁光盤)、rom(read-onlymemory,只讀存儲器)、ram(randomaccessmemory,隨即存儲器)、eprom(erasableprogrammableread-onlymemory,可擦寫可編程只讀存儲器)、eeprom(electricallyerasableprogrammableread-onlymemory,電可擦可編程只讀存儲器)、閃存、磁性卡片或光線卡片。也就是,可讀介質(zhì)包括由設(shè)備(例如,計(jì)算機(jī))以能夠讀的形式存儲或傳輸信息的任何介質(zhì)。本
技術(shù)領(lǐng)域:
:技術(shù)人員可以理解,可以用計(jì)算機(jī)程序指令來實(shí)現(xiàn)這些結(jié)構(gòu)圖和/或框圖和/或流圖中的每個框以及這些結(jié)構(gòu)圖和/或框圖和/或流圖中的框的組合。本
技術(shù)領(lǐng)域:
:技術(shù)人員可以理解,可以將這些計(jì)算機(jī)程序指令提供給通用計(jì)算機(jī)、專業(yè)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來實(shí)現(xiàn),從而通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理方法的處理器來執(zhí)行本發(fā)明公開的結(jié)構(gòu)圖和/或框圖和/或流圖的框或多個框中指定的方案。本
技術(shù)領(lǐng)域:
:技術(shù)人員可以理解,本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的步驟、措施、方案可以被交替、更改、組合或刪除。進(jìn)一步地,具有本發(fā)明中已經(jīng)討論過的各種操作、方法、流程中的其他步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。進(jìn)一步地,現(xiàn)有技術(shù)中的具有與本發(fā)明中公開的各種操作、方法、流程中的步驟、措施、方案也可以被交替、更改、重排、分解、組合或刪除。以上所述僅是本發(fā)明的部分實(shí)施方式,應(yīng)當(dāng)指出,對于本
技術(shù)領(lǐng)域:
:的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。當(dāng)前第1頁12當(dāng)前第1頁12