getParameters failed (empty parameters) 问题解决

最近改代码,删掉了原来录制视频做处理的逻辑,改用onPreviewFrame来回调到预览帧处理。

修改后出现了这个错误getParameters failed (empty parameters)

出现这个错误大概率是在采集视频,需要认真的管理Camera对象,以及跟MediaRecorder类的协调。当使用Camera对象记录视频时,除了Camera.open()和Camera.release()方法的调用以外,还必须管理Camera.lock()和Camera.unlock()方法的调用,从而允许MediaRecorder对象访问Camera硬件。
unlock 应放置在 camera.setParameters(parameters); 后面

//设置Camera 的代码
    camera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
    camera.lock();
    Camera.Parameters parameters = camera.getParameters();
    camera.setDisplayOrientation(90);
    camera.enableShutterSound(false);
    parameters.setPreviewFrameRate(25);
    camera.setParameters(parameters);
    camera.unlock();
    //后面跟设置MediaRecorder的代码
<center>

在这里插入图片描述

  • Probably the most common reason would be closing/releasing the camera while still using it afterward.
  • This can be especially problematic if you are using the Camera object on multiple threads without synchronizing access to the Camera.
  • Make sure you only ever have a single thread accessing the Camera at a time.

最大的可能是Camera释放不彻底,关闭或释放后仍旧在使用。或者是多个线程可能在不加锁的情况下争用Camera。应保证每个时间最多只有一个线程访问Camera。

此处参考Correct handling of exception: “getParameters failed (empty parameters)”

解决这个问题,可以在出问题的代码前后加上lock和unlock,在声明Parameters前加lock,防止其他的线程访问,在 camera.setParameters(parameters); 后面设置unlock,使mediarecorder可以访问。

在出错的地方,看下是否没有设置,加这两行试一下。
在这里插入图片描述

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值