uni-app 使用uni.chooseVideo上传视频后视频宽高反的 "width":"1920","height":"1080" 竖拍显示横屏 几个安卓手机均有问题
uni-app 使用uni.chooseVideo上传视频后视频宽高反的 “width”:“1920”,“height”:“1080” 竖拍显示横屏 几个安卓手机均有问题
| 项目信息 | 详情 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 3.1.13 |
| 手机系统 | Android |
| 手机系统版本号 | Android 9.0 |
| 手机厂商 | 小米 |
| 手机机型 | 小米8 |
| 页面类型 | vue |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
操作步骤:
uni.chooseVideo({
count: 1,
sourceType: ['camera', 'album'],
compressed: true,
success: function (res) {
console.log(res.width);
console.log(res.height);
console.log(res.size);
}
});
预期结果:
返回的视频大小是 宽 972 高 1728
实际结果:
返回的视频大小是 宽 1728 高 972 ,视频原大小是1080*1920
bug描述:
在app中使用uni.chooseVideo 选择和拍摄的视频,返回的宽高 是反的 “width”:“1920”,“height”:“1080” ,实际上我视频的分辨率是1080*1920
更多关于uni-app 使用uni.chooseVideo上传视频后视频宽高反的 "width":"1920","height":"1080" 竖拍显示横屏 几个安卓手机均有问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 使用uni.chooseVideo上传视频后视频宽高反的 "width":"1920","height":"1080" 竖拍显示横屏 几个安卓手机均有问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个常见的设备方向元数据问题。在Android设备上,竖屏拍摄的视频文件通常包含旋转元数据(如90度旋转标记),但部分设备在返回视频信息时未能正确解析方向信息,导致宽高值互换。
解决方案:
- 使用临时修正方案:
uni.chooseVideo({
count: 1,
sourceType: ['camera', 'album'],
compressed: true,
success: function (res) {
// 检测并修正宽高
let width = res.width;
let height = res.height;
// 如果宽大于高,且原始视频应该是竖屏,则交换宽高
if (width > height && res.duration > 0) {
[width, height] = [height, width];
}
console.log('修正后宽高:', width, height);
}
});
- 检查视频实际方向: 可以通过获取视频文件的方向信息进行更精确的判断:
// 使用plus.io读取视频文件方向信息
plus.io.resolveLocalFileSystemURL(res.tempFilePath, function(entry) {
entry.file(function(file) {
// 这里可以获取文件的完整信息
console.log('视频文件信息:', file);
});
});

