Android MediaRecorder-循环录制

问题描述 投票:0回答:1

我想实现循环视频记录(例如,用于车辆的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
            }
            ...
        }
    }
android mediarecorder android-mediarecorder
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.