Android MediaRecorder到AudioTrack,录音和播放
问题描述:
我正在尝试使用它来记录用户的声音并使用MediaRecorder和AudioTrack在相同的活动中播放它。我只是不明白如何将文件写入AudioTrack。我已经阅读了这两份文件,根本无法弄清楚。任何帮助,将不胜感激。这是我的代码到目前为止,它不完整。您只需要阅读的按钮是recordButton和playbackButton。谢谢!Android MediaRecorder到AudioTrack,录音和播放
private File outputFile = null;
private AudioTrack voice = null;
private MediaRecorder recorder = null;
....
// Setup recorder...
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
// Setup record file...
outputFile = getFileStreamPath("output.amr");
recorder.setOutputFile(outputFile.getAbsolutePath());
public void onClick(View v){
switch(v.getId()) {
case R.id.next_button:
giveSentence();
break;
case R.id.repeat_button:
// playSentence();
break;
case R.id.recordButton:
if (!recording){
recordButton2.setBackgroundResource(android.R.drawable.button_onoff_indicator_on);
recording = true;
recorder.reset();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
recorder.setOutputFile(outputFile.getAbsolutePath());
try {
recorder.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
recorder.start();
}
else if(recording) {
recordButton2.setBackgroundResource(android.R.drawable.button_onoff_indicator_off);
recording = false;
recorder.stop();
}
break;
case R.id.playbackButton:
Music.playSentence(this, outputFile);
break;
case R.id.slowButton:
if(!slowedSpeech) {
slowButton2.setBackgroundResource(android.R.drawable.ic_dialog_alert);
slowedSpeech = true;
// slowspeech();
}
else if(slowedSpeech) {
slowButton2.setBackgroundResource(android.R.drawable.ic_menu_recent_history);
slowedSpeech = false;
// noSlowSpeech();
}
break;
}
}
答
你是什么意思通过写入文件到音轨?您不需要将任何文件写入音轨,设置音频源,录音机将创建音轨并从音频源读取pcm数据,然后对数据进行编码,将数据写入输出文件。
+0
我的意思是我试图使用MediaRecorder录制音频,然后将该文件放入AudioTrack中以播放它 – lespommes
您是否尝试使用[AudioRecord](http://developer.android.com/reference/android/media/AudioRecord.html),这将让你设置采样率,信道配置和格式?然后你会知道在AudioTrack中使用哪些参数。 – Vanja