连续媒体记录分为不同的相同大小的文件

时间:2012-11-16 11:38:01

标签: android

目前我正在使用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,录音就会完全停止。

提前致谢。

2 个答案:

答案 0 :(得分:0)

@SubbaReddy PolamReddy感谢您的提示。你说的有意义,使用setMaxFileSize(filesize In Bytes)设置文件限制要容易得多。

答案 1 :(得分: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);
}

P.S。视频文件之间只有微小的差距,但对我而言,此刻并不重要。