当我尝试运行以下代码时,我得到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()
吗?
答案 0 :(得分:1)
有一些错误或缺失:
mCamera.unlock()
丢失了。必须在使用Media Recorder设置相机之前完成此操作。mRecorder.setVideoSize(640, 460)
无法在大多数设备上运行。假设您要设置VGA格式,它将是mRecorder.setVideoSize(640, 480)
,但这假设相机支持VGA格式的视频。大多数相机都做但不是全部。要找出支持的视频大小,您需要检查mCamera.getParameters().getSupportedVideoSizes()
,如果此函数返回空指针,则需要检查mCamera.getParameters().getSupportedPreviewSizes()
。