一種變比特率mp3播放時間獲取方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種變比特率MP3播放時間獲取方法及系統(tǒng)。
【背景技術(shù)】
[0002]目前,MP3文件在播放時,需要準(zhǔn)確獲取MP3文件實時的播放時間。
[0003]對于恒定比特率(CBR)MP3文件播放時間計算比較簡單,通過播放時的文件指針位置與總文件大小的比值再乘以總播放時間即可得到。但是,對于變比特率(VBR)MP3文件在播放時,由于每幀播放時間相同但每幀大小不同,所以會造成文件指針移動忽快忽慢,如果再用CBR的方法獲取實時的播放時間得到的播放時間會時快時慢,非常不準(zhǔn)確,尤其對于比特率變化比較大的MP3文件這種現(xiàn)象會更明顯,這就嚴重影響了用戶使用,給用戶帶來不便。
【發(fā)明內(nèi)容】
[0004]有鑒于此,有必要針對上述變比特率MP3文件獲取實時播放時間忽快忽慢不準(zhǔn)確的問題,提供一種變比特率MP3播放時間獲取方法及系統(tǒng)。
[0005]本發(fā)明提供一種變比特率MP3播放時間獲取方法,包括如下步驟:
[0006]SlO:在變比特率MP3文件播放時,獲取變比特率MP3文件的總幀數(shù)和總播放時間;
[0007]S20:對應(yīng)整個變比特率MP3文件的N個位置設(shè)置N個索引成員,每個索引成員存儲所處位置和所處位置處的播放時間;
[0008]S30:在進行播放時,實時獲取文件指針?biāo)幍奈恢?,確定文件指針處在哪兩個索引成員之間;獲取前一個索引成員存儲的播放時間,并且獲取文件指針與前一個索引成員之間的幀數(shù),通過存儲的播放時間加上幀數(shù)對應(yīng)的時間來確定實時的播放時間。
[0009]優(yōu)選的,所述步驟SlO具體為:在變比特率MP3文件播放時,解析該文件的文件頭,由文件頭中獲取該文件的總幀數(shù)和總播放時間。
[0010]優(yōu)選的,所述步驟S20具體為:對應(yīng)整個變比特率MP3文件的N個位置設(shè)置N個索引成員,且相鄰兩個索引成員之間時間間隔相同。
[0011]本發(fā)明還提供一種變比特率MP3播放時間獲取系統(tǒng),包括
[0012]參數(shù)獲取單元,在變比特率MP3文件播放時,獲取變比特率MP3文件的總幀數(shù)和總播放時間;
[0013]索引設(shè)置單元,對應(yīng)整個變比特率MP3文件的N個位置設(shè)置N個索引成員,每個索引成員存儲所處位置和所處位置處的播放時間;
[0014]播放時間獲取單元,在進行播放時,實時獲取文件指針?biāo)幍奈恢?,確定文件指針處在哪兩個索引成員之間;獲取前一個索引成員存儲的播放時間,并且獲取文件指針與前一個索引成員之間的幀數(shù),通過存儲的播放時間加上幀數(shù)對應(yīng)的時間來確定實時的播放時間。
[0015]優(yōu)選的,所述參數(shù)獲取單元在變比特率MP3文件播放時,解析該文件的文件頭,由文件頭中獲取該文件的總幀數(shù)和總播放時間。
[0016]優(yōu)選的,所述索引設(shè)置單元對應(yīng)整個變比特率MP3文件的N個位置設(shè)置N個索引成員,且相鄰兩個索引成員之間時間間隔相同。
[0017]本發(fā)明變比特率MP3播放時間獲取方法及系統(tǒng),對應(yīng)整個變比特率MP3文件的N個位置設(shè)置N個索引成員,每個索引成員存儲所處位置處的播放時間,在進行播放時,獲取文件指針前一個索引成員存儲的播放時間加上與前一個索引成員之間的幀數(shù)對應(yīng)的時間即可確定實時的播放時間,從而既保證了播放時間的準(zhǔn)確性,又大大提高了效率,保證了用戶使用,給用戶帶來極大便利。
【附圖說明】
[0018]圖1是一個實施例中的變比特率MP3播放時間獲取方法的流程圖。
【具體實施方式】
[0019]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0020]圖1是一個實施例中的變比特率MP3播放時間獲取方法的流程圖,如圖1所示,該方法包括如下步驟:
[0021]SlO:在變比特率MP3文件播放時,獲取變比特率MP3文件的總幀數(shù)和總播放時間。
[0022]在變比特率MP3文件進行播放時,由于是變比特率的,每幀播放時間相同,但是每幀大小不同,文件指針移動會跟隨每幀的大小忽快忽慢,造成播放時間不準(zhǔn)確。故,首先需要獲取該MP3文件的總幀數(shù)和總播放時間(總播放時間=總幀數(shù)*每幀的播放時間,每幀的播放時間是固定的)。
[0023]在進一步的方式中,該步驟具體為:在變比特率MP3文件播放時,解析該文件的文件頭,由文件頭中獲取該文件的總幀數(shù)和總播放時間。
[0024]S20:對應(yīng)整個變比特率MP3文件的N個位置設(shè)置N個索引成員,每個索引成員存儲所處位置和所處位置處的播放時間。
[0025]由于變比特率MP3文件每一幀的播放時間相同,通過獲取已經(jīng)播放過的幀數(shù)能夠準(zhǔn)確獲取實時的播放時間。但是,通常一個MP3文件包括大量的幀數(shù),如果每次都去讀取已經(jīng)播放的幀數(shù)將耗費大量的時間,導(dǎo)致實時的播放時間無法及時獲取,不能進行顯示。故在該實施例中,對應(yīng)整個變比特率MP3文件的N個位置設(shè)置N個索引成員,即將整個MP3文件所有幀數(shù)分成N份產(chǎn)生N個位置,在每個位置處設(shè)置一個索引成員,每個索引成員根據(jù)所處的位置前的幀數(shù)能夠獲取所處位置處的播放時間并進行存儲。N根據(jù)MP3文件的幀數(shù)進行調(diào)整,幀數(shù)越大則N越多。
[0026]在進一步的方式中,該步驟具體為:對應(yīng)整個變比特率MP3文件的N個位置設(shè)置N個索引成員,且相鄰兩個索引成員之間時間間隔相同。即將整個MP3文件的幀數(shù)均分為N份,這樣利于獲取實時的播放時間。
[0027]S30:在進行播放時,實時獲取文件指針?biāo)幍奈恢?,確定文件指針處在哪兩個索引成員之間;獲取前一個索引成員存儲的播放時間,并且獲取文件指針與前一個索引成員之間的幀數(shù),通過存儲的播放時間加上幀數(shù)對應(yīng)的時間來確定實時的播放時間。
[0028]對整個MP3文件設(shè)置N個索引成員之后,在MP3文件進行播放時,實時獲取文件指針?biāo)幍奈恢?,然后確定文件指標(biāo)在哪兩個索引成員之間,然后根據(jù)前一個索引成員存儲的播放時間以及與前一個索引成員之間的幀數(shù)來確定實時的播放時間,這樣只需要計算與前一個索引成員之間的少量幀數(shù)即可準(zhǔn)確獲取實時的播放時間,從而既保證了播放時間的準(zhǔn)確性,又大大提高了效率,保證了用戶使用,給用戶帶來極大便利。
[0029]該方法,對應(yīng)整個變比特率MP3文件的N個位置設(shè)置N個索引成員,每個索引成員存儲所處位置處的播放時間,在進行播放時,獲取文件指針前一個索引成員存儲