android - 使用 Media Recorder Android 以 block 形式录制视频

标签 android mediarecorder android-mediarecorder video-recording

我正在实现一个应用程序,其中包含根据一定时间将录制的视频保存到不同视频文件中的功能。

为了实现这一点,我实现了自定义相机并在某个循环中使用了 MediaRecorder.stop()MediaRecorder.start()

但是这种方法会在重新启动媒体记录器(停止和启动)时产生滞后效果。是否可以使用媒体录制器或任何第三方库无缝停止和开始录制?

非常感谢任何帮助。

最佳答案

我认为实现 block 记录的最佳解决方案是在 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对象并重新开始视频。

关于android - 使用 Media Recorder Android 以 block 形式录制视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25486074/

相关文章:

javascript - 部署到设备时,Http 请求在 ionic 应用程序中不起作用

javascript - 在 Chrome 中使用 MediaRecorder 录制为 Ogg

java - 如何在安卓应用中添加暂停/恢复录音功能

android - 在Android应用程序中录制来自外部源的音频

android - 如何设置带缺口显示的媒体记录器的大小

android - setOneShotPreviewCallback 在回调中没有命中 onPreviewFrame()

android - 如何在 android 中播放 .opus 音频文件?

android - 使用 getCurrentTextColor() 设置文本颜色

java - 创建 onItemClickListener 时出现问题

android - Firebase 适合做实时 table 游后端吗?