解决办法:
在使用Camera API1和MediaRecoder录制视频时,在setCamera(camera)方法之前,必须使用camera.unlock(),否则在MediaRecorder.start()的时候则会直接报:mediarecorder: start failed: -19的错误。
附上正常使用start的初始化MeidaRecorder的代码
private void startRecorder() {
initMediaRecorder();
mVideoRecorder.start();
isRecording = true;
}
private void initMediaRecorder() {
Log.d(TAG, "initMediaRecorder: ");
if (mVideoRecorder == null) {
mVideoRecorder = new MediaRecorder();
}
mCamera.unlock();
mVideoRecorder.setCamera(mCamera);
mVideoRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mVideoRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mVideoRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
mVideoRecorder.setVideoSize(640, 480);
mVideoRecorder.setVideoEncodingBitRate(1_000_000);
mVideoRecorder.setVideoFrameRate(30);
mVideoRecorder.setOutputFile("/mnt/sdcard/testVideo.mp4");
try {
mVideoRecorder.prepare();
} catch (IOException e) {
e.printStackTrace();
}
}