Android摄像头服务器死亡,相机错误100 [英] Android Camera Server Died and Camera ERROR 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屋!