HarmonyOS Camera kit 双路预览方案频繁开关相机底层崩溃

Camera kit 双路预览方案实现视频数据回调,频繁(间隔1秒,开关20次以内)开关相机底层崩溃。

【备注】:分析崩溃日志显示,崩溃在系统底层的 ImageReceiverNapi::DoCallBack 。后来注释了receiver.on('imageArrival') 回调后,频繁开关相机不会崩溃。

HarmonyOS
2024-08-12 14:53:37
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
FengTianYa

关相机过程中释放receiver需要同步调用release,否则频繁切换,再次打开相机,因为异步调用的原因,start相机中初始化receiver后才执行stop中receiver的release方法,导致receiver调用时机不对。

/** 
 * 停止相机采集 
 * @param callback 底层接口回调 
 */ 
async stopCamera(callback?: Function) { 
  isStop = true; 
  if (this.mVideoSession) { 
    this.mVideoSession.off('error'); 
    //停止当前会话 
    await this.mVideoSession.stop(); 
  } 
  if (this.mCameraManager) { 
    this.mCameraManager.off('cameraStatus'); 
  } 
  if (mReceiver) { 
    await mReceiver.release(); 
    mReceiver = undefined; 
  } 
  if (this.mPreviewOutputData) { 
    await this.mPreviewOutputData.release(); 
  } 
  if (this.mCameraInput) { 
    this.mCameraInput.off('error', this.mSelCameraDevice); 
    await this.mCameraInput.close(); 
  } 
  if (this.mVideoSession) { 
    //释放会话 
    await this.mVideoSession.release(); 
  } 
  if (callback) { 
    callback(200, ""); 
  } 
}
分享
微博
QQ
微信
回复
2024-08-13 11:58:52
相关问题
如何实现预览+录制功能
1080浏览 • 1回复 待解决
HarmonyOS Camera Kit相机问题
11浏览 • 1回复 待解决
camera 获取预览数据
1844浏览 • 1回复 待解决