项目本来是采用MediaRecorder来录制视频并对视频进行处理获取信息。后改变方式转用onPreviewFrame来获取预览帧直接处理。但是始终无法进入到onPreviewFrame函数内部,无法正确回调。
我已经用camera.setPreviewCallback(this);
触发了回调函数(这里常用的有三种回调函数,不在此处详细说了),但是依旧没有办法进入onPreviewFrame函数。
在我单独写的demo程序中是可以成功的,故将问题定位在预览帧的回调与录制视频类的不兼容(估计是删的不干净)在仔细排查了代码的不同和查了很多资料发现:
使用到MediaRecorder时需要camera.unlock();导致了onPreviewFrame()不会被调用到,所以在录制视频时不能同时形成帧图片。

注释掉上图两行代码,可以获取到预览帧。
总结:
- 是否使用了三种回调函数触发了onPreviewFrame
//一直调用
void setPreviewCallback (Camera