2013-08-30 29 views
0

您好我正在開發一個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 

沒有得到我錯誤的地方。請幫忙!謝謝!

回答

0
  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; 
    } 
相關問題