2010-09-04 34 views
39

我簡化了我的問題並提供了賞金: 有什麼選擇將原始PCM音頻數據壓縮到Android設備上的mp3上。如何在Android設備上將WAV編碼爲MP3

我原來的帖子: 我在我的Android手機上創建了一個合成器,我一直在生成PCM數據發送給揚聲器。現在我想知道如果我可以將這個PCM數據編碼爲mp3保存到SD卡。 MediaRecorder對象可以將來自麥克風的音頻編碼爲各種格式,但不允許通過編程生成的音頻數據進行編碼。

所以我的問題是,有沒有一個標準的Android API編碼音頻?如果不是,那麼基於Java或NDK的解決方案有哪些?你能推薦他們嗎?

失敗這我只需要將我生成的音頻保存爲一個WAV文件,我很容易做到這一點。

+0

找到代碼「所以我的問題是,是否有音頻編碼標準的Android API ?」 - 沒有。我將使用'java'標記重新標記您的問題,以嘗試幫助您獲得輸入... – CommonsWare 2010-09-04 11:49:29

+0

感謝CommonsWare。 – bramp 2010-09-04 12:44:39

+6

供參考:MP3技術已獲得專利,因此將其包含在商業應用程序中會使您遇到潛在的訴訟。對此的最佳防禦是對您的產品不成功。 :) – MusiGenesis 2011-02-03 13:17:46

回答

31

純Java
查找到Tritonus的潔淨室實施javasound的它提供了一個MP3編碼器插件在這裏:http://www.tritonus.org/plugins.html
其次,我會建議尋找到jzoom的庫JLayer或JLayerME:http://www.javazoom.net/javalayer/javalayer.html(這可能只有解碼,不知道)
如果那些不適合你的需要,你可以看看這篇文章從2000年有關添加MP3功能到J2SE(與源):http://www.javaworld.com/javaworld/jw-11-2000/jw-1103-mp3.html

原生路線
如果你想「本地」性能,我會看看Android的FFmpeg或Lame端口。 拉梅:http://lame.sourceforge.net/

+1

嗨,我用AudioRecorder在Android上錄製音頻,並生成輸出格式爲WAV。輸出具有非常大的尺寸,前1分鐘記錄佔用2mb大小。我可以減小尺寸,同時使用tritonus罐子轉換爲mp3嗎?如何在android上實現tritonus。請幫幫我。 – 2012-06-27 07:22:55

9

據我所知,你不能只使用SDK中的工具。根據官方開發人員指南,平臺中沒有MP3編碼器(Android Supported Media Formats),因此您必須使用NDK自行移植編碼器,然後編寫一些包裝代碼以通過JNI接收音頻樣本。

我目前正在爲我自己的音樂播放器從Rockbox項目移植一些音頻解碼器,並且它可以將音頻錄製到MP3中,所以也許您應該嘗試查看它的源代碼並找到編碼器庫。大多數解碼器都具有ARM優化功能,可以加快顯示速度,所以我猜一些編碼器也有這種增加。