当我尝试运行下面的代码时,我得到了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时,总是收到这个错误。
另一个观察结果是,在启动记录器之前,我是否必须在camera对象上调用startPreview()?
发布于 2014-04-23 20:21:11
这里有一些错误或遗漏的东西:
缺少
mCamera.unlock()。在媒体录像机中设置摄像头之前必须完成此操作。在设置视频size.mRecorder.setVideoSize(640, 460)之前,您必须先设置视频编码器。mRecorder.setVideoSize(640, 480),但这假设摄像头支持VGA格式的视频。大多数相机都有,但不是全部。要找出支持的视频大小,您需要检查mCamera.getParameters().getSupportedPreviewSizes().,如果此函数返回空指针,则需要检查mCamera.getParameters().getSupportedVideoSizes()
https://stackoverflow.com/questions/23233787
复制相似问题