You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CameraX中VideoCapture与ImageCapture方向不一致问题如何解决

CameraX VideoCapture与ImageCapture方向不一致问题解决方案
  • 统一所有用例的旋转配置,绑定生命周期前完成设置
    不要在bindToLifecycle()执行后修改setTargetRotation参数,该操作仅会修改视频元数据的旋转标识,不会调整底层输出的裁剪逻辑,是出现裁剪异常的核心原因。正确做法是构建Preview、ImageCapture、VideoCapture三个用例时,就将三者的setTargetRotation参数设置为同一个值,与自定义预览控件使用的Preview.getResolutionInfo().getRotationDegrees()返回值完全对齐。
  • 对齐VideoCapture与Preview的裁剪规则
    自定义Preview使用getCropRect()做裁剪时,需要给VideoCapture也配置相同的分辨率和裁剪策略:通过ResolutionSelector指定VideoCapture的目标分辨率与Preview的输出分辨率一致,同时设置setCropStrategy(CropStrategy.CROP_SCALE_TYPE_FIT_CENTER)(替换为自定义预览使用的缩放类型),保证两者的裁剪区域完全匹配,避免内容裁剪错误。
  • 开启VideoCapture的相机输出旋转对齐能力
    针对Android 12及以上系统,构建VideoCapture时可添加setOutputRotationSource(OutputRotationSource.CAMERA)配置,该配置会让VideoCapture的输出旋转逻辑完全对齐ImageCapture的默认逻辑,无需手动计算旋转角度即可保证两者方向一致。
  • 轻量修正最终视频的旋转属性
    若以上配置仍存在方向偏差,可在视频捕获完成后,通过MediaMuxer给输出的视频文件写入正确的旋转角度元数据,该操作无需重编码视频,执行速度快,也不会出现内容裁剪异常。
  • 额外注意点:自定义Preview提供的Surface尺寸需要和VideoCapture的目标分辨率比例完全一致,避免底层自动做比例适配裁剪,导致预览和录制内容不一致。

内容的提问来源于stack exchange,提问作者Jack Threadfin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 01:27:02