Android MediaRecorder-循环录制

我想实现循环录像(例如,用于车辆的DVR设备以这种方式工作)。

MediaRecorder具有setMaxDuration方法:

在录制达到指定的持续时间后,将会有一条通知 发送给MediaRecorder.OnInfoListener的代码是 MEDIA_RECORDER_INFO_MAX_DURATION_REACHED并记录 停了停止异步发生,无法保证 记录器将在通知侦听器时停止。

因此,当达到“最大持续时间”时,它会停止录制,但会异步进行,如果以前的录制会话仍在进行中,该如何开始新的录制会话?

是否应该为下一个录制会话创建MediaRecorder的新实例?可以吗?

private val infoListener: MediaRecorder.OnInfoListener =
    MediaRecorder.OnInfoListener { mr,what,extra ->
        when (what) {
            MediaRecorder.MEDIA_RECORDER_INFO_MAX_DURATION_REACHED -> {
                // I want to start a new recording session
            }
            ...
        }
    }
dahuaabcd123 回答:Android MediaRecorder-循环录制

对于连续记录应用程序, setMaxFileSize()更有用,因为MediaRecorder会将 MEDIA_RECORDER_INFO_MAX_FILESIZE_APPROACHING 代码发送给OnInfoListener,此时您的应用程序可以调用{{ 3}}设置下一个文件名,并允许MediaRecorder继续进入新文件,而无需停止并从应用程序重新开始录制。如果知道视频和音频的比特率,则可以估计与所需持续时间相对应的文件大小。它不是确切的持续时间,但是对于完成基本的分块记录仍然有用。

如果您要实施循环记录方案且总存储空间有限,则您的应用程序将需要跟踪您创建的文件并删除旧文件。

本文链接:https://www.f2er.com/2809022.html

大家都在问