Android摄像头服务器死亡,相机错误100 [英] Android Camera Server Died and Camera ERROR 100

查看:2203
本文介绍了Android摄像头服务器死亡,相机错误100的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有我的aplication著名相机错误100,我发现在这个论坛上的一些话题,但对我没有答案,可以宇帮帮我吗?

下面是我的code

  MREC =新MediaRecorder(); //效果很好

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(/ SD卡/ zzzz.3gp);

MREC prepare()。
mrec.start();
 

下面是logcat的错误:

  12-27 17:52:02.788:W / IMediaDeathNotifier(21434):媒体服务器死亡
12-27 17:52:02.788:W /摄像头(21434):相机服务器死了!
12-27 17:52:02.788:W /摄像头(21434):ICamera死亡
12-27 17:52:03.048:E /摄像机(21434):错误100
 

下面是不错的code摄像机记录(对于进一步的问题,随时问)

 保护无效startRecordingVideo()抛出IOException异常
{
相机= Camera.open();
camera.unlock();
SimpleDateFormat的timeStampFormat =新的SimpleDateFormat(
        YYYY-MM-DD-HH.MM.SS);
字符串文件名=video_+ timeStampFormat.format(新日期())
        +名为.3gp;
字符串fileURL =/ SD卡/+文件名;
surfaceView =(SurfaceView)findViewById(R.id.surface_camera);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(本);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
MREC =新MediaRecorder();

mrec.setCamera(照相机);

mrec.set previewDisplay(surfaceHolder.getSurface());
mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
    mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
    mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW));
    mrec.set previewDisplay(surfaceHolder.getSurface());
    mrec.setOutputFile(/ SD卡/+文件名);

    MREC prepare()。
    mrec.start();
}

保护无效STO precordingVideo(){
mrec.stop();
mrec.release();
camera.release();
}

私人无效releaseMediaRecorder(){
如果(MREC!= NULL){
    mrec.reset(); //清晰的记录配置
    mrec.release(); //释放录像机对象
    MREC = NULL;
    camera.lock();
  }
}

私人无效releaseCamera(){
如果(相机!= NULL){
    camera.release();
    摄像头= NULL;
}
}

@覆盖
公共无效surfaceChanged(SurfaceHolder持有人,INT格式,诠释的宽度,
    INT高度){
// TODO自动生成方法存根
}


@覆盖
公共无效surfaceCreated(SurfaceHolder持有者){
// TODO自动生成方法存根

如果(相机!= NULL){
    参数PARAMS = camera.getParameters();
    camera.setParameters(PARAMS);
}
其他 {
    Toast.makeText(getApplicationContext(),摄像机不可!,Toast.LENGTH_LONG).show();
    完();
}
}


@覆盖
公共无效surfaceDestroyed(SurfaceHolder持有者){
releaseMediaRecorder();
camera.stop preVIEW();
camera.release();


}
 

解决方案

您需要设置preVIEW显示的记录。

mrec.set previewDisplay(SurfaceHolder.getSurface());

在preVIEW显示充当输入到录像机的视频数据。另外,你需要确保视频分辨率为记录和preVIEW分辨率是一样的。

i have the famous Camera error 100 on my aplication, i have found some topics on this forum but no answer for me, could yu please help me?

Here is my code

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(); 

Here are the logcat errors:

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

Here is the good code for the camera recording (for further question, feel free to ask)

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();


}   

解决方案

You need to set the preview display to the recorder.

mrec.setPreviewDisplay(SurfaceHolder.getSurface());

The video data in the preview display acts as the input to the video recorder. Also you need to ensure that the video resolution for the recording and the preview resolution are the same.

这篇关于Android摄像头服务器死亡,相机错误100的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆