MediaRecorder开始失败

时间:2014-04-23 02:34:28

标签: android android-camera surfaceview

当我尝试运行以下代码时,我得到start failed: -19,我很确定我拥有开始视频捕获所需的所有元素,我有一个表面视图,我将相机预览设置为以下是其余的在

中初始化的代码
   @Override
    public void surfaceCreated( SurfaceHolder surfaceHolder )

尝试运行启动录音机的方法时,我经常得到E/MediaRecorder﹕ start failed: -19。在启动实际录音机之前还有其他需要添加的内容吗?

    if(mCamera == null) {
        mCamera = Camera.open();
        mCamera.unlock();
     }

    if(mRecorder == null)
        mRecorder = new MediaRecorder();

    try {
        mRecorder.setCamera( mCamera );
        mRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
        mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
        mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

        //AUDIO
        mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
        //VIDEO
        mRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
        mRecorder.setVideoSize(640, 480);
        mRecorder.setVideoFrameRate( 15 );


        mRecorder.setOutputFile( createNewFile() );
        mRecorder.setPreviewDisplay( mHolder.getSurface() );
        mRecorder.setMaxDuration(10000);

    } catch (Exception e) {
        Log.e( getString( R.string.app_name ), "failed to open Camera" );
        e.printStackTrace();
    }

然后在按钮点击方法中我有mRecorder.prepare();mRecorder.start();

修改

现在,在设置视频编码器之后尝试启动录像机E/MediaRecorder﹕ start failed: -2147483648时,我不断收到此错误。

另一个观察结果是,我必须在启动录音机之前在相机对象上调用startPreview()吗?

1 个答案:

答案 0 :(得分:1)

有一些错误或缺失:

  1. mCamera.unlock()丢失了。必须在使用Media Recorder设置相机之前完成此操作。
  2. 您必须在设置视频尺寸之前设置视频编码器。
  3. mRecorder.setVideoSize(640, 460)无法在大多数设备上运行。假设您要设置VGA格式,它将是mRecorder.setVideoSize(640, 480),但这假设相机支持VGA格式的视频。大多数相机都做但不是全部。要找出支持的视频大小,您需要检查mCamera.getParameters().getSupportedVideoSizes(),如果此函数返回空指针,则需要检查mCamera.getParameters().getSupportedPreviewSizes()