如何暂停/恢复使用mediarecorder创建的录音?

3
我正在尝试在来电时暂停录音并稍后恢复。我正在使用安卓的mediarecorder并尝试以MPEG4格式进行录制。我尝试使用setOutputFile(fd),其中fd是已停止/暂停的音频文件的filedescriptor,并希望它会进行追加,但我没有成功。是否有一种方法可以实现这一点或者追加两个录音?或者我应该放弃使用mediarecorder代码:
private MediaRecorder media_recorder;
private String file_path = null;

public void startRecording(path)
{
  file_path = path
  media_recorder= new MediaRecorder();
  media_recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  media_recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
  media_recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
  media_recorder.setOputputFile(path);
  media_recorder.prepare();
}

public void pauseRecording()
{
  media_recorder.stop();
  media_recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
  media_recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
  media_recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
  FileOutputStream paused_file = new FileOutputStream(file_path);
  media_recorder.setOutputFile(paused_file.getFD());
}

public void resumeRecording()
{
  media_recorder.prepare();
  media_recorder.start();
}

pauseRecording() 函数停止录制,但是恢复录制时会出现“start failed”的错误提示。

1个回答

3

对于您的问题,简单的答案是不能

一旦你开始录制,唯一可能的操作是停止和重置。

所以,在停止后尝试将通话保存到SD卡中,然后再次开始新的录音并停止它。最后将两个音频文件合并成一个音频文件

将音频记录为.wav文件,并使用此格式进行组合


好的,我打算将mEncoderffmpeg移植到安卓系统,并尝试合并它们,这似乎是一个可行的解决方案。 - Pannu
@Pannu,你有没有找到这个问题的可行解决方案?有什么可以做到从MediaRecorder暂停/继续录制的吗?追加流数据或合并文件是唯一的解决方案吗? - portfoliobuilder
@portfoliobuilder:不是的...我必须为每个暂停创建一个临时文件,然后使用移植的mencoder二进制文件合并它们到安卓设备上。看到那段代码让我感到恶心,但这是我现在所拥有的。虽然有很多针对ffmpeg的移植版本可用。 - Pannu
只是一个更新。MediaRecorder.pause即将推出。 - Pannu
更新带来了API 24。现在可以暂停和恢复录音机。 - smiki
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接