Ign*_*kas 7 camera android mediarecorder
根据Android SDK,MediaRecorder.setCamera可用于回收现有的摄像头实例以进行视频捕获和预览,而无需重置预览.我无法找到任何样本,我的所有尝试都是徒劳的:我要么得到错误的状态异常,要么MediaRecorder.prepare失败.
供参考:http: //developer.android.com/reference/android/media/MediaRecorder.html#setCamera(android.hardware.Camera)
小智 9
我遇到了同样的问题,并发现它是如何工作的.有些事情必须正确完成.首先,你应该检查android文档中的状态图表 .
命令的工作顺序如下.
mCamera = Camera.open();
rec = new MediaRecorder(); // state "Initial"
mCamera.lock();
mCamera.unlock();
rec.setCamera(mCamera); // state still "Initial"
rec.setVideoSource(MediaRecorder.VideoSource.CAMERA); // state "Initialized"
rec.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); // state "DataSourceConfigured"
rec.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
rec.setPreviewDisplay(surfaceHolder.getSurface());
rec.setOutputFile(Environment.getExternalStorageDirectory() + "/test.mp4");
rec.prepare(); // state "Prepared"
rec.start(); // state "Recording"
// ...
rec.stop(); // state "Initial"
Run Code Online (Sandbox Code Playgroud)
完整的例子可以发现在这里.
Android Camera应用源提供了最佳示例.经过一些调查后,我发现recorder.setCamera(camera)应该在实例化之后立即调用MediaRecorder,或者至少在应用任何设置之前调用它.setVideoSource()在调用之前应用任何设置(等)会setCamera()导致错误.