uni-app ios使用uni.chooseVideo时指定compressed参数为false时报错
uni-app ios使用uni.chooseVideo时指定compressed参数为false时报错
项目信息 | 详情 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Mac |
PC操作系统版本 | macOS Sonoma 14.5 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 4.36 |
手机系统 | iOS |
手机系统版本 | iOS 17 |
手机厂商 | 苹果 |
手机机型 | iPhone 13 Pro Max |
页面类型 | vue |
Vue版本 | vue3 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
操作步骤:
ios使用uni.chooseVideo时指定compressed参数为false时报错
{ “errMsg”: “chooseVideo:fail [File:-11800]这项操作无法完成,”, “code”: -100 }
### 预期结果:
返回选择的文件路径
### 实际结果:
实际返回了错误
### bug描述:
ios使用uni.chooseVideo时指定compressed参数为false时报错
{
"errMsg": "chooseVideo:fail [File:-11800]这项操作无法完成,",
"code": -100
}
这个 api 是个别文件不能压缩,还是都不能压缩,提供个空白工程展示你的具体用法把,提供 vue 和 HBuilderX 依赖版本。你测试是模拟器是否正常,其他同事的手机是否正常,排除个别手机的问题
已找到原因,手机内存空间不足时会产生该错误,建议将错误信息明确下
在处理uni-app在iOS平台上使用uni.chooseVideo
方法时指定compressed
参数为false
导致的报错问题,我们首先需要明确uni.chooseVideo
方法的参数和行为。在uni-app的官方文档中,compressed
参数用于指定录制视频是否压缩,设置为false
意味着不压缩视频。然而,iOS系统对视频录制和文件处理有其自身的限制和默认行为,这可能导致在不压缩视频时遇到兼容性问题或系统限制。
由于你提到设置compressed
为false
时报错,这里提供一个基本的代码示例,同时展示如何捕获并处理可能的错误。需要注意的是,由于我无法直接在你的环境中测试,以下代码更多是一个指导性的示例,用于展示如何处理可能的错误情况。
uni.chooseVideo({
sourceType: ['album', 'camera'], // 可以指定来源为相册或相机
maxDuration: 60, // 最大录制时长,单位秒
camera: 'back', // 使用后置摄像头
compressed: false, // 不压缩视频(注意:iOS上可能导致问题)
success: function (res) {
console.log('视频选择成功', res.tempFilePath);
// 处理成功选择的视频文件路径
},
fail: function (err) {
console.error('视频选择失败', err);
// 处理错误情况
// 可以在这里提示用户错误信息,或者采取其他错误处理策略
// 例如,根据错误类型提示用户iOS不支持不压缩视频
if (err.code === 'specific_ios_error_code') { // 假设有一个特定的iOS错误码
uni.showToast({
title: 'iOS不支持不压缩视频,请尝试其他设置。',
icon: 'none'
});
} else {
uni.showToast({
title: '视频选择失败,请重试。',
icon: 'none'
});
}
}
});
在上述代码中,我们使用了uni.chooseVideo
方法,并设置了compressed
为false
。重要的是,我们在fail
回调中添加了错误处理逻辑,以捕获并响应可能的错误。由于具体的iOS错误码可能不是公开的或者文档中没有明确说明,你需要根据实际情况调整错误处理逻辑。
如果确实需要在iOS上不压缩视频,而uni-app的默认行为或限制导致无法实现,你可能需要考虑以下替代方案:
- 使用原生iOS开发(Swift或Objective-C)来实现不压缩视频的需求。
- 联系uni-app的开发团队,询问关于iOS平台上
compressed
参数的具体支持和限制。 - 接受视频压缩作为当前平台的一个限制,并调整应用逻辑以适应这一点。