【问题标题】:Android MediaRecorder to AudioTrack, Recording and PlaybackAndroid MediaRecorder to AudioTrack,录音和播放
【发布时间】:2011-07-07 20:18:09
【问题描述】:

我正在尝试使用 MediaRecorder 和 AudioTrack 录制用户语音并在同一活动中播放。我只是不明白如何将文件写入 AudioTrack。我已经阅读了这两个文件,但根本无法弄清楚。任何帮助,将不胜感激。到目前为止,这是我的代码,它不完整。您需要阅读的唯一按钮是recordButton 和playbackButton。谢谢!

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;
    }
}

【问题讨论】:

  • 您是否尝试过使用AudioRecord 来设置采样率、通道配置和格式?然后你就会知道在 AudioTrack 中使用哪些参数。

标签: android audio playback recording mediarecorder


【解决方案1】:

将文件写入音轨是什么意思?无需向音轨写入任何文件,设置音源,录音机将创建音轨并从音源读取 pcm 数据,然后对数据进行编码,将数据写入输出文件。

【讨论】:

  • 我的意思是我正在尝试使用 MediaRecorder 录制音频,然后将该文件放入 AudioTrack 以便可以播放
猜你喜欢
  • 2014-10-19
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 2013-02-14
  • 2017-03-12
  • 1970-01-01
  • 2012-08-29
相关资源
最近更新 更多