Android相机服务器死亡,相机错误 - 100
我面对摄像机错误100在测试我的Android应用程序,我发现在StackOverflow
一些议题,但他们没有这样的帮助。我正在寻找相关的解决方案来解决错误。我写Android相机服务器死亡,相机错误 - 100
代码:
mrec = new MediaRecorder(); // Works well
mCamera = Camera.open();
mCamera.unlock();
mrec.setCamera(mCamera);
mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
mrec.setOutputFile("/sdcard/zzzz.3gp");
mrec.prepare();
mrec.start();
代码来记录摄像头:
protected void startRecordingVideo() throws IOException
{
camera = Camera.open();
camera.unlock();
SimpleDateFormat timeStampFormat = new SimpleDateFormat(
"yyyy-MM-dd-HH.mm.ss");
String fileName = "video_" + timeStampFormat.format(new Date())
+ ".3gp";
String fileURL = "/sdcard/"+fileName;
surfaceView = (SurfaceView) findViewById(R.id.surface_camera);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mrec = new MediaRecorder();
mrec.setCamera(camera);
mrec.setPreviewDisplay(surfaceHolder.getSurface());
mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW));
mrec.setPreviewDisplay(surfaceHolder.getSurface());
mrec.setOutputFile("/sdcard/"+fileName);
mrec.prepare();
mrec.start();
}
protected void stopRecordingVideo() {
mrec.stop();
mrec.release();
camera.release();
}
private void releaseMediaRecorder(){
if (mrec != null) {
mrec.reset(); // clear recorder configuration
mrec.release(); // release the recorder object
mrec = null;
camera.lock();
}
}
private void releaseCamera(){
if (camera != null){
camera.release();
camera = null;
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
// TODO Auto-generated method stub
if (camera != null){
Parameters params = camera.getParameters();
camera.setParameters(params);
}
else {
Toast.makeText(getApplicationContext(), "Camera not available!", Toast.LENGTH_LONG).show();
finish();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
releaseMediaRecorder();
camera.stopPreview();
camera.release();
}
这里是logcat的输出:
12-27 17:52:02.788: W/IMediaDeathNotifier(21434): media server died!
12-27 17:52:02.788: W/Camera(21434): Camera server died!
12-27 17:52:02.788: W/Camera(21434): ICamera died
12-27 17:52:03.048: E/Camera(21434): Error 100
您需要设置预览显示到录音机。
mrec.setPreviewDisplay(SurfaceHolder.getSurface());
在预览显示充当输入到录像机的视频数据。您还需要确保录制的视频分辨率和预览分辨率相同。
Hi @Ravi,非常感谢你的回答。 能否请你给我更详细的信息abaut这个预览? 我必须做私人预览SurfaceHolder?然后你的代码行? – 2011-12-28 09:29:07
[这里](http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/CameraPreview.html)是在预览 – bluefalcon 2011-12-29 05:07:50
一个示例应用程序我解决了这个问题,谢谢。 – 2011-12-29 07:14:17
此异常。
这里是设置最常见的默认值的方法。请注意,此方法假定相机正在用于静态拍摄时使用默认值。删除视频捕捉支持的图片格式。
/**
* This method configures the camera with a set of defaults for brightness,
* flash, camera mode, and picture sizes.
*/
private void setCameraDefaults()
{
Camera.Parameters params = mCamera.getParameters();
// Supported picture formats (all devices should support JPEG).
List<Integer> formats = params.getSupportedPictureFormats();
if (formats.contains(ImageFormat.JPEG))
{
params.setPictureFormat(ImageFormat.JPEG);
params.setJpegQuality(100);
}
else
params.setPictureFormat(PixelFormat.RGB_565);
// Now the supported picture sizes.
List<Size> sizes = params.getSupportedPictureSizes();
Camera.Size size = sizes.get(sizes.size()-1);
params.setPictureSize(size.width, size.height);
// Set the brightness to auto.
params.setWhiteBalance(Camera.Parameters.WHITE_BALANCE_AUTO);
// Set the flash mode to auto.
params.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
// Set the scene mode to auto.
params.setSceneMode(Camera.Parameters.SCENE_MODE_AUTO);
// Lastly set the focus to auto.
params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
mCamera.setParameters(params);
}
你能后的logcat的消息? – slayton 2011-12-27 18:02:25
谢谢你回答@slayton。 我编辑我的问题与logcat错误。 – 2011-12-27 18:09:37
你如何解决它?我面临着同样的 – kinghomer 2012-11-13 19:31:41