專利名稱:音頻文件的讀取方法和讀取裝置的制作方法
技術領域:
本發(fā)明涉及智能設備的音頻處理技術,尤其涉及一種音頻文件的讀取方法和讀取裝置。
背景技術:
目前的智能設備,例如計算機、手機、個人數(shù)字處理器(PDA),通常都安裝有各種應用處理程序,例如供娛樂的游戲程序,這些程序在處理過程中可能需要播放聲音。聲音數(shù)據(jù)一般存儲在音頻文件中,該音頻文件是指某類二進制文件,保存的內容是聲音數(shù)據(jù)。根據(jù)需要,音頻文件保存時的格式會有不同,例如有些場合需要存儲空間占用少的文件格式,而有些場合需要音質較好的文件格式,目前已經(jīng)有許多成熟的音頻文件格式,例如wav、mp3、midi、ogg等。其中Wav格式的文件尺寸大,音質好,適用于比較短的音效;midi文件尺寸非常小,一般只有wav的十分之一,但是音質較差;ogg文件由于進行了壓縮,所以尺寸較小。在播放聲音時需要讀取音頻文件,對不同格式類型的音頻文件需要用不同的讀取算法進行讀取,讀取算法和文件類型需一一對應。
目前的一種讀取音頻文件的方法為在智能設備的處理程序中只編寫某種特定類型的音頻讀取算法,在設計處理程序的過程中,如果需要播放聲音,則將對應的音頻文件存儲成該特定的音頻格式,例如wav,或者在使用所述處理程序前將其他格式的音頻文件轉換成所述特定的格式。這種處理方式的缺點為由于限制只能使用某一種音頻文件格式,而不同的音頻格式有自身的優(yōu)缺點,適合在不同場合使用,該處理方法因此缺乏靈活性。
為了克服上述缺點,目前又有一種讀取音頻文件的方法直接在處理程序中需要使用音頻文件的位置編寫所對應類型的讀取算法,當需要支持一種新的音頻格式時,修改上述位置的讀取算法。該方法雖然具備一定的靈活性,但是,增加了處理程序的復雜度,且以后的修改維護工作量也很大,成本較高,且容易出現(xiàn)錯誤,不符合模塊化。
發(fā)明內容
有鑒于此,本發(fā)明的主要目的在于提供一種音頻文件的讀取方法,在靈活讀取音頻文件的同時,降低處理程序的復雜度和成本。
本發(fā)明的另一目的在于提供一種音頻文件的讀取裝置,同樣可以在靈活讀取音頻文件的同時,降低處理程序的復雜度和成本。
為了實現(xiàn)上述發(fā)明目的,本發(fā)明的主要技術方案為一種音頻文件的讀取裝置,該裝置包括至少一個讀取模塊,用于存儲特定格式類型音頻文件的讀取算法;讀取模塊配置單元,用于配置所述讀取模塊的存儲地址;讀取管理器,與所述讀取模塊和讀取模塊配置單元相對獨立設置,用于在啟動后從讀取模塊配置單元獲取所有讀取模塊的地址并加載所述讀取模塊,利用所加載的讀取模塊中的讀取算法讀取對應格式類型的音頻文件。
優(yōu)選的,所述讀取管理器設置在需讀取音頻文件的處理單元中;所述讀取模塊和讀取模塊配置單元設置在所述處理單元外。
優(yōu)選的,所述處理單元在啟動時觸發(fā)所述讀取管理器啟動,從讀取模塊配置單元獲取讀取模塊的地址并加載所述讀取模塊;所述處理單元在結束處理時觸發(fā)所述讀取管理器釋放所加載的讀取模塊。
優(yōu)選的,所述處理單元在使用音頻文件時將音頻文件的類型和地址發(fā)送給所述讀取管理器,讀取管理器在判定所加載的讀取模塊中存在支持所述格式類型的讀取算法的情況下,利用所加載讀取模塊中的讀取算法從所述的地址讀取該音頻文件。
優(yōu)選的,所述一種讀取模塊中對應存儲一種格式類型的讀取算法。
一種音頻文件的讀取方法,該方法包括A、存儲至少一種格式類型的音頻文件的讀取算法;B、將讀取算法的存儲地址配置在配置文件中;C、從所述配置文件中獲取所述讀取算法的存儲地址并加載所述讀取算法,利用所加載的讀取算法讀取對應格式類型的音頻文件。
優(yōu)選地,該方法適用于需讀取音頻文件的智能設備處理程序;所述步驟A和步驟B獨立于所述處理程序執(zhí)行;所述步驟C在所述處理程序的運行過程中執(zhí)行。
優(yōu)選地,所述從配置文件中獲取讀取算法的存儲地址并加載所述讀取算法的操作在所述處理程序啟動時執(zhí)行;當所述處理程序結束時,進一步釋放所加載的讀取算法。
優(yōu)選地,所述步驟C中利用所加載的讀取算法讀取對應格式類型的音頻文件的具體方式為C1、所述處理程序在需要讀取音頻文件時提供該音頻文件的格式類型和地址信息;C2、如果所加載的讀取算法中存在支持所述格式類型的讀取算法,則調用該讀取算法從所述音頻文件的地址處讀取該音頻文件。
優(yōu)選地,在配置文件中按照使用頻率優(yōu)先配置使用頻率高的讀取算法的地址。
本發(fā)明中的配置單元以及包括讀取算法的讀取模塊設置在所述智能設備的處理單元(即處理程序)外,在處理程序啟動后將所述讀取算法進行加載,利用加載的讀取算法讀取對應類型的音頻文件。這樣,用戶在不修改處理程序的前提下,可以任意擴展或刪減不同音頻類型對應的讀取算法(讀取模塊),只需在對應的配置文件中相應地增加或刪除對應讀取模塊的地址即可。當處理程序啟動后,即可將經(jīng)過增加或刪減處理后的各個讀取算法(讀取模塊)加載,從而非常靈活地動態(tài)支持多種類型的音頻文件;由于在編寫智能設備的處理程序時不固定添加讀取算法,而是直接根據(jù)加載的算法讀取音頻文件,且不必對處理程序進行后期的修改和維護,因此降低了游戲處理程序的復雜度,降低程序編寫和維護的工作量,成本較低。
圖1為本發(fā)明所述音頻文件讀取裝置的結構圖;圖2為所述讀取管理器啟動時加載讀取模塊的流程圖;圖3為本發(fā)明所述方法的流程圖。
具體實施例方式
下面通過具體實施例和附圖對本發(fā)明做進一步詳細說明。
本發(fā)明所述的智能設備包括計算機、手機、PDA等,本發(fā)明所適用的處理程序為需讀取音頻文件進行放音的處理程序,例如電子游戲的主處理程序等等。本文的實施例以本發(fā)明應用在智能設備的游戲程序中為例對本發(fā)明進行說明。
圖1為本發(fā)明所述音頻文件讀取裝置的結構圖。參見圖1,所述游戲主處理單元即游戲的主程序,主要用于實現(xiàn)游戲邏輯、顯示游戲場景等功能,該游戲主處理單元會使用各種格式的音頻文件。本發(fā)明所述的音頻文件讀取裝置包括讀取模塊配置單元、讀取管理器、以及至少一個讀取模塊。其中所述讀取管理器設置在游戲處理單元中,與所述游戲主處理單元相同,屬于游戲處理單元的一部分。所述讀取模塊和讀取配置單元則獨立設置在所述游戲處理單元外。
讀取模塊用于存儲音頻文件的讀取算法。例如此實施例中包括wav讀取模塊(存儲有wav讀取算法)、mp3讀取模塊(對應存儲有mp3讀取算法)、以及midi讀取模塊(對應存儲有midi讀取算法)三個存儲有不同格式類型讀取算法的讀取模塊。所述一種讀取模塊中對應存儲一種格式類型的讀取算法。本發(fā)明側重在如何動態(tài)支持多種音頻格式類型,對于某種具體格式的讀取算法不再介紹。
讀取模塊配置單元用于配置所述讀取模塊的存儲地址。本實施例中該讀取模塊配置單元為一配置文件,該配置文件是開放的,可以根據(jù)讀取模塊的增減而修改其中的配置地址。本實施例的讀取模塊配置文件使用xml格式,其中的配置內容舉例如下<?xml version=″1.0″?>
<ImgLoader Number=″3″>
<Loader ExtName=″wav″Dll=″WavLoader.dll″Describe=″加載wav文件″/>
<Loader ExtName=″mp3″Dll=″Mp3Loader.dll″Describe=″加載mp3文件″/>
<Loader ExtName=″midi″Dll=″MidiLoader.dll″Describe=″加載midi文件″/>
</ImgLoader>
其中,該文件描述了圖1所示的結構圖中一共三種音頻文件讀取算法的地址信息,即“wav”格式對應的讀取模塊的地址是“WavLoader.dll”;“mp3”格式對應的讀取模塊的地址是“Mp3Loader.dll”;“midi”格式對應的讀取模塊的地址是“MidiLoader.dll”。
在配置文件中,將經(jīng)常使用的讀取模塊的地址放在配置文件前部分,即按照使用頻率優(yōu)先配置使用頻率高的讀取算法的地址,這樣可以減少搜索的時間,從而實現(xiàn)動態(tài)優(yōu)化。
所述讀取管理器負責管理每種音頻文件格式的具體讀取模塊,與所述讀取模塊和讀取模塊配置單元相對獨立設置,可以設置在游戲處理程序中,當游戲主處理程序需要裝載音頻文件時,則調用該讀取管理器來實現(xiàn)讀取音頻文件。讀取管理器從所述配置文件獲取讀取模塊的地址并加載所述讀取模塊,它通過從配置文件中一個接一個地獲取讀取模塊的地址,獲知當前有哪些“讀取模塊”可用。
圖2為所述讀取管理器啟動時加載讀取模塊的流程圖。參見圖2,該流程包括步驟201、游戲主處理單元啟動時觸發(fā)讀取管理器啟動,讀取管理器啟動時,先從所述配置文件中順序讀取所述讀取模塊的地址信息。
步驟202、根據(jù)所讀取的地址加載對應格式的讀取模塊,具體地,可以將讀取模塊的內容加載到本讀取管理器的緩存區(qū)域。
步驟203、判斷是否加載完所述配置文件中所示的所有的讀取模塊,是則結束所述讀取管理器的啟動過程;否則,執(zhí)行步驟204。
步驟204、根據(jù)下一個地址加載下一個讀取模塊,返回步驟203。
所述游戲主處理單元可在啟動時觸發(fā)所述讀取管理器從讀取模塊配置單元獲取讀取模塊的地址并加載所述讀取模塊到緩沖區(qū)域;當所述游戲主處理單元在結束處理時,還會觸發(fā)所述讀取管理器釋放所述緩存區(qū)域中所加載的讀取模塊信息。
在加載完所述讀取模塊后,所述讀取管理器利用所加載的讀取模塊中的讀取算法讀取對應格式類型的音頻文件,具體為所述游戲主處理單元在使用音頻文件時將音頻文件的類型和地址信息發(fā)送給所述讀取管理器(一般地所述類型和地址信息包括在音頻文件的路徑文件名中,讀取管理器可以根據(jù)路徑文件名獲知該音頻文件的類型和地址,例如輸出該音頻文件的路徑和文件名d//music1.mp3,則表示該文件為mp3類型,且地址信息為d//music1.mp3),讀取管理器判斷所加載的讀取模塊中是否存在一個讀取模塊可支持所述格式類型,如果是,則利用該讀取模塊中的讀取算法從所述的地址讀取該音頻文件,之后可將讀取的音頻內容信息返回給游戲主處理單元;否則,判定讀取失敗。
本發(fā)明中的配置單元以及包括讀取算法的讀取模塊設置在所述智能設備的處理單元(即處理程序)外,讀取模塊通過讀取管理器與“游戲主處理程序”進行信息交互,從而實現(xiàn)音頻文件的自動識別。而所述讀取管理器與所述游戲主處理程序設置在游戲的處理單元中。這樣,用戶在不修改游戲處理程序的前提下,可以任意擴展或刪減不同音頻類型對應的讀取模塊,只需在讀取模塊配置文件中相應地增加或刪除對應讀取模塊的地址即可。當讀取管理器啟動時,即可將經(jīng)過增加或刪減處理后的各個讀取模塊加載,從而非常靈活地動態(tài)支持多種類型的音頻文件;由于在游戲處理程序中不固定添加讀取算法,且不必對游戲處理程序進行后期的修改和維護,因此降低了游戲處理程序的復雜度,降低程序編寫和維護的工作量,成本較低。
例如,當增加對一種新的音頻文件格式(以“ogg”音頻格式為例)的支持時,可加入包括該種格式類型讀取算法的讀取模塊,并在所述配置文件中加入一項信息<Loader ExtName=″ogg″Dll=″OggLoader.dll″Describe=″加載ogg文件″/>
該項信息中描述了當遇見ogg為擴展名時,使用地址為“OggLoader.dll”的這個模塊來讀取。
這樣所述讀取管理器可以加載支持ogg類型的讀取算法,并在游戲主處理程序需要讀取ogg音頻文件時采用該算法進行讀取。
圖3為本發(fā)明所述方法的流程圖。參見圖3,本發(fā)明的核心技術方案包括步驟301、存儲至少一種格式類型的音頻文件的讀取算法。
步驟302、將讀取算法的存儲地址配置在配置文件中。
所述步驟301和步驟302獨立于所述游戲處理程序執(zhí)行。
步驟303、從所述配置文件中獲取所述讀取算法的存儲地址并加載所述讀取算法,利用所加載的讀取算法讀取對應格式類型的音頻文件。
本步驟303在所述游戲處理程序的運行過程中執(zhí)行。其中,所述從配置文件中獲取讀取算法的存儲地址并加載所述讀取算法的操作在所述游戲處理程序啟動時執(zhí)行,將所述讀取算法加載在智能設備的緩沖區(qū)內;當所述游戲處理程序結束時,進一步從所述緩沖區(qū)中釋放所加載的讀取算法。
在步驟303中,當所述游戲主處理程序在需要讀取某音頻文件時則將該音頻文件的格式類型和地址信息傳遞給所述讀取管理器,例如傳遞該音頻文件的路徑和文件名d//music1.mp3,則表示該文件為mp3類型,且地址信息為d//music1.mp3;接著所述讀取管理器判斷所加載的讀取算法中是否存在支持所述格式類型(例如mp3)的讀取算法,是則調用該讀取算法從所述音頻文件的地址處讀取該音頻文件,否則,讀取失敗。
另外,作為一種優(yōu)選方案,在步驟302中,可按照使用頻率優(yōu)先配置使用頻率高的讀取算法的地址,即將經(jīng)常使用的讀取算法放在配置文件的優(yōu)先位置,這樣可以減少搜索時間,實現(xiàn)動態(tài)優(yōu)化。
以上所述,僅為本發(fā)明較佳的具體實施方式
,但本發(fā)明的保護范圍并不局限于此,任何熟悉該技術的人在本發(fā)明所揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。
權利要求
1.一種音頻文件的讀取裝置,其特征在于,該裝置包括至少一個讀取模塊,用于存儲特定格式類型音頻文件的讀取算法;讀取模塊配置單元,用于配置所述讀取模塊的存儲地址;讀取管理器,與所述讀取模塊和讀取模塊配置單元相對獨立設置,用于在啟動后從讀取模塊配置單元獲取所有讀取模塊的地址并加載所述讀取模塊,利用所加載的讀取模塊中的讀取算法讀取對應格式類型的音頻文件。
2.根據(jù)權利要求1所述的裝置,其特征在于,所述讀取管理器設置在需讀取音頻文件的處理單元中;所述讀取模塊和讀取模塊配置單元設置在所述處理單元外。
3.根據(jù)權利要求2所述的裝置,其特征在于,所述處理單元在啟動時觸發(fā)所述讀取管理器啟動,從讀取模塊配置單元獲取讀取模塊的地址并加載所述讀取模塊;所述處理單元在結束處理時觸發(fā)所述讀取管理器釋放所加載的讀取模塊。
4.根據(jù)權利要求2所述的裝置,其特征在于,所述處理單元在使用音頻文件時將音頻文件的類型和地址發(fā)送給所述讀取管理器,讀取管理器在判定所加載的讀取模塊中存在支持所述格式類型的讀取算法的情況下,利用所加載讀取模塊中的讀取算法從所述的地址讀取該音頻文件。
5.根據(jù)權利要求1至4任一項所述的裝置,其特征在于,所述一種讀取模塊中對應存儲一種格式類型的讀取算法。
6.一種音頻文件的讀取方法,其特征在于,該方法包括A、存儲至少一種格式類型的音頻文件的讀取算法;B、將讀取算法的存儲地址配置在配置文件中;C、從所述配置文件中獲取所述讀取算法的存儲地址并加載所述讀取算法,利用所加載的讀取算法讀取對應格式類型的音頻文件。
7.根據(jù)權利要求6所述的方法,其特征在于,該方法適用于需讀取音頻文件的智能設備處理程序;所述步驟A和步驟B獨立于所述處理程序執(zhí)行;所述步驟C在所述處理程序的運行過程中執(zhí)行。
8.根據(jù)權利要求7所述的方法,其特征在于,所述從配置文件中獲取讀取算法的存儲地址并加載所述讀取算法的操作在所述處理程序啟動時執(zhí)行;當所述處理程序結束時,進一步釋放所加載的讀取算法。
9.根據(jù)權利要求7所述的方法,其特征在于,所述步驟C中利用所加載的讀取算法讀取對應格式類型的音頻文件的具體方式為C1、所述處理程序在需要讀取音頻文件時提供該音頻文件的格式類型和地址信息;C2、如果所加載的讀取算法中存在支持所述格式類型的讀取算法,則調用該讀取算法從所述音頻文件的地址處讀取該音頻文件。
10.根據(jù)權利要求6所述的方法,其特征在于,在配置文件中按照使用頻率優(yōu)先配置使用頻率高的讀取算法的地址。
全文摘要
本發(fā)明公開了一種音頻文件的讀取裝置和方法,裝置包括至少一個存儲音頻文件讀取算法的讀取模塊,用于配置讀取模塊存儲地址信息的讀取模塊配置單元,以及用于啟動后從讀取模塊配置單元獲取讀取模塊的地址并加載所述讀取模塊、并利用所加載的讀取模塊中的讀取算法讀取對應格式類型的音頻文件的讀取管理器。方法包括A、存儲至少一種所述讀取算法;B、將讀取算法的存儲地址配置在配置文件中;C、從所述配置文件中獲取所述讀取算法的存儲地址并加載所述讀取算法,利用所加載的讀取算法讀取對應格式類型的音頻文件。本發(fā)明可以在靈活讀取音頻文件的同時,降低應用處理程序的復雜度和成本。
文檔編號G06F9/46GK101075187SQ200610081329
公開日2007年11月21日 申請日期2006年5月18日 優(yōu)先權日2006年5月18日
發(fā)明者徐成龍 申請人:騰訊科技(深圳)有限公司