HarmonyOS 鸿蒙Next OH_CaptureSession_Stop(captureSession) 失败,错误码7400201 及 OH_CameraInput_Close(cameraInput) 失败,错误码7400201
HarmonyOS 鸿蒙Next OH_CaptureSession_Stop(captureSession) 失败,错误码7400201 及 OH_CameraInput_Close(cameraInput) 失败,错误码7400201
void NemoSDKCamera::stopCapture()
{
OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "begin stopCapture.");
Camera_ErrorCode ret;
if (imageReceiverOutput != nullptr) {
ret = OH_PreviewOutput_Stop(imageReceiverOutput);
if (ret != CAMERA_OK) {
OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "OH_PreviewOutput_Stop failed.");
}
}
if (captureSession != nullptr) {
ret = OH_CaptureSession_Stop(captureSession);
if (ret != CAMERA_OK) {
OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "OH_CaptureSession_Stop failed.");
}
}
if (cameraInput != nullptr) {
ret = OH_CameraInput_Close(cameraInput);
if (ret != CAMERA_OK) {
OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "OH_CameraInput_Release failed.");
}
ret = OH_CameraInput_Release(cameraInput);
if (ret != CAMERA_OK) {
OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "OH_CameraInput_Close failed.");
}
}
if (imageReceiverOutput != nullptr) {
ret = OH_PreviewOutput_Release(imageReceiverOutput);
if (ret != CAMERA_OK) {
OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "OH_PreviewOutput_Release failed.");
}
}
if (captureSession != nullptr) {
ret = OH_CaptureSession_Release(captureSession);
if (ret != CAMERA_OK) {
OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "OH_CaptureSession_Release failed.");
}
}
OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "stopCapture OK.");
}
更多关于HarmonyOS 鸿蒙Next OH_CaptureSession_Stop(captureSession) 失败,错误码7400201 及 OH_CameraInput_Close(cameraInput) 失败,错误码7400201的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
相机回调顺序问题,cameraInput.open()为异步方法,后续代码在open操作执行完之前就进行会出现此错误。
参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/native-camera-shooting-case-V5 中示例调整下释放顺序。
OH_CaptureSession_Stop ==> OH_CameraInput_Close ==> OH_PreviewOutput_Release
更多关于HarmonyOS 鸿蒙Next OH_CaptureSession_Stop(captureSession) 失败,错误码7400201 及 OH_CameraInput_Close(cameraInput) 失败,错误码7400201的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
cameraInput和PreviewOutput写的有问题,这两个地方即stop又release,导致问题。
cameraInput 只要执行OH_CameraInput_Close,PreviewOutput只要执行OH_PreviewOutput_Release就可以了。资源释放使用方法顺序:OH_CaptureSession_Stop ==> OH_PreviewOutput_Release ==> OH_CameraInput_Close ==> OH_CaptureSession_Release
调整顺序之后OH_CameraInput_Close failed.ret:7400201,OH_PreviewOutput_Stop failed.ret:7400201 报错
OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "begin stopVideoCapture.");
Camera_ErrorCode ret;
if (captureSession != nullptr) {
ret = OH_CaptureSession_Stop(captureSession);
if (ret != CAMERA_OK) {
OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "OH_CaptureSession_Stop failed.ret:%{public}d", ret);
}
}
if (cameraInput != nullptr) {
ret = OH_CameraInput_Close(cameraInput);
if (ret != CAMERA_OK) {
OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "OH_CameraInput_Release failed.ret:%{public}d", ret);
}
ret = OH_CameraInput_Release(cameraInput);
if (ret != CAMERA_OK) {
OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "OH_CameraInput_Close failed.ret:%{public}d", ret);
}
this->cameraInput = nullptr;
}
if (imageReceiverOutput != nullptr) {
ret = OH_PreviewOutput_Stop(imageReceiverOutput);
if (ret != CAMERA_OK) {
OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "OH_PreviewOutput_Stop failed.ret:%{public}d", ret);
}
ret = OH_PreviewOutput_Release(imageReceiverOutput);
if (ret != CAMERA_OK) {
OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "OH_PreviewOutput_Release failed.ret:%{public}d", ret);
}
this->imageReceiverOutput = nullptr;
}
if (captureSession != nullptr) {
ret = OH_CaptureSession_Release(captureSession);
if (ret != CAMERA_OK) {
OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "OH_CaptureSession_Release failed.ret:%{public}d", ret);
}
this->captureSession = nullptr;
}
OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, LOG_TAG_CAMERA, "camera stop Capture OK.");
针对HarmonyOS鸿蒙系统中OH_CaptureSession_Stop(captureSession)
和OH_CameraInput_Close(cameraInput)
函数调用失败,并返回错误码7400201的问题,以下提供可能的解决方案:
错误码7400201通常指示资源或状态问题。在处理摄像头相关的操作时,此错误可能意味着摄像头资源正被其他应用或服务占用,或者摄像头会话状态不正确。
-
检查摄像头权限:确保应用已正确申请并获得了摄像头使用权限。
-
摄像头会话状态:在调用
OH_CaptureSession_Stop
和OH_CameraInput_Close
之前,确认摄像头会话已正确启动,并且没有其他操作(如同时启动另一个会话)正在干扰。 -
资源释放:在调用
OH_CaptureSession_Stop
后,确保所有与该会话相关的资源(如预览窗口、输出流等)已正确释放,再尝试关闭cameraInput
。 -
错误处理:在代码中添加适当的错误处理逻辑,以捕获并响应此类错误,可能包括重试机制或用户提示。
-
系统日志:查看系统日志以获取更多关于错误发生时的上下文信息,这有助于诊断问题。
如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html,