uni-app 苹果端使用 uni.chooseVideo 选择视频文件时 视频的大小 宽 高 信息均不正确
uni-app 苹果端使用 uni.chooseVideo 选择视频文件时 视频的大小 宽 高 信息均不正确
示例代码:
uni.chooseVideo({
compressed: false,
success: (res) => {
console.log(res)
this.videoFilePath = res.tempFilePath
this.isVideo = true
}
})
操作步骤:
在苹果端使用uni.chooseVideo选择一个视频可以看到,宽,高,大小增大2倍左右。
预期结果:
宽高视频大小正常
实际结果:
宽高视频大小异常
bug描述:
在苹果端使用uni.chooseVideo 选择视频返回的宽、高、大小均不正确。不管选择原图不原图,压缩不压缩,只在苹果端出现此Bug,安卓端正常。
将手机里的视频通过隔空传送传到mac对比。发现视频1.5M chooseVideo获得的大小是3.2m左右width 360 height 640
与原视频相差巨大 原视频大小width 720 height 1280 导致视频上传到服务器之后出现模糊宽高不正确
更多关于uni-app 苹果端使用 uni.chooseVideo 选择视频文件时 视频的大小 宽 高 信息均不正确的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你把 这个视频 写一个简单的工程 发到附件里 帮你看
更多关于uni-app 苹果端使用 uni.chooseVideo 选择视频文件时 视频的大小 宽 高 信息均不正确的实战教程也可以访问 https://www.itying.com/category-93-b0.html
马上
回复 Hi校园: 已经上传
如果每一次视频不手动选择原图。那么从你不选择视频原图往后起,之后的视频不论你选择原图不原图压缩不压缩的大小全部异常,宽高异常
已经上传附件。
刚测试我又发现一个问题,苹果端第一次如果视频选择原图那么之后的视频大小可能正常。
如果不选择原图,你把 compressed:false,自动压缩关闭。它还是会压缩,按理说压缩之后文件大小应该是变小。
但是他是变大且模糊
好 我看一下
回复 天生DR:你好,怎么样?项目着急上线
回复 Hi校园: 在看了 稍等啊 基本逻辑是 你选完后 uni 会根据选中的视频 用苹果的API 重新export 一个新视频 这个生成视频 好像会有这个问题
回复 天生DR: 好 谢谢了 等你解决方案
回复 天生DR: 你好,我现在发行的微信小程序,苹果手机拍摄视频设置不压缩,但是拍完看到的效果还是压缩过的,视频模糊,这个是什么情况呢?
回复 1***@qq.com: ios端压缩更大的情况还是有哦,您那边解决了吗
此问题已在 HX 3.1.6+ 版本修复
请问楼主解决了这个问题了吗?
此问题已在 HX 3.1.6+ 版本修复
回复 天生DR: ios端压缩更大的情况还是有哦
回复 百倍: 你看下API 默认是压缩的 压缩会对尺寸做压缩 不想对尺寸压缩 设置参数
回复 天生DR: 有设置 uni.chooseVideo API 中的compressed字段为:false的。ios端压缩还是会更大
回复 百倍: 你说的大 是尺寸 还是容量大小?
回复 天生DR: size属性
回复 百倍: 例:压缩前40M 压缩后50M IOS端就会这样
回复 百倍: 你提供一个可以稳定浮现的demo 弄到附件 我来查
回复 百倍: 你新开一个帖子 然后 私信我吧
这是一个已知的iOS平台上的问题,uni.chooseVideo在iOS端返回的视频元数据确实存在不准确的情况。
原因分析:
- iOS系统在处理视频文件时,会返回经过系统处理的视频信息,而不是原始文件的元数据
- 特别是当视频经过iCloud同步或HEVC编码时,这种现象更为明显
临时解决方案:
- 可以使用uni.getVideoInfo来获取更准确的视频信息
- 或者通过后端处理来获取视频的真实尺寸和大小
替代方案代码示例:
uni.chooseVideo({
compressed: false,
success: async (res) => {
const videoInfo = await uni.getVideoInfo({
src: res.tempFilePath
});
console.log('修正后的视频信息:', videoInfo);
this.videoFilePath = res.tempFilePath;
this.isVideo = true;
}
});