uni-app iphone16调用uni.chooseVideo()失败

发布于 1周前 作者 h691938207 来自 Uni-App

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=)

41 回复

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

npx @dcloudio/uvm@latest 最新的 正式版 3.0.0-4030620241128001 npx @dcloudio/uvm@latest alpha 最新的 alpha 版本 3.0.0-alpha-4030620241126001

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录制视频都获取不到

同样遇到该问题,也是没有机型复现。并且我们代码里面写了走到fail的日志记录也没有执行。估计是没有走到错误回调里。

是的,我这边也是这样,目前还没解决

请问有解决吗

iphone8 , ios14,也是选择视频失败,请问有解决方法吗

还没解决,你的这个机型和版本号我没有测过,不确定是不是同一个问题引起的

我也遇到这个问题了,包括使用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

回复 c***@163.com: 这个如果我用4.29的版本打包 就可以上传 但是4.29又不支持iPhone16 上传视频 这是为什么呢 我看的权限都打开了

你好 作者 这个算是打开了么 我又从新打包自定义包了 还需要原生的设置么

遇到同样的问题,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团队获取进一步支持。

回到顶部