2011-02-03 74 views
7

我正在創建一個包含錄音和播放的應用程序。是否有可能以MP3格式錄製文件?Android:如何以MP3格式獲取媒體記錄器輸出?

我需要輸出文件爲mp3格式。謝謝。

+0

供參考:MP3技術已獲得專利。如果您打算使用MP3來減少本地存儲使用量(並假設這是一個商業應用),那麼最好使用Ogg Vorbis之類的東西。 – MusiGenesis 2011-02-03 13:20:50

+1

嗨,在Android中,我在原始流中錄製語音並轉換爲wav。但在WAV需要更多的尺寸,我需要減小尺寸,以便我想轉換成WAV到MP3。我在這裏看到http://stackoverflow.com/questions/3641920/how-to-encode-a-wav-to-a-mp3-on-a-android-device/,但我不知道如何使用它android請幫幫我。 – 2012-06-01 06:19:37

+0

可能重複的[Android:以mp3格式錄製聲音](http://stackoverflow.com/questions/11985518/android-record-sound-in-mp3-format) – grebulon 2016-02-15 11:02:19

回答

9

目前在Android框架中沒有內置MP3編碼器(據我所知),所以你不能直接使用它。您需要將MP3編碼庫添加到您的項目中。

爲此,你可以看看this stackoverflow後發佈一個完整的答案。

+0

嗨,在Android中,我在原始流中錄製語音並轉換成wav。但在WAV需要更多的尺寸,我需要減小尺寸,以便我想轉換成WAV到MP3。我看到鏈接張貼在這裏,但我不知道如何使用它android請幫助我。 – 2012-06-01 06:18:53

8

2015年更新:

MP3官方Android支持 - (編輯) - 然而,這僅僅是用於解碼,不編碼。

http://developer.android.com/guide/appendix/media-formats.html

核心媒體格式:MP3•單聲道/立體聲8-320Kbps常數(CBR)或 可變比特率(VBR)MP3(.MP3)

  • (編輯) - 對於較小的文件大小,可以使用.mp4。您可以將其設置爲:

    mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

4

Android框架肯定有MP3編碼器。

就像我回答here on stackoverflow所有你需要做的是:

MediaRecorder recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
recorder.setOutputFile(Environment.getExternalStorageDirectory() 
     .getAbsolutePath() + "/myrecording.mp3"); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 
recorder.prepare(); 
recorder.start(); 

這裏最重要的部分是setOuputFormatsetAudioEncoder。如果您一起使用MediaRecorder.OutputFormat.MPEG_4MediaRecorder.AudioEncoder.AAC,MediaRecorder會記錄可播放的mp3。

有趣的是,這個解決方案是我對什麼起作用的實驗的結果,我不知道它爲什麼起作用。我希望有人能夠在評論中闡明這一點。

編輯

由於@JohnSmith和其他一些在評論中指出,這不編碼在MP3格式的音頻並沒有在Android上沒有內置MP3編碼器。

此解決方案似乎起作用的原因是MediaPlayer在開始播放曲目之前將編碼識別爲AAC(不管文件擴展名)。所以儘管輸出文件的mime類型是audio/mp4,但編碼絕對是AAC。