首页 > 解决方案 > 无法让 mediarecorder 以高采样率录制

问题描述

对于一个项目,我需要制作一个 android 应用程序以高采样率(例如每毫秒 10 个样本)记录声音幅度。由于某种原因,应用程序的输出仅每 10 毫秒或更短时间返回一个样本。

mediaRecorder=new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
mediaRecorder.setAudioEncodingBitRate(128000);
mediaRecorder.setAudioSamplingRate(96000);
mediaRecorder.setOutputFile(AudioSavePathInDevice);

我通过存储我的时间和幅度数据来确定这一点。

我存储了振幅数据和时间数据

final Runnable updateSoundLevel = new Runnable() {
@Override
public void run() {
    if (SoundRecording==true){
    handler.postDelayed(this, 0);

    Amplitude = mediaRecorder.getMaxAmplitude();
    longTime= (System.nanoTime()-startTime)/1000000;
    int intTime=(int) longTime;
    listAmplitude.add(Amplitude);
    listTime.add(intTime);
    addEntry(intTime,Amplitude); // adding entry to graph
    ... rest of program

标签: androidaudiomediarecorder

解决方案


我发现了错误,

向我的图表添加条目的过程太长。


推荐阅读