一種實現(xiàn)音頻區(qū)域播放的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及多媒體技術(shù)領(lǐng)域,特別涉及一種實現(xiàn)音頻區(qū)域播放的方法及裝置。
【背景技術(shù)】
[0002]WAV格式的聲音文件是一種最常用的聲音文件格式,由文件頭和數(shù)據(jù)體組成,文件頭部分包括采樣位數(shù)、采樣頻率和聲道數(shù)等數(shù)據(jù)信息。
[0003]目前音頻播放器能夠從頭到尾播放整個音頻文件,也可以指定播放位置,但是不能控制結(jié)束位置,也不能夠精確播放指定的區(qū)域。
【發(fā)明內(nèi)容】
[0004]本發(fā)明提供一種實現(xiàn)音頻區(qū)域播放的方法及裝置,用以實現(xiàn)對音頻的精確區(qū)域播放。
[0005]本發(fā)明提供一種實現(xiàn)音頻區(qū)域播放的方法,包括:獲取音頻文件的數(shù)據(jù)信息;設(shè)置所述音頻文件的音頻數(shù)據(jù)信息的播放進度;接收使用者在音頻文件的播放進度上選擇的播放范圍信息;根據(jù)所接收的播放范圍信息,播放對應(yīng)所述播放范圍內(nèi)的音頻數(shù)據(jù)信息。
[0006]其中,設(shè)置所述音頻文件的音頻數(shù)據(jù)信息的播放進度,包括:設(shè)置播放進度上的多個時間段;獲取所述音頻文件對應(yīng)所述各個時間段的音頻數(shù)據(jù)信息;根據(jù)所述播放進度上的各個時間段與對應(yīng)所述時間段的音頻數(shù)據(jù)信息,形成所述音頻文件的音頻數(shù)據(jù)信息的播放進度。
[0007]其中,根據(jù)所述播放進度上的各個時間段與對應(yīng)所述時間段的音頻數(shù)據(jù)信息,形成所述音頻文件的音頻數(shù)據(jù)信息的播放進度,包括:
[0008]按照預定的時間長度對應(yīng)顯示像素個數(shù),設(shè)置所述音頻文件各個時間段對應(yīng)的屏幕像素;
[0009]利用所述屏幕像素,標識所述音頻文件的音頻數(shù)據(jù)信息的播放進度。
[0010]其中,所述屏幕像素還用于標識對應(yīng)時間段內(nèi)的所述音頻文件的音頻數(shù)據(jù)信息。
[0011]其中,所述屏幕像素還用于標識對應(yīng)時間段內(nèi)的所述音頻文件的音頻數(shù)據(jù)信息,包括:
[0012]根據(jù)所述音頻文件的文件頭信息,確定所述音頻文件中預定的時間段內(nèi)的音頻字節(jié)數(shù);
[0013]根據(jù)所確定的預定的時間段內(nèi)的音頻字節(jié)數(shù),確定每個屏幕像素標識的音頻字節(jié)數(shù)。
[0014]其中,根據(jù)所確定的預定的時間段內(nèi)的音頻字節(jié)數(shù),確定每個屏幕像素標識的音頻字節(jié)數(shù)之后,還包括:
[0015]將每個屏幕像素標識的音頻字節(jié)數(shù)進行簡化,得到相應(yīng)的簡化數(shù)字;
[0016]根據(jù)各個簡化數(shù)字,形成顯示所述音頻文件的顯示波形。
[0017]本發(fā)明還提供一種實現(xiàn)音頻區(qū)域播放的裝置,包括:
[0018]數(shù)據(jù)獲取模塊,用于獲取音頻文件的數(shù)據(jù)信息;
[0019]進度設(shè)置模塊,用于設(shè)置所述音頻文件的音頻數(shù)據(jù)信息的播放進度;
[0020]接收模塊,用于接收使用者在音頻文件的播放進度上選擇的播放范圍信息;
[0021]播放模塊,用于根據(jù)所接收的播放范圍信息,播放對應(yīng)所述播放范圍內(nèi)的音頻數(shù)據(jù)信息。
[0022]其中,所述進度設(shè)置模塊包括:
[0023]時間段單元,用于設(shè)置播放進度上的多個時間段;
[0024]數(shù)據(jù)分割單元,用于獲取所述音頻文件對應(yīng)所述各個時間段的音頻數(shù)據(jù)信息;
[0025]進度制作單元,用于根據(jù)所述播放進度上的各個時間段與對應(yīng)所述時間段的音頻數(shù)據(jù)信息,形成所述音頻文件的音頻數(shù)據(jù)信息的播放進度。
[0026]其中,所述進度制作單元還用于按照預定的時間長度對應(yīng)顯示像素個數(shù),設(shè)置所述音頻文件各個時間段對應(yīng)的屏幕像素;利用所述屏幕像素,標識所述音頻文件的音頻數(shù)據(jù)信息的播放進度。
[0027]其中,所述進度制作單元還用于
[0028]根據(jù)所述音頻文件的文件頭信息,確定所述音頻文件中預定的時間段內(nèi)的音頻字節(jié)數(shù);
[0029]根據(jù)所確定的預定的時間段內(nèi)的音頻字節(jié)數(shù),確定每個屏幕像素標識的音頻字節(jié)數(shù);
[0030]將每個屏幕像素標識的音頻字節(jié)數(shù)進行簡化,得到相應(yīng)的簡化數(shù)字;
[0031]根據(jù)各個簡化數(shù)字,形成顯示所述音頻文件的顯示波形。
[0032]本發(fā)明通過讀取wav音頻文件,對文件內(nèi)容進行分析,能夠精確的定位到指定時間點,從而能夠讀取文件中指定時間區(qū)域的數(shù)據(jù),把此數(shù)據(jù)放到指定的內(nèi)存流中,將此內(nèi)存流給音頻播放器,實現(xiàn)對音頻文件的精確區(qū)域播放,也不會產(chǎn)生本地的臨時區(qū)域碎片文件。實現(xiàn)了對音頻的精確區(qū)域播放,在播放的過程中實時改變當前播放的時間點,而且能夠從波形圖清楚的看到有聲音的位置和沒有聲音的位置。
[0033]本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
[0034]下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。
【附圖說明】
[0035]附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
[0036]圖1為本發(fā)明實施例提供的一種實現(xiàn)音頻區(qū)域播放的方法的流程示意圖;
[0037]圖2為圖1所示實施例的一具體示例流程圖;
[0038]圖3為圖1所示實施例中按照時間與像素的對應(yīng)形成的波形效果圖示例。
[0039]圖4為本發(fā)明實施例提供的一種實現(xiàn)音頻區(qū)域播放的裝置結(jié)構(gòu)示意圖;
[0040]圖5為圖4所示實施例中的進度設(shè)置模塊的結(jié)構(gòu)示意圖。
【具體實施方式】
[0041]以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行說明,應(yīng)當理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0042]參見圖1和圖2,本發(fā)明實施例提供了一種實現(xiàn)音頻區(qū)域播放的方法,包括以下步驟:
[0043]SlOl:獲取音頻文件的數(shù)據(jù)信息;
[0044]本示例在獲取到音頻文件之后,首先判斷是否為wav格式的音頻文件,如果不是,通過ffmpeg對該音頻文件進行編解碼,轉(zhuǎn)化為wav格式文件作為使用文件。
[0045]S102:設(shè)置所述音頻文件的音頻數(shù)據(jù)信息的播放進度;
[0046]在播放進度設(shè)置多個時間段,在相應(yīng)音頻文件數(shù)據(jù)信息的位置處,讀取出各個時間段數(shù)據(jù)信息,將此時間段數(shù)據(jù)信息寫入到內(nèi)存流中。
[0047]將所述播放進度按預定的各個時間段,對應(yīng)存儲在內(nèi)存中的與各個時間段相應(yīng)的音頻數(shù)據(jù)信息。
[0048]優(yōu)選地,按照預定的時間長度對應(yīng)顯示像素個數(shù),設(shè)置所述音頻文件各個時間段對應(yīng)的屏幕像素;利用所述屏幕像素,標識所述音頻文件的音頻數(shù)據(jù)信息的播放進度。所述屏幕像素還用于標識對應(yīng)時間段內(nèi)的所述音頻文件的音頻數(shù)據(jù)信息。
[0049]在本示例中,將音頻文件按秒設(shè)置所述音頻文件的音頻數(shù)據(jù)信息的播放進度。
[0050]打開wav音頻文件的文件頭,讀取數(shù)據(jù)的采樣率、通道數(shù)等詳細信息,根據(jù)這些數(shù)據(jù)確定每秒鐘的音頻字節(jié)數(shù)。
[0051]所述音頻文件的音頻數(shù)據(jù)信息的播放進度用顯示像素來標識。在本示例中,每秒鐘用160個像素來標識,從而可用像素來標識所述音頻文件的音頻數(shù)據(jù)字節(jié)數(shù)。
[0052]將每個wav文件的數(shù)據(jù)塊部分按每兩個字節(jié)轉(zhuǎn)化為一個int (十進制整數(shù))型數(shù)據(jù),屏幕每一個像素表示的時間段可用int型數(shù)據(jù)標識,即每一個像素表示的時間段可用音頻數(shù)據(jù)信息的字節(jié)數(shù)/2個十進制數(shù)字標識。
[0053]由于上述十進制數(shù)字個數(shù)較多,而對wav文件來說,沒有必要用這么多數(shù)字標識,每個像素表示的時間段只需要,例如,2、3、4或5個整數(shù)標識即可。
[0054]可對上述十進制數(shù)字進行處理,使每個像素內(nèi)的時間段用2個整數(shù)標識(2個點顯示)即可。如果此點數(shù)過于密集,可對該點數(shù)再進行處理,例如,使每個像素時間段用I個整數(shù)標識。
[0055]在本示例中,利用每個像素顯示一個點,根據(jù)這個規(guī)則,確定對這些數(shù)字進行采樣,將這些采樣點,按照時間與像素的對應(yīng)顯示到屏幕上并且使各點之間進行連接,以形成了波形圖。
[0056]如果每秒鐘標識160個數(shù)字,我們?nèi)〉谝粋€和中間一個,就是總個數(shù)除以要取的個數(shù),得到間隔,每這個間隔去一個數(shù)字,形成采樣點。
[0057]參見圖3,將這些取樣點,按照時間與像素的對應(yīng)顯示到屏幕上并且使各點之間進行連接,形成了波形圖。豎直方向是由數(shù)字本身的大小值決定,橫向上的位置由數(shù)字所代表的時間決定的。
[0058]例如,假設(shè)我們的顯示區(qū)域高度設(shè)置為100個像素,設(shè)置最大值為5000,最小值為-5000,中間就為0,這些數(shù)字按照所占比例設(shè)置點的位置;例如數(shù)字5000,就在最高100像素處,O就在中間50像素處。越靠近O的代表聲音越小,直線處代表沒有聲音的地方。
[0059]S103:接收使用者在音頻文件的播放進度上選擇的播放范圍信息;
[0060]當使用者使用所述音頻文件的音頻數(shù)據(jù)信息的播放進度請求播放指定區(qū)域的開始位置和結(jié)束位置。
[0061]S104:根據(jù)所接收的播放范圍信息,播放對應(yīng)所述播放范圍內(nèi)的音頻數(shù)據(jù)信息。
[0062]當獲取