0

目前我正在使用 MediaRecorder API 进行录音。下面是使用的代码片段:

mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mRecorder.setOutputFile(filepath);
mRecorder.setMaxFileSize(5000);
try {
    mRecorder.prepare();
    mRecorder.start();
    } catch (IllegalStateException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

使用上面我测试过的代码,可以录制一个大小为 5Kb 的音频文件,然后录制停止。

我想要做的是连续录制,它将被保存为 5Kb 文件,直到我调用以下代码:

mRecorder.stop();
mRecorder.reset();
mRecorder.release(); 

是否可以?目前,一旦达到 5Kb,录制将完全停止。

4

2 回答 2

0

@SubbaReddy PolamReddy 感谢您的提示。你说的有道理,使用 setMaxFileSize(filesizeInBytes) 设置文件限制会容易得多。

于 2012-11-19T03:51:04.573 回答
0

我使用不同的方法。每 1 分钟后,我重新启动录制过程,如下所示:

int RestartAfterSeconds=60;

Boolean recording =false;
private void Stop_Record(){
    if (recording) {
       recording=false;
       // ................
       // ................
       // ................
       // your codes here
       // ................
       // ................
       // ................
    }
}

public void Start_record(){
    if (!recording) {
       recording=true;
       // ................
       // ................
       // ................
       // your codes here
       // ................
       // ................
       // ................
       Sheduler_handler.postDelayed(new Runnable() { @Override  public void run() { Restarter_Recording();  } }, RestartAfterSeconds * 1000);  //1000 ms is 1 second
    }
}

public void Restarter_Recording(){      if(!recording) return;
    // Stop now
    Stop_Record();
    //and Fire start immediately
    Sheduler_handler.postDelayed(new Runnable() { @Override public void run() { Start_Record(); } }, 100);
}

ps 视频文件之间只有很小的差距,但对我来说,此时并不重要。

于 2017-01-12T22:32:24.797 回答