如何修改 MediaRecorder 源以允许 pause/resume 录制
How can I modify the MediaRecorder source to allow pause/resume recording
是否可以修改 MediaRecorder 源以允许 pause/resume 录制?我认为修改此 class 是不可能的,但最近有人告诉我可以。我的问题是,为什么我要修改 MediaRecorder class 而不是扩展它然后编写额外的逻辑?我要为 pausing/resuming 记录添加的基本逻辑是这样的,
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();
}
这个问题是预览闪烁。所以我基本上有三个问题。可以直接修改源码吗?我扩展 MediaRecorder 的方法有什么问题吗?我如何更新我的 pause/resume 以使预览不闪烁?提前致谢。
- 你可以修改源,问题是你不能将框架源编译成你的apk并在运行时替换框架。所以不要这样做。
- 你是用一个文件记录每一个片段吗?您需要将每一块记录到单独的文件中,否则 "preview flicker" 会发生。
- 如果你想把所有的片段都联系到一个文件中,你需要以PCM格式记录(或者你需要自己处理文件头)并确保扬声器在每个片段之前和之后都添加静音。
是否可以修改 MediaRecorder 源以允许 pause/resume 录制?我认为修改此 class 是不可能的,但最近有人告诉我可以。我的问题是,为什么我要修改 MediaRecorder class 而不是扩展它然后编写额外的逻辑?我要为 pausing/resuming 记录添加的基本逻辑是这样的,
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();
}
这个问题是预览闪烁。所以我基本上有三个问题。可以直接修改源码吗?我扩展 MediaRecorder 的方法有什么问题吗?我如何更新我的 pause/resume 以使预览不闪烁?提前致谢。
- 你可以修改源,问题是你不能将框架源编译成你的apk并在运行时替换框架。所以不要这样做。
- 你是用一个文件记录每一个片段吗?您需要将每一块记录到单独的文件中,否则 "preview flicker" 会发生。
- 如果你想把所有的片段都联系到一个文件中,你需要以PCM格式记录(或者你需要自己处理文件头)并确保扬声器在每个片段之前和之后都添加静音。