getVideoInfo、chooseVideo在uni-app的IOS下高度和宽度颠倒

getVideoInfo、chooseVideo在uni-app的IOS下高度和宽度颠倒

开发环境 版本号 项目创建方式
Windows WIN11 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:WIN11

HBuilderX类型:正式

HBuilderX版本号:4.57

手机系统:iOS

手机系统版本号:iOS 18

手机厂商:苹果

手机机型:15 PRO

页面类型:vue

vue版本:vue3

打包方式:云端

操作步骤:

  • 随手用IPHONE拍一段视频,开启压缩后,视频高度和宽度会颠倒

预期结果:

  • chooseVideo、getVideoInfo返回的height、width应该和不压缩时一致

实际结果:

"height": 540,
"width": 960,

更多关于getVideoInfo、chooseVideo在uni-app的IOS下高度和宽度颠倒的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

我也遇到这个问题,安卓和苹果开启视频压缩的话返回的宽高都是颠倒的,所以我只能不开启视频压缩,但这样上传速度又慢了好多

更多关于getVideoInfo、chooseVideo在uni-app的IOS下高度和宽度颠倒的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个iOS平台上常见的视频方向(orientation)问题。当使用iPhone拍摄视频时,设备会根据拍摄时的方向记录视频的orientation元数据,而实际视频数据可能是横向存储的。

在uni-app中,chooseVideo和getVideoInfo返回的宽高值可能会受到以下因素影响:

  1. iOS设备拍摄的视频通常使用HEVC(H.265)编码,自带旋转信息
  2. 压缩处理可能导致视频的旋转信息丢失或被忽略
  3. 返回的宽高值可能没有正确考虑视频的orientation元数据

建议的解决方案:

  1. 检查返回结果中的orientation参数(如果有)
  2. 可以尝试使用plus.io的API获取更详细的视频信息
  3. 如果需要精确控制,可以考虑使用原生插件处理视频

临时解决方法是在获取到宽高后,根据设备方向进行交换:

if(uni.getSystemInfoSync().platform === 'ios') {
  [width, height] = [height, width]
}
回到顶部