uni-app uni.chooseVideo 参数compressed为false时 在ios17上无法选择视频
uni-app uni.chooseVideo 参数compressed为false时 在ios17上无法选择视频
产品分类
uniapp/App
开发环境、版本号及项目创建方式
项 | 信息 |
---|---|
PC开发环境操作系统 | Windows |
PC开发环境操作系统版本号 | win10 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.36 |
手机系统 | iOS |
手机系统版本号 | iOS 17 |
手机厂商 | 苹果 |
手机机型 | 13 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
示例代码
chooseVideo: function() {
uni.chooseVideo({
camera: this.cameraList[this.cameraIndex].value,
sourceType: sourceType[this.sourceTypeIndex],
compressed: false,
success: (res) => {
this.src = res.tempFilePath
},
fail: (err) => {
// #ifdef MP
uni.getSetting({
success: (res) => {
let authStatus = false;
switch (this.sourceTypeIndex) {
case 0:
authStatus = res.authSetting['scope.camera'];
break;
case 1:
authStatus = res.authSetting['scope.album'];
break;
case 2:
authStatus = res.authSetting['scope.album'] && res
.authSetting['scope.camera'];
break;
default:
break;
}
if (!authStatus) {
uni.showModal({
title: '授权失败',
content: 'Hello uni-app需要从您的相机或相册获取视频,请在设置界面打开相关权限',
success: (res) => {
if (res.confirm) {
uni.openSetting()
}
}
})
}
}
})
// #endif
}
})
}
操作步骤
在官方的example代码中,修改参数 compressed: false
,即可复现。
预期结果
可以不压缩选择视频。
实际结果
compressed: false
的时候,选择不了视频,报错:chooseVideo:fail [File:-11800]这项操作无法完成
。当为 true
时,可以选择。
bug描述
当 uni.chooseVideo
的 compressed
参数为 false
时,选择不了视频,报错:chooseVideo:fail [File:-11800]这项操作无法完成
。使用官方的例程也是同样的现象。
这个问题使用自定义基座或者更新到4.44
针对您提到的 uni-app
中 uni.chooseVideo
方法在 iOS 17
上设置 compressed
为 false
时无法选择视频的问题,这通常是由于平台兼容性问题或者API行为变更导致的。在 uni-app
框架中,uni.chooseVideo
方法的 compressed
参数用于控制是否压缩选中的视频文件。设置为 false
时,意味着用户选中的视频将不会被压缩,从而可能保持较高的分辨率和文件大小。
虽然 uni-app
官方文档通常会提供基本的API使用方法,但针对特定平台(如iOS 17)的问题,可能需要额外的处理或者利用平台特性进行适配。以下是一个基本的 uni.chooseVideo
使用示例,同时包含一些可能的调试思路,但请注意,直接代码修复可能受限于具体的SDK版本和平台行为:
uni.chooseVideo({
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机
maxDuration: 60, // 最大录制时长,单位秒
camera: 'back', // 使用前置或后置摄像头
compressed: false, // 不压缩视频
success: function (res) {
console.log('选择视频成功:', res.tempFilePath);
// 这里可以处理选中的视频路径,比如上传等操作
},
fail: function (err) {
console.error('选择视频失败:', err);
// 在iOS 17上,如果compressed为false导致失败,这里会捕获到错误信息
// 可以根据错误信息进一步调试或提供用户友好的提示
}
});
针对iOS 17的特定问题,您可以考虑以下几个方向:
-
检查SDK版本:确保您使用的
uni-app
和相关依赖库(如HBuilderX)是最新版本,因为新版本可能修复了旧版本的bug。 -
平台适配:如果问题依旧存在,考虑在调用
uni.chooseVideo
前检查平台信息,对iOS 17做特殊处理,比如临时设置compressed
为true
或者提供用户引导说明。 -
反馈问题:如果上述方法都不能解决问题,建议向
uni-app
的官方社区或者GitHub仓库提交issue,附上详细的复现步骤和日志信息,以便开发者团队能够定位并修复问题。 -
替代方案:作为临时解决方案,可以考虑使用网页端或其他原生插件进行视频选择,以绕过
uni.chooseVideo
在特定平台上的问题。
希望这些信息能帮助您解决问题!