我正在尝试为Android设备构建一个简单的录像机,但我的成功有限并且结果好坏参半.它工作一次,但现在,没有改变任何东西,我得到一个"相机不可用"错误,然后"准备失败-2147483648"错误
预览器的构造函数看起来像
private SurfaceHolder holder_;
private MediaRecorder r_;
public CameraPreview(Context context, AttributeSet attrs) {
super(context, attrs);
holder_ = getHolder();
holder_.addCallback(this);
holder_.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
r_ = new MediaRecorder();
r_.setAudioSource(MediaRecorder.AudioSource.MIC);
r_.setVideoSource(MediaRecorder.VideoSource.CAMERA);
r_.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
r_.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
r_.setVideoEncoder(MediaRecorder.VideoEncoder.MPEG_4_SP);
}
Run Code Online (Sandbox Code Playgroud)
和我的
surfaceCreated()
Run Code Online (Sandbox Code Playgroud)
方法看起来像
@Override
public void surfaceCreated(SurfaceHolder holder) {
r_.setPreviewDisplay(holder_.getSurface());
r_.setOutputFile("/sdcard/test.mpg");
if (r_ != null){
try{
r_.prepare();
r_.start();
}catch(Exception e){
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
谢谢,克里斯
我没有使用过视频录制,但是Camera对于静态图片的类,你必须通过明确的方式释放Camera对象release().不这样做意味着相机将无限期地捆绑(可能直到重新启动).
如果你还没有叫release()上MediaRecorder,你可能会遇到同样的问题.