我正在实施一个应用程序,其中包括根据一定的时间将录制的视频保存到不同的视频文件中的功能。
为了实现我已经实现了自定义相机并在某个循环中使用了MediaRecorder.stop()
和MediaRecorder.start()
。
但是这种方法在重启Media Recorder(停止和启动)时会产生滞后效应。是否可以使用Media Recorder或任何第三方库无缝停止和开始录制?
任何帮助都是高度赞赏的。
答案 0 :(得分:2)
我认为实现块记录的最佳解决方案是在MediaRecorder对象中设置最长时间
mMediaRecorder.setMaxDuration(CHUNK_TIME);
然后你可以附加一个信息监听器,当它达到最大块时间时它会告诉你
mMediaRecorder.setOnInfoListener(new MediaRecorder.OnInfoListener() {
@Override
public void onInfo(MediaRecorder mr, int what, int extra) {
if (what == MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED) {
// restartVideo()
}
}
});
在restartVideo中,您应首先清除以前的MediaRecorder对象并再次启动视频。
答案 1 :(得分:0)
您可以创建两个MediaRecorder实例,它们会稍微重叠(即,当流接近第一个块的末尾时,您可以准备并启动第二个)。如果仅捕获视频,则可以同时使用2个MediaRecorder录制2个视频文件。不幸的是,不支持在2个MediaRecorder实例之间共享麦克风。