- 当前 Bug 的表现(可附上截图)
因为2.7.0版本出了个新的API,CameraFrameListener,我这里是准备实时将画面帧进行像素处理后用canvasPutImageData实时绘制到canvas画布上,大概启动几秒后摄像头画面和canvas开始慢慢卡顿,直到后面卡到几乎无法使用,微信会重启,应该是内存溢出了,通过内存面板看内存飙到接近500M但是CPU为0%,也写了flag让canvasPutImageData绘制完成后再进行下一帧绘制。依然很卡
但是假如在canvasPutImageData绘制之前或之后使用canvas的draw函数就不会出现卡顿,非常流畅。很诡异。莫非canvasPutImageData是一直在叠加数据么。
还有另一个关于CameraFrameListener真机调试会闪退的问题:https://developers.weixin.qq.com/community/develop/doc/0004ee64084ef0d1099875c8257000
- 预期表现
不卡顿,流畅处理
- 复现路径
频繁调用canvasPutImageData即出现
- 提供一个最简复现 Demo
https://developers.weixin.qq.com/s/SSIZPpmh7L8J
因为 CameraFrameListener 返回的 frame 数据量很大且很频繁,目前 canvas 处理大量数据性能不佳。建议使用的 webgl 来处理帧数据。
我们也在优化 canvas 2d 的性能,现阶段暂时只能用 WebGL 来渲染相机数据。
好的,谢谢
请问webGL怎么渲染相机数据?
使用代码片段怎么复现这个问题呢?具体的机型、系统版本号、微信版本号是?
预览即可,等摄像画面出来后,canvas也会绘制摄像的画面,等待几秒后开始慢慢的变得卡顿,等十几秒后就差不多卡的用不了了 机型小米mix2s,系统Android9,微信7.0.4