• Lv1
    粉丝0

积分0 / 贡献0

提问1答案被采纳0文章0

作者动态

    rk3568 openharmony 6.1双摄像头(前后摄)camera_host_config.hcs要如何配置,相机应用才能看到2个摄像头,并能够来回切换?

    andyang 显示全部楼层 发表于 2026-6-26 17:12:01

    【问题描述】

    1. 介绍问题现象和发生的背景 2个gc05a2 sensor,前后摄,目前无法在相机应用中看到2个摄像头并能来回切

    2. 相关的代码(请勿使用截图)

      camera_host_config.hcs文件root { module="sample"; vdiLibList = [ "libcamera_host_vdi_impl_1.0.z.so" ]; camera_host_config { match_attr = "camera_host_interface"; template ability { logicCameraId = "lcam001"; physicsCameraIds = [ "CAMERA_FIRST", "CAMERA_SECOND" ]; metadata { aeAvailableAntiBandingModes = [ "OHOS_CONTROL_AE_ANTIBANDING_MODE_OFF", "OHOS_CONTROL_AE_ANTIBANDING_MODE_50HZ", "OHOS_CONTROL_AE_ANTIBANDING_MODE_60HZ", "OHOS_CONTROL_AE_ANTIBANDING_MODE_AUTO" ]; aeAvailableModes = ["OHOS_CONTROL_AE_MODE_ON"]; availableFpsRange = [15, 30]; aeCompensationRange = [0, 0]; aeCompensationSteps = [0, 1]; availableAwbModes = [ "OHOS_CONTROL_AWB_MODE_OFF" ]; sceneModesOverrides = [ "OHOS_CONTROL_AE_MODE_ON", "OHOS_CONTROL_AWB_MODE_AUTO" ]; aeLockAvailable = "OHOS_CONTROL_AE_LOCK_AVAILABLE_FALSE"; awbLockAvailable = "OHOS_CONTROL_AWB_LOCK_AVAILABLE_FALSE"; sensitivityRange = [32, 2400]; exposureTimeRange = [100000, 200000000]; faceDetectMode = "OHOS_STATISTICS_FACE_DETECT_MODE_OFF"; maxFaceCount = 0; flashAvailable = "OHOS_FLASH_INFO_AVAILABLE_FALSE"; lensFacing = "OHOS_LENS_FACING_FRONT"; opticalStabilizations = ["OHOS_LENS_OPTICAL_STABILIZATION_MODE_OFF"]; maxDigitalZoom = "1"; availableCharacteristicsKeys = [ "OHOS_COLOR_CORRECTION_AVAILABLE_ABERRATION_MODES", "OHOS_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES", "OHOS_CONTROL_AE_AVAILABLE_MODES", "OHOS_ABILITY_FPS_RANGES", "OHOS_CONTROL_AE_COMPENSATION_RANGE", "OHOS_CONTROL_AE_COMPENSATION_STEP", "OHOS_CONTROL_AVAILABLE_EFFECTS", "OHOS_CONTROL_AVAILABLE_SCENE_MODES", "OHOS_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES", "OHOS_CONTROL_AWB_AVAILABLE_MODES", "OHOS_CONTROL_MAX_REGIONS", "OHOS_CONTROL_SCENE_MODE_OVERRIDES", "OHOS_CONTROL_AE_LOCK_AVAILABLE", "OHOS_CONTROL_AWB_LOCK_AVAILABLE", "OHOS_CONTROL_AVAILABLE_MODES", "OHOS_JPEG_AVAILABLE_THUMBNAIL_SIZES", "OHOS_JPEG_MAX_SIZE", "OHOS_SENSOR_INFO_PIXEL_ARRAY_SIZE", "OHOS_SENSOR_INFO_ACTIVE_ARRAY_SIZE", "OHOS_SENSOR_INFO_SENSITIVITY_RANGE", "OHOS_SENSOR_INFO_COLOR_FILTER_ARRANGEMENT", "OHOS_SENSOR_INFO_EXPOSURE_TIME_RANGE", "OHOS_SENSOR_ORIENTATION", "OHOS_SENSOR_AVAILABLE_TEST_PATTERN_MODES", "OHOS_SENSOR_INFO_PHYSICAL_SIZE", "OHOS_SENSOR_INFO_TIMESTAMP_SOURCE", "OHOS_STATISTICS_INFO_AVAILABLE_FACE_DETECT_MODES", "OHOS_STATISTICS_INFO_MAX_FACE_COUNT", "OHOS_SYNC_MAX_LATENCY", "OHOS_FLASH_INFO_AVAILABLE", "OHOS_LENS_INFO_AVAILABLE_APERTURES", "OHOS_LENS_FACING", "OHOS_LENS_INFO_AVAILABLE_FOCAL_LENGTHS", "OHOS_LENS_INFO_AVAILABLE_OPTICAL_STABILIZATION", "OHOS_LENS_INFO_HYPERFOCAL_DISTANCE", "OHOS_LENS_INFO_MINIMUM_FOCUS_DISTANCE", "OHOS_NOISE_REDUCTION_AVAILABLE_NOISE_REDUCTION_MODES", "OHOS_SCALER_AVAILABLE_MAX_DIGITAL_ZOOM", "OHOS_SCALER_AVAILABLE_STREAM_CONFIGURATIONS", "OHOS_SCALER_AVAILABLE_STALL_DURATIONS", "OHOS_SCALER_AVAILABLE_MIN_FRAME_DURATIONS", "OHOS_SCALER_CROPPING_TYPE", "OHOS_INFO_SUPPORTED_HARDWARE_LEVEL", "OHOS_REQUEST_PARTIAL_RESULT_COUNT", "OHOS_REQUEST_PIPELINE_MAX_DEPTH", "OHOS_REQUEST_MAX_NUM_OUTPUT_STREAMS", "OHOS_REQUEST_MAX_NUM_INPUT_STREAMS", "OHOS_REQUEST_AVAILABLE_CAPABILITIES" ]; availableRequestKeys = [ "OHOS_CONTROL_AE_MODE", "OHOS_CONTROL_AE_EXPOSURE_COMPENSATION", "OHOS_CONTROL_AE_PRECAPTURE_TRIGGER", "OHOS_CONTROL_AE_TARGET_FPS_RANGE", "OHOS_CONTROL_AE_ANTIBANDING_MODE", "OHOS_CONTROL_AWB_MODE", "OHOS_CONTROL_AWB_LOCK", "OHOS_FLASH_MODE", "OHOS_STATISTICS_FACE_DETECT_MODE", "OHOS_NOISE_REDUCTION_MODE", "OHOS_COLOR_CORRECTION_ABERRATION_MODE", "OHOS_LENS_APERTURE", "OHOS_LENS_OPTICAL_STABILIZATION_MODE", "OHOS_CONTROL_MODE", "OHOS_CONTROL_CAPTURE_INTENT" ]; availableResultKeys = [ "OHOS_CONTROL_AE_STATE", "OHOS_CONTROL_AE_LOCK", "OHOS_CONTROL_AWB_STATE", "OHOS_CONTROL_AWB_LOCK", "OHOS_LENS_STATE", "OHOS_REQUEST_PIPELINE_DEPTH", "OHOS_SCALER_CROP_REGION", "OHOS_SENSOR_TIMESTAMP", "OHOS_SENSOR_ROLLING_SHUTTER_SKEW", "OHOS_SENSOR_EXPOSURE_TIME", "OHOS_STATISTICS_LENS_SHADING_MAP_MODE", "OHOS_STATISTICS_SCENE_FLICKER", "OHOS_JPEG_SIZE", "OHOS_JPEG_QUALITY", "OHOS_JPEG_ORIENTATION" ]; } } ability_01 :: ability { logicCameraId = "lcam001"; physicsCameraIds = [ "CAMERA_FIRST" ]; metadata { aeAvailableAntiBandingModes = [ "OHOS_CAMERA_AE_ANTIBANDING_MODE_OFF" ]; aeAvailableModes = ["OHOS_CAMERA_AE_MODE_OFF"]; availableFpsRange = [30, 30]; cameraPosition = "OHOS_CAMERA_POSITION_BACK"; cameraType = "OHOS_CAMERA_TYPE_WIDE_ANGLE"; cameraConnectionType ="OHOS_CAMERA_CONNECTION_TYPE_BUILTIN"; cameraMemoryType ="OHOS_CAMERA_MEMORY_USERPTR"; faceDetectMaxNum = "10"; aeCompensationRange = [0, 0]; aeCompensationSteps = [0, 0]; availableAwbModes = [ "OHOS_CAMERA_AWB_MODE_OFF" ]; sensitivityRange = [32, 2400]; faceDetectMode = "OHOS_CAMERA_FACE_DETECT_MODE_OFF"; availableCharacteristicsKeys = [ "OHOS_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES", "OHOS_CONTROL_AE_AVAILABLE_MODES", "OHOS_ABILITY_FPS_RANGES", "OHOS_CONTROL_AE_COMPENSATION_RANGE", "OHOS_CONTROL_AE_COMPENSATION_STEP", "OHOS_CONTROL_AWB_AVAILABLE_MODES", "OHOS_JPEG_AVAILABLE_THUMBNAIL_SIZES", "OHOS_JPEG_MAX_SIZE", "OHOS_SENSOR_INFO_PIXEL_ARRAY_SIZE", "OHOS_SENSOR_INFO_ACTIVE_ARRAY_SIZE", "OHOS_SENSOR_INFO_SENSITIVITY_RANGE", "OHOS_SENSOR_INFO_PHYSICAL_SIZE", ]; availableRequestKeys = [ "OHOS_CONTROL_AE_MODE", "OHOS_CONTROL_AE_EXPOSURE_COMPENSATION", "OHOS_CONTROL_AE_TARGET_FPS_RANGE", "OHOS_CONTROL_AE_ANTIBANDING_MODE", "OHOS_CONTROL_AWB_MODE", "OHOS_CONTROL_AWB_LOCK", "OHOS_STATISTICS_FACE_DETECT_MODE" ]; availableResultKeys = [ "OHOS_CONTROL_AE_LOCK", "OHOS_CONTROL_AWB_LOCK", "OHOS_SENSOR_EXPOSURE_TIME", "OHOS_JPEG_SIZE", "OHOS_JPEG_QUALITY", "OHOS_JPEG_ORIENTATION" ]; focalLength = "24.0"; focusAvailableModes = [ "OHOS_CAMERA_FOCUS_MODE_MANUAL", "OHOS_CAMERA_FOCUS_MODE_CONTINUOUS_AUTO", "OHOS_CAMERA_FOCUS_MODE_AUTO", "OHOS_CAMERA_FOCUS_MODE_LOCKED" ]; exposureAvailableModes = [ "OHOS_CAMERA_EXPOSURE_MODE_MANUAL", "OHOS_CAMERA_EXPOSURE_MODE_CONTINUOUS_AUTO", "OHOS_CAMERA_EXPOSURE_MODE_LOCKED", "OHOS_CAMERA_EXPOSURE_MODE_AUTO" ]; meterAvailableModes = [ "OHOS_CAMERA_SPOT_METERING", "OHOS_CAMERA_REGION_METERING", "OHOS_CAMERA_OVERALL_METERING" ]; flashAvailableModes = [ "OHOS_CAMERA_FLASH_MODE_CLOSE", "OHOS_CAMERA_FLASH_MODE_OPEN", "OHOS_CAMERA_FLASH_MODE_AUTO", "OHOS_CAMERA_FLASH_MODE_ALWAYS_OPEN" ]; mirrorSupported = "OHOS_CAMERA_MIRROR_OFF"; //basicAvailableConfigurations = [1, 640, 480, 4, 1280, 960]; basicAvailableConfigurations = [1, 2592, 1944, 4, 2592, 1944]; extendAvailableConfigurations = [0, 0, 1, 640, 480, 0, -1, 1, 1, 640, 480, 30, -1, 2, 4, 1280, 960, 0, -1, -1]; sensorOrientationSupported = "270"; videoStabilizationAvailableModes = [ "OHOS_CAMERA_VIDEO_STABILIZATION_OFF" ]; flashAvailable = "OHOS_CAMERA_FLASH_FALSE"; afAvailable = [ "OHOS_CAMERA_AF_MODE_OFF" ]; zoomRatioRange = [ "1.0", "1.0" ]; jpegOrientation= "270"; jpegQuality= "2"; } } ability_02 :: ability { logicCameraId = "lcam002"; physicsCameraIds = [ "CAMERA_SECOND" ]; metadata { aeAvailableAntiBandingModes = [ "OHOS_CAMERA_AE_ANTIBANDING_MODE_OFF" ]; aeAvailableModes = ["OHOS_CAMERA_AE_MODE_OFF"]; availableFpsRange = [30, 30]; cameraPosition = "OHOS_CAMERA_POSITION_FRONT"; cameraType = "OHOS_CAMERA_TYPE_WIDE_ANGLE"; cameraConnectionType ="OHOS_CAMERA_CONNECTION_TYPE_BUILTIN"; cameraMemoryType ="OHOS_CAMERA_MEMORY_USERPTR"; faceDetectMaxNum = "10"; aeCompensationRange = [0, 0]; aeCompensationSteps = [0, 0]; availableAwbModes = [ "OHOS_CAMERA_AWB_MODE_OFF" ]; sensitivityRange = [32, 2400]; faceDetectMode = "OHOS_CAMERA_FACE_DETECT_MODE_OFF"; availableCharacteristicsKeys = [ "OHOS_CONTROL_AE_AVAILABLE_ANTIBANDING_MODES", "OHOS_CONTROL_AE_AVAILABLE_MODES", "OHOS_ABILITY_FPS_RANGES", "OHOS_CONTROL_AE_COMPENSATION_RANGE", "OHOS_CONTROL_AE_COMPENSATION_STEP", "OHOS_CONTROL_AWB_AVAILABLE_MODES", "OHOS_JPEG_AVAILABLE_THUMBNAIL_SIZES", "OHOS_JPEG_MAX_SIZE", "OHOS_SENSOR_INFO_PIXEL_ARRAY_SIZE", "OHOS_SENSOR_INFO_ACTIVE_ARRAY_SIZE", "OHOS_SENSOR_INFO_SENSITIVITY_RANGE", "OHOS_SENSOR_INFO_PHYSICAL_SIZE", ]; availableRequestKeys = [ "OHOS_CONTROL_AE_MODE", "OHOS_CONTROL_AE_EXPOSURE_COMPENSATION", "OHOS_CONTROL_AE_TARGET_FPS_RANGE", "OHOS_CONTROL_AE_ANTIBANDING_MODE", "OHOS_CONTROL_AWB_MODE", "OHOS_CONTROL_AWB_LOCK", "OHOS_STATISTICS_FACE_DETECT_MODE" ]; availableResultKeys = [ "OHOS_CONTROL_AE_LOCK", "OHOS_CONTROL_AWB_LOCK", "OHOS_SENSOR_EXPOSURE_TIME", "OHOS_JPEG_SIZE", "OHOS_JPEG_QUALITY", "OHOS_JPEG_ORIENTATION" ]; focalLength = "24.0"; focusAvailableModes = [ "OHOS_CAMERA_FOCUS_MODE_MANUAL", "OHOS_CAMERA_FOCUS_MODE_CONTINUOUS_AUTO", "OHOS_CAMERA_FOCUS_MODE_AUTO", "OHOS_CAMERA_FOCUS_MODE_LOCKED" ]; exposureAvailableModes = [ "OHOS_CAMERA_EXPOSURE_MODE_MANUAL", "OHOS_CAMERA_EXPOSURE_MODE_CONTINUOUS_AUTO", "OHOS_CAMERA_EXPOSURE_MODE_LOCKED", "OHOS_CAMERA_EXPOSURE_MODE_AUTO" ]; meterAvailableModes = [ "OHOS_CAMERA_SPOT_METERING", "OHOS_CAMERA_REGION_METERING", "OHOS_CAMERA_OVERALL_METERING" ]; flashAvailableModes = [ "OHOS_CAMERA_FLASH_MODE_CLOSE", "OHOS_CAMERA_FLASH_MODE_OPEN", "OHOS_CAMERA_FLASH_MODE_AUTO", "OHOS_CAMERA_FLASH_MODE_ALWAYS_OPEN" ]; mirrorSupported = "OHOS_CAMERA_MIRROR_OFF"; //basicAvailableConfigurations = [1, 640, 480, 4, 1280, 960]; basicAvailableConfigurations = [3, 2592, 1944, 4, 2592, 1944]; extendAvailableConfigurations = [0, 0, 1, 640, 480, 0, -1, 1, 1, 640, 480, 30, -1, 2, 4, 1280, 960, 0, -1, -1]; sensorOrientationSupported = "270"; videoStabilizationAvailableModes = [ "OHOS_CAMERA_VIDEO_STABILIZATION_OFF" ]; flashAvailable = "OHOS_CAMERA_FLASH_FALSE"; afAvailable = [ "OHOS_CAMERA_AF_MODE_OFF" ]; zoomRatioRange = [ "1.0", "1.0" ]; jpegOrientation= "270"; jpegQuality= "2"; } } } }

    3. 运行结果、错误截图

      [ 1.161177] gc05a2 2-003f: driver version: 00.01.01 [ 1.161252] gc05a2 2-003f: Failed to get power-gpios, maybe no use [ 1.161406] gc05a2 2-003f: Failed to get pwdn-gpios [ 1.161471] gc05a2 2-003f: supply avdd not found, using dummy regulator [ 1.161693] gc05a2 2-003f: supply dovdd not found, using dummy regulator [ 1.161812] gc05a2 2-003f: supply dvdd not found, using dummy regulator [ 1.161896] gc05a2 2-003f: lane_num(2) pixel_rate(178612800) [ 1.161921] gc05a2 2-003f: could not get default pinstate [ 1.161935] gc05a2 2-003f: could not get sleep pinstate [ 1.169684] gc05a2 reg 3f0 return 0x5 [ 1.170180] mmc2: SDHCI controller on fe310000.sdhci [fe310000.sdhci] using ADMA [ 1.170262] gc05a2 reg 3f1 return 0xa2 [ 1.170273] gc05a2 2-003f: detected gc05a2 sensor [ 1.170529] rockchip-csi2-dphy csi2-dphy2: dphy2 matches m01_f_gc05a2 2-003f:bus type 5 [ 1.171295] gc05a2 4-0037: driver version: 00.01.01 [ 1.171380] gc05a2 4-0037: Failed to get power-gpios, maybe no use [ 1.171464] gc05a2 4-0037: Failed to get pwdn-gpios [ 1.171523] gc05a2 4-0037: supply avdd not found, using dummy regulator [ 1.171745] gc05a2 4-0037: supply dovdd not found, using dummy regulator [ 1.171858] gc05a2 4-0037: supply dvdd not found, using dummy regulator [ 1.171927] gc05a2 4-0037: lane_num(2) pixel_rate(178612800) [ 1.171953] gc05a2 4-0037: could not get default pinstate [ 1.171967] gc05a2 4-0037: could not get sleep pinstate [ 1.179859] gc05a2 reg 3f0 return 0x5 [ 1.180424] gc05a2 reg 3f1 return 0xa2 [ 1.180452] gc05a2 4-0037: detected gc05a2 sensor [ 1.180529] rockchip-csi2-dphy csi2-dphy1: dphy1 matches m00_b_gc05a2 4-0037:bus type 5

      sensor均正常识别到,且在android11系统下,板子所有硬件都已经调通,包括双sensor,在android的相机应用中可以正常看到2个摄像头并正常切换

    4. 我尝试过的解决方法和结果

      反复调整camera_host_config.hcs文件,均无法实现

    5. 我想要达到的结果

      能够在相机应用上看到2个摄像头,且能正常切换

    【运行环境】

    硬件:rk3568嵌入式设备 ROM版本: DevEvoStudio版本:未使用 SDK版本:openharmony 6.1

    您尚未登录,无法参与评论,登录后可以:
    参与开源共建问题交流
    认同或收藏高质量问答
    获取积分成为开源共建先驱

    Copyright   ©2025  OpenHarmony开发者论坛  京ICP备2020036654号-3 | 京公网安备11030102011662号 |技术支持 Discuz!

    返回顶部