一種在vbr格式的mp3文件中實現定位的方法
【技術領域】
[0001]本發明涉及一種在VBR格式的MP3文件中實現定位的方法。
【背景技術】
[0002]MP3是利用音頻壓縮技術,將聲音用10:1-12:1的壓縮率壓縮成容量較小的文件,可以保持較好的音質。由于這種壓縮方式的全稱叫MPFE auto layer所以人們把它簡稱為MP3。MP3文件由一系列幀(Frame)組成,每幀包括幀頭和實體數據兩部分,每個中貞的巾貞頭包含該巾貞的比特率(bitrate)、釆樣率(samplingrate)等信息。因而,可根據如下公式算出每個巾貞的長度(單位為字節,framesize表示):framesize=144*bitrate/samplingrate+padding bit.根據比特率可將MP3文件分為固定比特率(CBR)和VBR。在播放MP文件時,一般是通過時間來確定起始播放位置,同時還要返回給用戶一些關于此MP3的信息,如總播放時間、釆樣率、平均比特率等等。在CBR格式的MP3文件中,每幀的數據長度固定,只需用第一幀的幀頭信息就可通過計算幀的個數確定所需播放的目標位里與所需返回信息.而在VBR格式的MP3文件中,由于比特率會發生變化,導致各幀的數據長度不固定,只有將文件中的所有幀的幀頭信息解析一遍,才可能實現準確定位以及返回準確信息。例如,為在VBR格式的MP3文件中實現搜尋(Seek)功能,目前一般是通過下述方式實現的:在載入(load)文件時,要將整個文件瀏覽一遍,找到每幀的比特率,由比特率與釆樣率定位下一幀的位置,如此往復,算出總時間、平均比特率等返回為用戶信息;進行seek播放時,依然需要瀏覽文件,每過一幀算出當前時間并將其與seek時間比較,如果大于或等于seek時間,則表明找到seek位置。這種方法盡管具有定位準確的優點,但load文件與seek花費時間過長,這在計算處理性能較差的環境中會表現為播放前較長的等待時間,這是用戶不能接受的。
[0003]此外,盡管有一些VBR格式的MP3文件在第一幀(first frame)中包含幀數、文件長度、幀索引表(TOC)等數據;照理說,這些數據可用來簡化和加速在MP3文件中的定位,但像這種MP3文件中包括的總幀數、文件長度、幀索引表(TOC)等數據通常很不準確,缺乏實用性。而且,在實踐中,大部分VBR格式的MP3文件并不包含這樣的“first frame”。
【發明內容】
[0004]為解決上述現有的缺點,本發明的主要目的在于提供一種實用的在VBR格式的MP3文件中實現定位的方法,在滿足一定的定位準確的同時,減輕計算負擔,降低對計算處理能力的要求,縮短實現定位所需要的時間。
[0005]為達成以上所述的目的,本發明的一種在VBR格式的MP3文件中實現定位的方法采取如下技術方案:
一種在VBR格式的MP3文件中實現定位的方法,包括步驟,
(a)選取所述MP3文件中的若干幀; (b)計算所述若干幀的至少一個參數,所述至少一個參數是平均幀長度和/或平均比特率;
(c)至少基于所述至少一個參數中的一個參數在所述文件MP3中定位。
[0006]所述步驟(b)的所述至少一個參數是平均幀長度,步驟(C)基于平均幀長度和每幀的播放時間在所述從MP3文件中定位,步驟(b)的所述至少一個參數包括平均比特率,步驟(c)基于所述至少一個參數在所述MP3文件中定位,步驟(a)的所述選取為平均選取或隨機選取,步驟(b)所述至少一個參數是平均幀長度,步驟(c)基于平均幀長度和每幀的播放時間在所述MP3文件中確定所搜尋的目標位置。
[0007]采用如上技術方案的本發明,具有如下有益效果:
本發明在滿足一定的定位準確的同時,減輕計算負擔,降低對計算處理能力的要求,縮短實現定位所需要的時間。
【具體實施方式】
[0008]下面將通過本發明的一個實施方案對其進行詳細描述,僅出于示例的目的。
[0009]在該實施方案中,為了在VBR格式的MP3文件中實現定位,第一步是從MP3文件中選取若干幀。需要說明的是,這里的“定位” 一般指通過時間來確定MP3文件中的位置。實際需要定位的情形包括但不限于:實現seek功能時、在暫停(pause)狀態下播放時等。
[0010]優選地,巾貞的選取方式和數量根據MP3文件的特性(如pop, jazz, classic等等)確定。在一個特定實施例中,可以平均選取的方式選取幀,例如將整首MP3文件平均分成若干段,例如8段或16段,將根據MP3的幀格式找到的每段第一幀作為選取幀。在另一特定實施例中,可以隨機選取的方式選取幀,例如,先確定要選取的幀數,然后借助一個隨機數發生器進行隨機選取。
[0011]第二步,計算所述若干幀的平均幀長度和/或平均比特率。
[0012]下面具體說明平均幀長度的計算方法。對選取的若干幀,先分別計算所述若干幀中每幀的幀長度。對MP3文件而言,當幀長度以字節為單位時,其計算公式為framesize=144*bitrate/samplingrate+padding bit,
根據計算結果即可容易地得到所述平均幀長度,
類似地,可容易地根據所述若干幀各自的比特率計算出所述若干幀的平均比特率。
[0013]上面提到的兩個步驟可在例如load文件時進行,為實現定位作準備。
[0014]最后,基于上一步所計算的參數在MP3文件中定位。在一個實施例中,可在第二步中計算所述若干巾貞的平均巾貞長度。接下來定位時,例如,實現做MP3播放的seek功能時,通常還需要用到每巾貞的播放時間。可根據釆樣率確定每巾貞的播放時間(以frametime表示),當播放時間以毫秒為單位時,其計算公式為
Frametime=Sampleperframe/sampI ingrate,
其中sampIeperframe為每巾貞的樣本數,根據MP3所屬的是MPEGl還是MPEG2分別為1152和576 ;或者,可先用上面提到的方法計算出所述若干幀的平均比特率,再通過所述若干幀的平均幀長度和平均比特率計算每幀的播放時間,當平均幀長度以字節為單位時,計算公式為:每幀的播放時間=平均幀長度X8/平均比特率。每幀的播放時間可在例如load文件計算,在定位時進行調用。然后,根據每幀的播放時間和具體的定位要求,如seek的時間,可計算出幀數;再根據所述平均幀長度和計算出的幀數,可確定定位的目標位置,如seek的目標位置:Seek的目標位置=seek時間/每幀的播放時間*平均幀長度。
[0015]在另一實施例中,可在第二步中計算所述若干幀的平均比特率。之后,需要定位時,例如,實現MP3播放的seek功能時,可通過多種途徑確定目標位置。例如,一種途徑是根椐如下公式確定seek的目標位置(以字節為單位):seek的目標位置=seek時間*平均比特率/8 ;另一種途徑是先根據采樣率和所述若干幀的平均比特率計算所述若干幀的平均幀長度,然后以前面提到的方法確定目標位置.本領域的技術人員應該理解的是,還可使用其它方式,這里不一一列舉。
[0016]在又一實施例中,可在第二步中計算所述若干幀的平均幀長度和平均比特率。定位時,可結合具體的定位條件,根據這兩個參數中的一個或兩個方便地確定定位的目標位置,具體方式可參照前述內容,這里不再詳述。
[0017]在上面的某些實施例中,計算所述若千幀的平均比特率的一個附加優點是可作為返回的用戶信息供顯示。本發明利用了近似處理,在保證一定準確性的同時減輕了計算負擔,當用于那些計算能力有限的設備中時,這一優點尤其明顯。本發明適合用于MP3播放器以及具有MP3播放功能的便攜式設備中,如手機等。像這種便攜式設備一般體積較小,因而能提供的數據處理能力有限,利用現有的VBR處理方法進行定位時往往需要較長的時間,利用本發明能改善這一點。此外,在其他一些具有MP3播放功能的電子設備中,如在那些因考慮到成本而計算能力有限的電子設備中,也可以使用本發明。
[0018]根據本發明的原則和教導,本領域的技術人員將可對這里公開的實施方案和要素進行改變而不脫離本發明的范圍。因此,本發明的范圍不應該由示例實施方案確定,而應該由那些會被允許的權利要求及它們的法定等同物確定。
【主權項】
1.一種在VBR格式的MP3文件中實現定位的方法,包括步驟, (a)選取所述MP3文件中的若干幀; (b)計算所述若干幀的至少一個參數,所述至少一個參數是平均幀長度和/或平均比特率; (c)至少基于所述至少一個參數中的一個參數在所述文件MP3中定位。2.根據權利要求1所述的一種在VBR格式的MP3文件中實現定位的方法,其特征在于,所述步驟(b)的所述至少一個參數是平均幀長度,步驟(C)基于平均幀長度和每幀的播放時間在所述從MP3文件中定位,步驟(b)的所述至少一個參數包括平均比特率,步驟(c)基于所述至少一個參數在所述MP3文件中定位,步驟(a)的所述選取為平均選取或隨機選取,步驟(b)所述至少一個參數是平均幀長度,步驟(C)基于平均幀長度和每幀的播放時間在所述MP3文件中確定所搜尋的目標位置。
【專利摘要】本發明公開一種在VBR格式的MP3文件中實現定位的方法,其特征在于,包括步驟,選取所述MP3文件中的若干幀,計算所述若干幀的至少一個參數,所述至少一個參數是平均幀長度和/或平均比特率,至少基于所述至少一個參數中的一個參數在所述文件MP3中定位。本發明在滿足一定的定位準確的同時,減輕計算負擔,降低對計算處理能力的要求,縮短實現定位所需要的時間。
【IPC分類】G06F3/041
【公開號】CN105302352
【申請號】CN201410368824
【發明人】袁博, 馮永強
【申請人】西安司坤電子科技有限公司
【公開日】2016年2月3日
【申請日】2014年7月30日