【问题标题】:Switching from back camera to front camera for video recording is not working从后置摄像头切换到前置摄像头进行视频录制不起作用
【发布时间】:2015-04-13 06:12:38
【问题描述】:

后置摄像头工作正常,但是当我们从后置摄像头切换到前置摄像头时,它会崩溃(在使用 MediaRecorder 进行视频录制的情况下)....它显示错误,我在日志中显示!

这是我的代码:

private void start_work()
 {
  if(recording)
  {


   Log.v("LOGTAG", "Recording Stopped");


  }
  else
  {
   recording = true;
   progress_relative_lay.setVisibility(View.VISIBLE);
   button_capture.setVisibility(View.GONE);
   //show_icon();

   recorder.start();
   Log.v("LOGTAG", "Recording Started");


  }
 }

为了初始化我使用

recorder = new MediaRecorder();


 recorder.setOrientationHint(result) ;
  recorder.setPreviewDisplay(holder.getSurface());
  if(usecamera)
  {
   camera.unlock();
   recorder.setCamera(camera);

  }
  recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
  recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
  recorder.setProfile(camcorderProfile);

【问题讨论】:

  • 切换前需要先释放相机
  • 我在切换前释放相机,我使用 if(camera != null) { camera.stopPreview(); // 停止预览 camera.release(); // 切换前释放前一个相机 }..
  • 从上面的代码中我只能看到 if(previewRunning) { camera.stopPreview(); }
  • 我还添加了 camera.release(); ..我使用了另一种切换相机的方法...我添加了 camera.release();
  • 那么你应该用前置摄像头属性创建新的摄像头实例

标签: android android-camera video-recording front-camera


【解决方案1】:
  if (camera != null) {
            throw new RuntimeException("camera already initialized");
        }

        Camera.CameraInfo info = new Camera.CameraInfo();

        // Try to find a front-facing camera (e.g. for videoconferencing).
        int numCameras = Camera.getNumberOfCameras();
        for (int i = 0; i < numCameras; i++) {
            Camera.getCameraInfo(i, info);
           //this will be front or back depending on the requirement 
            if (info.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
                camera= Camera.open(i);
                break;
            }
        }

尝试添加这部分代码

【讨论】:

  • 我正在使用相同的---------- private Camera getCameraInstance(int type) { Camera c = null; int numberOfCameras = Camera.getNumberOfCameras(); for(int i = 0; i
  • 现在我做了一些更改,它工作正常,但录制存在问题 --MediaRecorder.start();如果是前置摄像头......它会在这条线上抛出错误
  • 代码几乎相同,我只是添加 if(camera != null) { camera.stopPreview(); camera.setPreviewCallback(null); camera.lock();相机.release(); camera.release 已经在那里.. 现在我在 recorder.start() 中有错误;
  • 你要发布录音机吗?
  • 你不能有相同的记录器对象用于前后记录
【解决方案2】:

有时设备会进入 onPause 状态,我只是在活动的 onResume 方法中重新初始化所有内容,它就可以工作了..!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多