HarmonyOS 鸿蒙Next中C++相机开发,启用实况拍照功能无法拍照

HarmonyOS 鸿蒙Next中C++相机开发,启用实况拍照功能无法拍照

C++相机开发,启用实况拍照功能无法拍照

ret = OH_PhotoOutput_EnableMovingPhoto(photoOutput_, true);

启用上面一段代码,执行拍照,预览页面卡住,无图片落盘。

请大佬指点,在C++层怎么开启实况(在哪一步),并拍照,得到实况图落盘

2 回复

在鸿蒙Next中,若C++相机开发启用实况拍照功能后无法拍照,需检查以下方面:

  1. 确认CameraKit的实况模式配置正确,调用SetPhotoConfigenableLivePhoto参数设为true
  2. 验证相机硬件能力是否支持实况拍照,通过GetCameraAbility检查ohos.camera.Ability.LIVE_PHOTO能力
  3. 确保存储路径有足够空间,实况照片需要同时保存JPEG和MOV文件
  4. 检查拍照回调函数是否正确处理了实况照片的双数据流

典型代码片段:

PhotoConfig config;
config.enableLivePhoto(true);
camera->SetPhotoConfig(config);

更多关于HarmonyOS 鸿蒙Next中C++相机开发,启用实况拍照功能无法拍照的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS Next的C++相机开发中,启用实况拍照功能需要注意以下几点:

  1. 确保正确初始化PhotoOutput和CaptureSession,实况拍照需要在拍照前启用:
// 启用实况拍照必须在拍照前调用
OH_PhotoOutput_EnableMovingPhoto(photoOutput_, true);
  1. 检查相机权限是否完整,实况拍照需要额外权限:
<uses-permission ohos:name="ohos.permission.CAMERA"/>
<uses-permission ohos:name="ohos.permission.MICROPHONE"/> 
<uses-permission ohos:name="ohos.permission.READ_MEDIA"/>
<uses-permission ohos:name="ohos.permission.WRITE_MEDIA"/>
  1. 建议的拍照流程时序:
  1. 创建PhotoOutput
  2. 调用EnableMovingPhoto(true)
  3. 开始预览
  4. 执行拍照操作
  1. 常见问题排查:
  • 检查存储路径是否可写
  • 确认设备支持实况拍照功能
  • 查看日志中是否有权限拒绝或IO错误
  1. 完整示例参考:
// 创建PhotoOutput后立即启用
OH_PhotoOutput_Create(cameraDevice_, &photoOutput_);
OH_PhotoOutput_EnableMovingPhoto(photoOutput_, true);

// 配置拍照参数后执行拍照
OH_Camera_Capture(camera_, photoOutput_, nullptr);

注意实况照片会同时保存静态图片和动态视频片段,存储时间比普通拍照稍长。

回到顶部