【问题标题】:Media Recorder Failed in Custom Camera App after implementing Video Recording Feature实现视频录制功能后,媒体录制器在自定义相机应用程序中失败
【发布时间】:2013-08-30 13:14:59
【问题描述】:

您好,我正在开发一个 Android 相机应用程序,我正在其中实现视频录制功能。我正在使用切换按钮从相机切换到视频。我正在使用以下代码:

    private void prepareRecorder() 
    {
              recorder = new MediaRecorder();
              recorder.setPreviewDisplay(holder.getSurface());
              if (usecamera) 
              {
                camera.unlock();
                recorder.setCamera(camera);
              }
              recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
              recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
              recorder.setProfile(camcorderProfile);
      }


      public void surfaceCreated(SurfaceHolder holder)
       {
            if (usecamera) 
            {
            camera = Camera.open();
           try
           {
            camera.setPreviewDisplay(holder);
            camera.startPreview();
            previewRunning = true;
           }
        catch (IOException e)
        {
            Log.e(LOGTAG,e.getMessage());
            e.printStackTrace();
            releaseCamera();
        }   
    }
}

    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height)
      {
    Log.v(LOGTAG, "surfaceChanged");

    if (!recording && usecamera)
    {
        if (previewRunning)
        {
            camera.stopPreview();
        }

        try 
        {
            Parameters p = camera.getParameters();
            p.setPreviewSize(camcorderProfile.videoFrameWidth,camcorderProfile.videoFrameHeight);
            p.setPreviewFrameRate(camcorderProfile.videoFrameRate);
            camera.setParameters(p);
            camera.setPreviewDisplay(holder);
            camera.startPreview();
            previewRunning = true;
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }   
        prepareRecorder();  
    }

}
         public void surfaceDestroyed(SurfaceHolder holder)
          { 
                   if (recording) 
               {
                  recorder.stop();
                  recording = false;
                 }
                  recorder.release();
                 if (usecamera)
                 {
                previewRunning = false;
        camera.lock();
        camera.release();
    }

}

但问题是,当我从相机切换到视频时,相机预览会持续几秒钟,然后回到相机的主预览。我收到以下错误:

        08-30 17:52:27.843: E/MediaRecorder(6421): prepare failed: -15

没有找到我出错的地方。请帮忙!谢谢!

【问题讨论】:

    标签: java android camera android-camera video-capture


    【解决方案1】:
                camera.unlock();
    
        mediaRecorder.setCamera(camera);
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
        mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
        mediaRecorder.setPreviewDisplay(cameraPreview.getHolder().getSurface());
        mediaRecorder.setMaxDuration((int) preVideoLenght);
    
        try {
            mediaRecorder.prepare();
            mediaRecorder.start();
    
            infoText.setText(R.string.recording);
            return true;
    
        } catch (Exception e) {
            return false;
        }
    

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2012-06-27
      • 1970-01-01
      相关资源
      最近更新 更多