IOS uni-app uni.chooseVideo拍摄视频或者选择手动拍摄的视频返回的宽高是相反的
IOS uni-app uni.chooseVideo拍摄视频或者选择手动拍摄的视频返回的宽高是相反的
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Mac | M1 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Mac
手机系统:iOS
手机系统版本号:iOS 17
手机厂商:苹果
手机机型:iPhone 12
页面类型:vue
vue版本:vue2
打包方式:云端
示例代码:
uni.chooseVideo({ count: 1, compressed: true, sourceType: this.sourceType, success: (res) => { console.log(‘res-----’, res); resolve(res) }, fail: (err) => { reject(err) } })
操作步骤:
直接上传视频就出现了
预期结果:
“width”: 540, “height”: 960
实际结果:
{
"errMsg": "chooseVideo:ok",
"tempFilePath": "file:///var/mobile/Containers/Data/Application/73C33F8A-3ED9-4EB0-8865-CE888023B19E/Documents/Pandora/apps/F04482F80421C52814AB6FA5A0507FE9/doc/uniapp_temp_1745374407767/gallery/IMG_9172_compressMedium.mp4",
"size": 3941871,
"duration": 20,
"width": 960,
"height": 540
}
bug描述:
uni.chooseVideo拍摄视频或者选择手动拍摄的视频返回的宽高是相反的
更多关于IOS uni-app uni.chooseVideo拍摄视频或者选择手动拍摄的视频返回的宽高是相反的的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
这是一个iOS系统下常见的视频方向问题。在iOS设备上,视频的元数据中会包含旋转信息(rotation),但部分API可能没有正确处理这个旋转标记,导致返回的宽高与实际显示方向不符。
解决方案:
- 使用uni.getVideoInfo获取更准确的视频信息:
uni.getVideoInfo({
src: res.tempFilePath,
success: (infoRes) => {
console.log('视频信息:', infoRes);
// 这里会返回包含旋转角度的完整信息
}
});
- 手动处理方向问题:
// 判断是否需要交换宽高
const shouldSwap = res.width > res.height; // 根据你的业务逻辑调整
const width = shouldSwap ? res.height : res.width;
const height = shouldSwap ? res.width : res.height;