2015-09-16 53 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); 

            } 
           });