uni-app uni.chooseVideo在IOS系统下上传的横向和竖向视频宽高都统一为960和540

uni-app uni.chooseVideo在IOS系统下上传的横向和竖向视频宽高都统一为960和540

示例代码:

uni.chooseVideo({ sizeType: [‘original’, ‘compressed’], //可以指定是原图还是压缩图,默认二者都有 // sourceType: [‘album’], //从相册选择 success:(res) => { console.log(res) } })


## 操作步骤:
从相册上传和拍摄都会有这种情况

## 预期结果:
竖向视频应该宽高是正确的

## 实际结果:
竖向视频和横向视频宽高一样

## bug描述:
uni.chooseVideo在IOS系统下上传的横向和竖向视频宽高都统一为960和540,在Android系统下没有复现,uni.getVideoInfo获取到的orientation值也全都是up,附件展示的是两个在图库里的视频

| 信息类别     | 信息内容   |
|--------------|------------|
| 产品分类     | uniapp/App |
| PC开发环境操作系统 | Windows    |
| PC开发环境操作系统版本号 | win10      |
| HBuilderX类型 | 正式       |
| HBuilderX版本号 | 4.45       |
| 手机系统     | iOS        |
| 手机系统版本号 | iOS 18     |
| 手机厂商     | 苹果       |
| 手机机型     | iPhone11   |
| 页面类型     | vue        |
| vue版本      | vue2       |
| 打包方式     | 云端       |
| 项目创建方式 | HBuilderX   |

![Image 1](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20250213/79d7bbcd754021c9d6006c8675f614cd.png)
![Image 2](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20250213/08a090433297646c20863ac621e3f0a5.png)
![Image 3](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20250213/a47d7b982f523706e107a27ba1eba719.png)
![Image 4](https://www.itying.com/uniimg.php?url=https://img-cdn-tc.dcloud.net.cn/uploads/questions/20250213/3e4393449bdc2580b43c8ecfac45ac8f.png)

更多关于uni-app uni.chooseVideo在IOS系统下上传的横向和竖向视频宽高都统一为960和540的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

如图 只要从IOS选择竖屏视频上传,就会变成横屏展示

更多关于uni-app uni.chooseVideo在IOS系统下上传的横向和竖向视频宽高都统一为960和540的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni.chooseVideo 把这个属性调整为false可以解决

这是iOS系统下uni.chooseVideo的一个已知问题,iOS系统会对选择的视频进行统一压缩处理,导致宽高信息丢失。建议通过以下方式解决:

  1. 使用uni.chooseMedia替代uni.chooseVideo,这个API在iOS下能保留原始视频尺寸信息:
uni.chooseMedia({
  count: 1,
  mediaType: ['video'],
  success(res) {
    console.log(res.tempFiles[0].width, res.tempFiles[0].height)
  }
})
  1. 如果需要获取视频真实方向信息,可以使用plus.io.resolveLocalFileSystemURL获取文件后,通过H5的video元素读取元数据:
const video = document.createElement('video')
video.src = res.tempFilePath
video.onloadedmetadata = () => {
  console.log(video.videoWidth, video.videoHeight)
}
回到顶部