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 回复

HBuilderX 3.6.1-alpha 已修复

更多关于uni-app uni.chooseVideo返回视频宽高不正确的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个已知的uni-app平台兼容性问题。uni.chooseVideo在某些Android设备上返回的视频宽高信息确实存在错误,特别是小米等品牌设备。

问题原因:

  1. 底层系统API返回的元数据不准确
  2. 视频编码信息中的方向标识未被正确解析
  3. 设备厂商对相机输出的处理差异

临时解决方案:

  1. 使用plus.io.resolveLocalFileSystemURL获取文件详细信息
plus.io.resolveLocalFileSystemURL(res.tempFilePath, function(entry){
    entry.file(function(file){
        console.log('实际文件信息:', file);
    });
});
  1. 通过创建视频元素动态获取尺寸
const video = document.createElement('video');
video.src = res.tempFilePath;
video.onloadedmetadata = function() {
    console.log('实际宽高:', video.videoWidth, video.videoHeight);
};
回到顶部