Flutter camera持续输出BufferQueueProducer日志如何解决
Flutter camera插件实时流场景持续输出BufferQueueProducer日志问题排查
问题对应日志
相机启动后终端持续输出以下内容,无法自动停止:
I/BufferQueueProducer(13803): SurfaceTexture-0-13803-9 queueBuffer: slot 0 is dropped, handle=0x78a1f90640 I/BufferQueueProducer(13803): SurfaceTexture-0-13803-9 queueBuffer: fps=29.40 dur=1020.32 max=47.33 min=20.83
诱发原因
- 注:该类日志不属于应用崩溃级报错,不会直接导致功能异常,本质是Android系统图形缓冲区队列的Info级常规输出,核心触发逻辑是摄像头帧生产速度高于消费速度,未及时被处理的帧被系统自动回收丢弃时就会打印
slot x is dropped提示,带fps参数的行是系统定期输出的缓冲区队列帧率统计信息。 - 常见具体触发场景:
- 实时帧处理逻辑(如水果检测模型推理)耗时过长,无法匹配摄像头约30fps的输出节奏,导致帧持续积压丢弃
- 相机预览组件未正确挂载到可见Widget树,或应用切后台、预览界面被其他元素完全遮挡时,预览帧无有效渲染消费通道,持续生成的帧被系统丢弃
- 低版本camera插件未做原生日志过滤,默认放行Android系统的这类无关Info日志,导致终端持续刷屏
修复方案
- 优化帧处理性能:不要逐帧送入检测逻辑,新增抽帧规则(如每2-3帧取1帧做推理),将模型推理运算放到独立Isolate中执行,避免阻塞UI线程和帧消费线程,从根源减少帧积压。
- 校准相机生命周期逻辑:应用切后台、页面退出时及时调用相机控制器的
dispose()方法释放资源,禁止在无预览、无帧处理需求的场景下保持相机流开启;确认预览组件已正确挂载到可见Widget层级,避免出现相机启动但无渲染目标的问题。 - 冗余日志屏蔽:若确认业务逻辑运行正常、预览和检测功能无卡顿,可在Android端主Activity中添加日志过滤规则,屏蔽
BufferQueueProducer标签的Info级输出;也可将camera插件升级到0.10.x及以上稳定版本,新版本已默认屏蔽这类无业务关联的系统日志。 - 性能兜底优化:如果伴随预览卡顿、检测掉帧严重的情况,可适当降低相机预览分辨率(如从1080P调整为720P),减少单帧数据体积,降低帧处理的性能开销。
内容的提问来源于stack exchange,提问作者jumair ahmad
相关产品推荐
相关产品推荐

