2015-10-04 4 views
0

Я получаю Mediarecorder начать не удалось - 19 ошибок при разбега() для MediaRecorder, это происходит только тогда, когда я пытаюсь установить камеру, чтобы захватить с передней камеры с этим кодом:Mediarecorder начать не удалось - 19

private Camera openFrontFacingCamera() 
{ 
    int cameraCount = 0; 
    Camera cam = null; 
    Camera.CameraInfo cameraInfo = new Camera.CameraInfo(); 
    cameraCount = Camera.getNumberOfCameras(); 
    for (int camIdx = 0; camIdx < cameraCount; camIdx++) { 
     Camera.getCameraInfo(camIdx, cameraInfo); 
     if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT ) { 
      try { 
       cam = Camera.open(camIdx); 
      } catch (RuntimeException e) { 
       Log.e("my tag", "Camera failed to open: " + e.getLocalizedMessage()); 
      } 
     } 
    } 

    return cam; 
} 

это моя startRecording функция:

public void startRecording() throws IOException 
{ 
    mCamera = openFrontFacingCamera(); 
    mrec = new MediaRecorder(); // Works well 
    mCamera.unlock(); 

    mrec.setCamera(mCamera); 

    mrec.setPreviewDisplay(surfaceHolder.getSurface()); 
    mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
    mrec.setAudioSource(MediaRecorder.AudioSource.MIC); 

    mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 
    mrec.setPreviewDisplay(surfaceHolder.getSurface()); 

    //Toast.makeText(this,Integer.toString(Date),Toast.LENGTH_SHORT).show(); 


    String time = Environment.getExternalStorageDirectory().getAbsolutePath()+ "/" + getString(R.string.app_name)+ "/" + DateFormat.getDateTimeInstance().format(new Date()).trim() + ".3gp"; 

    File directory = new File(time).getParentFile(); 
    if (!directory.exists() && !directory.mkdirs()) { 
     throw new IOException("Path to file could not be created."); 
    } 

    mrec.setOutputFile(time); 

    mrec.prepare(); 
    mrec.start(); 
} 

и ошибки:

10-04 10:52:29.488 15546-15546/com.didi.***** E/AndroidRuntime: java.lang.RuntimeException: start failed. 
10-04 10:52:29.488 15546-15546/com.didi.***** E/AndroidRuntime:at android.media.MediaRecorder.start(Native Method) 

ответ

0

Вы можете попробовать следующий код до mCamera.unlock().

try { 
    mCamera.setPreviewDisplay(null); 
} catch (java.io.IOException e) { 

} 
mCamera.stopPreview(); 

и попробуйте следующий код вместо mrec.setProfile (CamcorderProfile.get (CamcorderProfile.QUALITY_HIGH));

mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
mrec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
mrec.setVideoEncoder(MediaRecorder.VideoEncoder.H264); 
mrec.setMaxDuration(VIDEO_DURATION); 
mrec.setVideoFrameRate(VIDEO_FRAME_RATE); 
mrec.setVideoEncodingBitRate(VIDEO_ENCODING_BIT_RATE); 
mrec.setVideoSize(VIDEO_SIZE_WIDth, VIDEO_SIZE_HEIGHT); 
0

Я решил эту проблему, как последующие советы: 1.clean мой проект в сборке; 2.I изменить setAudioSamplingRate (10) на setAudioSamplingRate (8000), может быть, он слишком мал для скорости записи