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返回的宽高值可能会受到以下因素影响:
- iOS设备拍摄的视频通常使用HEVC(H.265)编码,自带旋转信息
- 压缩处理可能导致视频的旋转信息丢失或被忽略
- 返回的宽高值可能没有正确考虑视频的orientation元数据
建议的解决方案:
- 检查返回结果中的orientation参数(如果有)
- 可以尝试使用plus.io的API获取更详细的视频信息
- 如果需要精确控制,可以考虑使用原生插件处理视频
临时解决方法是在获取到宽高后,根据设备方向进行交换:
if(uni.getSystemInfoSync().platform === 'ios') {
[width, height] = [height, width]
}