2015-09-16 49 views
0

我想以純音頻格式錄製語音。 目前我使用這個代碼如何在Android中錄製語音和音頻MimeType

public static void startRecording(String fileName) { 
     mRecorder = new MediaRecorder(); 
     mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
     String mFileName = Environment.getExternalStorageDirectory() 
       .getAbsolutePath(); 
     mFileName += "/abc.mp3"; 
     mRecorder.setOutputFile(mFileName); 
     mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     try { 
      mRecorder.prepare(); 
      mRecorder.start(); 
     } catch (IOException e) { 
      Log.e(TAG, "prepare() failed"); 
     } 
    } 

這是顯示文件爲MP3,但內部文件內容的MIME類型是「視頻/ MP4」。我需要的是任何音頻MIME類型。

EDIT1 作爲建議的Headuck,我改變了我的代碼

mRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS); 
mFileName += "/abc.aac"; 
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 

音頻得到了完美地與 「音頻/ X-HX-AAC-ADTS」 MIME類型記錄。謝謝Headuck

但我的問題是:

我使用雲終端這個文件上傳到谷歌驅動器。然後,當我打開文件時,它說「哎呀..!播放此文件時出現問題」。我需要將文件播放爲「MP3」文件播放。

Google雲端硬盤是否支持「ACC」格式?如果不是,請建議替代品。
請幫忙。

+0

你有諮詢關於'setOutputFormat()'的文檔和http://developer.android.com/reference/android/media/MediaRecorder.OutputFormat.html? – headuck

+0

感謝您的回覆。我已經看到了。但我不明白如何錄製純音頻。請幫助 –

+1

AAC_ADTS是一種音頻格式,如果您不想要MPEG4容器,請參閱http://stackoverflow.com/questions/21552297/how-to-record-raw-aac-audio-files-in-android -using-mediarecorder-aac-adts-doesn – headuck

回答

0

如果你需要的是改變MIME類型的audio一個,你可以嘗試以下stop()和錄像機的release()後(的try-catch省略清晰塊):

mRecorder.stop(); 
mRecorder.release(); 
// Set the mime type to audio 
String[] paths = {mFileName}; 
String[] mimeTypes = {"audio/mp4"}; 
MediaScannerConnection.scanFile(getApplicationContext(), 
           paths, 
           mimeTypes, 
           new MediaScannerConnection.OnScanCompletedListener() { 
            @Override 
            public void onScanCompleted(String path, Uri uri) { 
             System.out.println("SCAN COMPLETED: " + path); 

            } 
           });