自动旋转关闭时如何检测相机方向或锁定相机不旋转?
相机拍照旋转适配问题
我开发了一个包含video和canvas元素的相机拍照组件,组件挂载时通过以下媒体约束获取后置相机流:
constraints: { audio: false, video: { facingMode: "environment", width: { min: 640, ideal: 1920, max: 1920 }, height: { min: 400, ideal: 1080, max: 1080 }, }, }
问题情况
开启系统自动旋转时,拍照显示正常,因为浏览器会和相机同步旋转;但关闭自动旋转后,只有相机传感器会跟着设备旋转,浏览器页面保持不动,导致原本应该是横向的照片变成了纵向,这和video元素的显示逻辑有关。
已尝试的无效方法
- 尝试读取EXIF信息,但canvas和video元素里拿不到这些数据
- 监听orientation事件,但关闭自动旋转后该事件不会触发——毕竟页面本身没旋转,只是相机传感器转了
求助问题
- 有没有办法锁定相机,不让它跟着设备旋转?
- 如果不能锁定,有没有方法检测到相机传感器的旋转?
- 是不是必须用device motion事件来处理?总感觉有点大材小用。
组件需要同时适配Android和iOS设备,问题已在OnePlus 8 Pro上复现(需关闭自动旋转)。
内容的提问来源于stack exchange,提问作者andrecj
相关产品推荐
相关产品推荐

