Android MediaRecorder启动失败
我得到Android MediaRecorder启动失败,android,android-camera,surfaceview,Android,Android Camera,Surfaceview,我得到启动失败:-19当我尝试运行以下代码时,我非常确定我有开始视频捕获所需的所有元素,我有一个surfaceview,我将camera preview设置为,下面是在中初始化的其余代码 @Override public void surfaceCreated( SurfaceHolder surfaceHolder ) 我经常收到E/MediaRecorder﹕ 启动失败:-19尝试运行启动记录器的方法时。在启动实际的录音机之前,我还需要添加其他内容吗 if(mCame
启动失败:-19
当我尝试运行以下代码时,我非常确定我有开始视频捕获所需的所有元素,我有一个surfaceview,我将camera preview设置为,下面是在中初始化的其余代码
@Override
public void surfaceCreated( SurfaceHolder surfaceHolder )
我经常收到E/MediaRecorder﹕ 启动失败:-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时,我经常会遇到这个错误﹕ 启动失败:-2147483648
在设置大小之前设置视频编码器之后
另一个观察结果是,在启动录像机之前,我是否必须调用相机对象上的startPreview()
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();
}
缺少mCamera.unlock()
。在媒体录制器中设置摄像头之前,必须完成此操作
在设置视频大小之前,必须先设置视频编码器
mRecorder.setVideoSize(640460)
在大多数设备上不起作用。假设您要设置VGA格式,它将是mRecorder.setVideoSize(640480)
,但这假设相机支持VGA格式的视频。大多数相机都有,但不是全部。要了解支持的视频大小,需要检查mCamera.getParameters().getSupportedVideoSizes()
,如果此函数返回空指针,则需要检查mCamera.getParameters().getSupportedPreviewSizes()
我会试试这些调整的。我已经按照你说的改变了顺序,但现在是E/MediaRecorder﹕ 启动失败:-2147483648`引发错误。您是否检查了640x480是否在支持的视频大小范围内?我实际上已注释掉了该大小,但录像机仍然存在故障。这在许多设备上不起作用,您必须设置该大小。我建议您检查支持的视频大小,或者在相机中设置预览显示的曲面保持架后,使用mCamera.getParameters().getPreviewSize()获取预览大小。