uni-app iphone16调用uni.chooseVideo()失败
uni-app iphone16调用uni.chooseVideo()失败
示例代码:
uni.showLoading({
title: ‘视频上传中…’,
mask: true
});
uni.chooseVideo({
sourceType: [‘album’], //从相册选择
success: function (res) {
if (res.tempFilePath) {
uni.uploadFile({
//后端接口地址
url: _this.$config.uploadUrl,
//图片临时地址
filePath: res.tempFilePath,
//上传文件类型
name: ‘file’,
formData: {
tag: ‘video’
},
success: (res) => {
uni.hideLoading();
//后端返回的图片名称
let data = JSON.parse(res.data);
_this.formData.video_urls.push(data.data.url);
}
});
} else {
uni.hideLoading();
}
},
fail: function (err) {
uni.hideLoading();
}
});
## 操作步骤:
- 使用iphone16调用uni.chooseVideo()选择视频
## 预期结果:
- 希望iphone16系列调用uni.chooseVideo()选择视频后能返回临时路径
## 实际结果:
- 可唤起选择视频的界面,但是选择后没有反应
## bug描述:
- iphone16用户在调用uni.chooseVideo()时失败,可唤起选择视频的界面,但是选择后没有反应,见附件视频
| 信息类别 | 详细信息 |
|----------------|--------------------|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC开发环境版本 | windows11 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 4.29 |
| 手机系统 | iOS |
| 手机系统版本 | iOS 18 |
| 手机厂商 | 苹果 |
| 手机机型 | iphone16 |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
[normal_video.zip](//ask.dcloud.net.cn/file/download/file_name-bm9ybWFsX3ZpZGVvLnppcA==__url-Ly9pbWctY2RuLXRjLmRjbG91ZC5uZXQuY24vdXBsb2Fkcy9xdWVzdGlvbnMvMjAyNDEwMTUvY2I5MjMzZjMwNTNiMjNiOGQ4OTc1NDc4YTM3Zjk5NDA=)
HBuilderX 4.33.2024111702-alpha 已修复。
好的 谢谢
回复 c***@163.com: 我下载了最新的4.33 为什么还是报这个错误呢
还是拍摄不了视频
没有用到 HBuilderX 开发和打包的,应该怎么fix 这个问题,@dcloudio/uni-app 的版本升级到3.0.0-4030620241128001 ,也是有同样的问题。 其他辅助信息: 项目打包使用 uni -p app 命令,vue3, iphone 16 + ios 18.1.1
无效
https://ask.dcloud.net.cn/question/199774 这个帖子统一处理 ios18 到问题,如果不是一个问题,请回复我
这个帖子都是选择图片的问题,我这个是选择视频哦
回复 c***@163.com: 我转给对应的同事,这个你测试其他 ios 手机、ios 系统可以吗,HBuilderX 新建运行 hellouniapp 项目,api - 媒体 - 视频里是否可以正常选择。
回复 DCloud_UNI_OttoJi: 这个bug是我们使用iphone16的用户反馈的,目前我们的测试机只有iphone13,测试机升级到ios18后选择视频和图片均正常,应该只有iphone16+ios18有这个问题
是所有视频都有这个问题么 还是某个视频
所有的,ipone16 和16pro录制视频都获取不到
是的,我这边也是这样,目前还没解决
请问有解决吗
还没解决,你的这个机型和版本号我没有测过,不确定是不是同一个问题引起的
我也遇到这个问题了,包括使用plus.camera.getCamera().startVideoCapture也没有反应,楼主解决了吗
官方回复已经在最新的alpha版本中修复了,你将HBuilder X更新到最新的alpha版本再试试呢
回复 c***@163.com: 楼主试了吗,已经好了吗
回复 c***@163.com: @dcloudio/uni-app 需要升级到哪个版本?
请问我下载了4.33的为什么还是会出现这个错误呢
{
“errMsg”: “chooseVideo:fail 文件存在,https://ask.dcloud.net.cn/article/282”,
“errCode”: 1,
“code”: 1
}
把之前的unpackage目录移除后,再重新制定自定义基座试试呢
回复 c***@163.com: 全部删除掉么
现在有个新的问题这个 你知道怎么解决么 { “errMsg”: “chooseVideo:fail [File:-11800]这项操作无法完成,”, “errCode”: -100, “code”: -100 }
回复 a***@shsw.top: 看一下有没有访问相机和相册的权限呢
回复 c***@163.com: 作者大大 我刚才截图了 你看一下 我还需要单独配置么
回复 a***@shsw.top: 你看一下这个,https://ext.dcloud.net.cn/plugin?id=594
你好 作者 这个算是打开了么 我又从新打包自定义包了 还需要原生的设置么
遇到同样的问题,iphone16+ios18 选择视频的出bug。
项目创建的方式:使用cli脚手架,目前的版本3.0.0-4000820240401001 请问 @dcloudio/uni-app 需要升级到哪个版本可以解决问题
升级到3.0.0-4030620241128001 也无法解决问题
回复 l***@yingzi.com: hbuilderx是最新版本吗,根据hbuilderx更新日志显示,在最新的4.36版本中已修复了这个问题
回复 c***@163.com: 我整个开发过程都没有用到hbuilderx 的,所以貌似 hbuilderx 的更新无法满足我的需求。我这边的项目是用ci 脚手架 生成,vscode 开发的
回复 l***@yingzi.com: 那么你将你的@dcloudio/uni-app升级到最新版试试呢,官网肯定有同步更新cli的依赖的
回复 c***@163.com: 试了最新的了,无效
我也是啊 老哥 , ios18 选择相册视频就报错,直接拍视频可以,你解决了吗
回复 8***@qq.com: 没有,你有解决方案记得同步一下
目前发现iphone 15 pro依然有选取不到视频的错误,错误信息:
{“errMsg”:“chooseVideo:fail cancel”,“errCode”:2,“code”:2}
针对您提到的在uni-app中,特别是在iPhone 16(这里假设是指iOS设备的最新或特定版本,因为实际上截至我最后更新的信息,iPhone 16还未发布,但我们可以泛指最新的iOS设备)上调用uni.chooseVideo()
失败的问题,这通常可能与权限设置、API调用方式或iOS系统的特定限制有关。以下是一些可能的代码案例和检查点,帮助您定位和解决问题:
1. 检查权限配置
确保在manifest.json
中已正确配置相机和视频库权限:
"mp-weixin": { // 或其他平台配置
"requiredPrivateInfos": ["chooseVideo"]
},
"plus": {
"distribute": {
"apple": {
"permissions": [
"NSCameraUsageDescription", // 相机权限
"NSPhotoLibraryAddUsageDescription", // 照片库写入权限
"NSPhotoLibraryUsageDescription" // 照片库访问权限
]
}
}
}
2. 调用uni.chooseVideo()
的示例代码
确保您的调用方式符合官方文档要求:
uni.chooseVideo({
sourceType: ['album', 'camera'], // 可以指定来源为相册或相机
maxDuration: 60, // 最大录制时长,单位秒
camera: 'back', // 使用后置摄像头
success: function (res) {
console.log('视频选择成功', res.tempFilePath);
// 处理视频路径
},
fail: function (err) {
console.error('视频选择失败', err);
// 错误处理
}
});
3. 错误处理与调试
在fail
回调中打印错误信息,可以帮助您更精确地定位问题:
fail: function (err) {
console.error('chooseVideo error:', err.errMsg, err);
if (err.errMsg === 'chooseVideo:fail permission denied') {
// 权限被拒绝处理
uni.showModal({
title: '提示',
content: '需要您的授权才能访问相册或相机',
showCancel: false,
success: function () {
// 引导用户去设置页面授权
#ifdef APP-PLUS
plus.runtime.openSetting();
#endif
}
});
}
}
4. 注意事项
- 确保iOS设备上的uni-app应用已授予相机和照片库的访问权限。
- 如果是真机调试,确保使用的是最新版本的HBuilderX和uni-app SDK。
- 检查是否有其他系统级或应用级的限制阻止了权限的正常使用。
通过上述步骤,您应该能够更有效地诊断和解决在iPhone(泛指iOS设备)上调用uni.chooseVideo()
失败的问题。如果问题依旧存在,建议查看官方社区或提交issue给uni-app团队获取进一步支持。