汇总Android视频录制中常见问题

2019-12-10 19:34:20王冬梅

汇总Android视频录制中常见问题

翻译成代码如下:

private boolean startRecordVideo() {
  configureMediaRecorder();
  if(!prepareConfiguredMediaRecorder()) {
    return false;
  }
  mMediaRecorder.start();
  return true;
}

1.2、结束录制
根据上述流程图可知,结束录制的触发条件为松开录制按钮或计时时间到。在结束录制方法中,需要释放MediaRecorder,开始循环播放已录制视频,设置界面更新等。

汇总Android视频录制中常见问题

    翻译成代码如下:

private void stopRecordVideo() {

    releaseMediaRecorder();
    // 录制视频文件处理
    if(currentRecordProgress < MIN_RECORD_TIME) {
      Toast.makeText(VideoInputActivity.this, "录制时间太短", Toast.LENGTH_SHORT).show();
    } else {
      startVideoPlay();
      isPlaying = true;
      setUiDisplayAfterVideoRecordFinish();
    }
    currentRecordProgress = 0;
    updateProgressBar(currentRecordProgress);
    releaseTimer();
    // 状态设置
    isRecording = false;
  }

 二、视频预览及SurfaceHolder
      视频预览采用SurfaceView,相比于普通的View,SurfaceView在一个新起的单独线程中绘制画面,该实现的优点是更新画面不会阻塞UI主线程,缺点是会带来事件同步的问题。当然,这涉及到UI事件的传递以及线程同步。

      在实现中,通过继承SurfaceView组件来实现自定义预览控件。首先,SurfaceView的getHolder()方法会返回SurfaceHolder,需要为SurfaceHolder添加SurfaceHolder.Callback回调;其次,重写surfaceCreated、surfaceChanged和surfaceDestroyed实现。