uni-app 微信浏览器内ios选择视频被自动压缩了
uni-app 微信浏览器内ios选择视频被自动压缩了
示例代码:
uni.chooseVideo({
sourceType: ['album'],
compressed: false,
success: (res) => {
console.log("【成功】选择结果:", res);
if (res.size > maxBit) {
reject("文件不能超过30M");
} else {
resolve(res);
}
},
fail: (err) => {
console.log("【失败】",err);
if(err.errMsg.indexOf('cancel') !== -1){
} else {
reject(err);
}
}
});
操作步骤:
选择视频然后上传,设置不压缩了还是被自动压缩了
预期结果:
选择的视频不被压缩
实际结果:
视频被自动压缩了
bug描述:
代码已经设置compressed
为false
,iOS还是会自动压缩视频。
看别人发的帖子说alpha版本已经修复了,结果bug还是存在,希望尽快修复
compressed 仅支持微信小程序、百度小程序、字节跳动小程序、飞书小程序、京东小程序、App,平台差异说明
既然H5不支持,compressed这个参数默认值是true,那就应该是所有都自动压缩。 而我测试的是只有ios上传会压缩,安卓和pc都不会,感觉有点说不通。
回复 DCloud_UNI_GSQ: 这个上传自动压缩的问题还是存在,方便加个联系方式吗
在 uni-app 中,当你在微信浏览器内使用 iOS 设备选择视频时,可能会遇到视频被自动压缩的问题。这是由于微信浏览器在 iOS 上的一些限制和处理机制所导致的。
问题原因
微信浏览器在 iOS 上会对用户选择的视频进行自动压缩,以减少上传流量和提高用户体验。这种行为是微信内置的处理机制,开发者无法直接控制。
解决方案
虽然无法完全避免微信浏览器的自动压缩,但可以尝试以下方法来减少影响:
-
使用原生 H5 文件选择控件
在uni-app
中,确保使用了标准的<input type="file">
控件来选择视频文件。微信浏览器会根据其内置逻辑处理文件。<input type="file" accept="video/*" [@change](/user/change)="handleFileChange" />
-
压缩后处理
如果视频被压缩,可以在上传到服务器后,通过后端服务对视频进行进一步处理或恢复质量。 -
使用原生插件
如果需要更高的控制权,可以考虑使用uni-app
的原生插件能力,调用 iOS 的原生 API 来选择视频文件。这样可能会绕过微信浏览器的限制。 -
引导用户使用其他浏览器
如果视频质量对应用至关重要,可以提示用户使用其他浏览器(如 Safari)来上传视频。 -
微信小程序替代
如果应用场景允许,考虑将功能迁移到微信小程序中。微信小程序对文件上传有更好的控制能力,可以避免部分限制。
代码示例
以下是一个简单的文件选择示例:
<template>
<view>
<input type="file" accept="video/*" [@change](/user/change)="handleFileChange" />
</view>
</template>
<script>
export default {
methods: {
handleFileChange(event) {
const file = event.target.files[0];
if (file) {
console.log("Selected file:", file);
// 处理文件上传逻辑
}
},
},
};
</script>