2013-04-08 138 views
2

generatring波形我目前正在開發一個Android應用程序和Android libraray需要能夠呈現音頻文件的波形。我已經閱讀過關於Visualizer類的內容,但我認爲這個類被設計用於實時計算。我想要做的是通過音頻文件並生成例如包含整個音頻文件的波形的.PNG。從音頻文件

基本上類似的SoundCloud的作用: http://www.djban.com.br/wp-content/uploads/soundcloud-waveform.png

是否有可以做到這一點任何庫?或者你能告訴我如何獲得音頻文件的幅度數組嗎?

+0

哎@heisenbug,如果你設法得到它的工作,做表現出一定的指針。 – amalBit 2014-07-21 12:31:01

回答

1

我不知道任何庫,但它應該很容易得到它的工作。

首先,爲了得到波形的幅度,則需要在PCM格式的音頻。 假設您需要任意音頻文件(特別是mp3)的波形,您需要找到一種在各種格式之間進行轉換的方法。快速谷歌搜索給this result。 注意:如果您只需要爲來自麥克風的音頻執行此操作,則可以避免轉換,因爲它以PCM格式傳送音頻數據。

獲取樣本後,您將需要以某種方式繪製它們的幅度。你有幾個選擇,但我會給Canvas一試。您可以在那裏畫線(或一般形狀),然後export it to a file或在屏幕上繪製。

另一種選擇畫是OpenGL的。如果你以前沒有使用它,這會更復雜,但它可能會更快。

+0

感謝您的快速回答,但您能否解釋爲什麼我需要將文件轉換爲PCM格式?有什麼好處?我不能僅僅獲取android可以打開的任何其他格式的樣本嗎? 繪圖過程不是問題,我熟悉Android。這是我如何讀取音頻文件的樣本以及如何獲得這些樣本的幅度。感謝您花時間回覆! – Heisenbug 2013-04-08 13:57:19

+0

mp3文件中沒有幅度信息(至少直接)。這就是爲什麼你需要將其轉換爲PCM或類似的格式(如未壓縮的WAV)。 Android的MediaPlayer可以播放MP3文件,但它不會提供幅度信息。我沒有嘗試過,但在關於mp3plugin的帖子中似乎很容易。您不需要保存轉換後的文件,只需使用緩衝區播放一下即可。 – Esparver 2013-04-08 14:14:34