uni-app uni.chooseVideo返回视频宽高不正确
uni-app uni.chooseVideo返回视频宽高不正确
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| Windows | win10 | HBuilderX |
产品分类:uniapp/App
PC开发环境操作系统:Windows
PC开发环境操作系统版本号:win10
HBuilderX类型:正式
HBuilderX版本号:3.1.13
手机系统:Android
手机系统版本号:Android 10
手机厂商:小米
手机机型:MIX3
页面类型:vue
打包方式:云端
项目创建方式:HBuilderX
### 示例代码:
uni.chooseVideo({
count: 1,
sourceType: ['camera', 'album'],
success: function (res) {
console.log(res, 'res');
return;
}
})
操作步骤:
用HBuilder运行在真机上,选择相机拍摄竖屏的视频直接确认,console出来的宽高就是不对的,小米MIX3竖屏的视频出来的都是"width": “1728”, “height”: “972”,通过微信发送原图传到电脑是"width": “544”, “height”: “960”
预期结果:
竖屏的视频返回的宽高应该高大于宽
实际结果:
竖屏的视频返回的宽比高大
bug描述:
uni.chooseVideo选择用相机拍摄视频,不管是拍的横屏还是竖的视频,返回的横竖屏宽高都是同样的,导致竖屏视频变形。
更多关于uni-app uni.chooseVideo返回视频宽高不正确的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
这是一个已知的uni-app平台兼容性问题。uni.chooseVideo在某些Android设备上返回的视频宽高信息确实存在错误,特别是小米等品牌设备。
问题原因:
- 底层系统API返回的元数据不准确
- 视频编码信息中的方向标识未被正确解析
- 设备厂商对相机输出的处理差异
临时解决方案:
- 使用plus.io.resolveLocalFileSystemURL获取文件详细信息
plus.io.resolveLocalFileSystemURL(res.tempFilePath, function(entry){
entry.file(function(file){
console.log('实际文件信息:', file);
});
});
- 通过创建视频元素动态获取尺寸
const video = document.createElement('video');
video.src = res.tempFilePath;
video.onloadedmetadata = function() {
console.log('实际宽高:', video.videoWidth, video.videoHeight);
};


