一、前言
关于HarmonyOS开发中,针对相机视频流做数据处理的注意事项说明,查缺补漏有不足的地方大家可以提出来。
二、关于视频流的buffer处理方式
- 建议将buffer存储到一个新的地址空间,并且不与ability和组件做绑定,如下代码可以实现针对arraybuffer的copy,其他类型可以自行查找api进行同样效果的操作。
// TODO 解决退出界面释放资源后导致的数据被销毁问题
let dataBuffer: ArrayBuffer = buffer.slice(0, buffer.byteLength);
if (dataBuffer.byteLength == 0) {
return result;
}
其中slice()函数这里说明下:
slice
slice(start?: number, end?: number, type?: string): Blob
创建并返回一个复制原Blob对象中指定数据长度的Blob新对象。
- 异步处理数据的过程尽量和组件的生命周期相同
简单来说就是组件销毁,处理的数据的过程也要及时销毁或停止,包括后台切换等等。