uni-app uni.chooseVideo这个怎么一直加载没有
uni-app uni.chooseVideo这个怎么一直加载没有
问题描述
使用这个方法一直获取不到临时地址,一直正在加载中,请问有大神知道这是什么问题吗?如附件图!!!!
getVideo() {
uni.chooseVideo({
sourceType: ['camera'], // 摄像头
success: (res) => {
console.log("视频上传成功2", res);
}
});
}
图片
更多关于uni-app uni.chooseVideo这个怎么一直加载没有的实战教程也可以访问 https://www.itying.com/category-93-b0.html
针对 uni.chooseVideo 一直加载无响应的问题,结合代码和常见场景,以下是分步解决方案:
一、基础排查(必做)
添加完整回调函数
getVideo() {
uni.chooseVideo({
sourceType: [‘camera’], // 摄像头
success: (res) => {
console.log(“成功获取视频”, res);
// 确保 res.tempFilePath 存在
if (res.tempFilePath) {
// 你的后续逻辑
} else {
console.error(“未获取到视频路径”);
}
},
fail: (err) => { // 必须添加 fail 回调
console.error(“调用失败”, err);
uni.showToast({ title: 错误: ${err.errMsg}
, icon: ‘none’ });
}
});
}
关键点:通过 fail 回调捕获具体错误信息(如用户取消、权限拒绝等)
二、权限问题处理
- 动态权限申请(Android/iOS)
// 在页面 onLoad 或按钮点击时检查权限
async checkCameraPermission() {
const [err, res] = await uni.authorize({
scope: ‘scope.camera’
}).catch(e => [e]);
if (res.authSetting[‘scope.camera’]) {
this.getVideo();
} else {
uni.showModal({
title: ‘需要摄像头权限’,
content: ‘请在设置中允许访问摄像头’,
success: (modalRes) => {
if (modalRes.confirm) {
uni.openSetting(); // 跳转设置页
}
}
});
}
}
2. 平台差异处理
iOS:需在 manifest.json 中配置摄像头权限描述
“app-plus”: {
“modules”: {
“Camera”: {
“description”: “需要访问您的摄像头以拍摄视频”
}
}
}
Android:确保 AndroidManifest.xml 包含:
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
三、设备与环境验证
真机测试
❌ 避免使用模拟器(摄像头功能不可用)
✅ 必须使用真机(iOS/Android 设备)
H5 端限制
如果在浏览器中运行,需确保:
使用 HTTPS 协议
浏览器支持 getUserMedia API(现代浏览器均支持)
用户手动允许摄像头访问
四、代码优化建议
- 限制视频参数(避免过大文件)
uni.chooseVideo({
sourceType: [‘camera’],
compressed: true, // 启用压缩
maxDuration: 30, // 最大时长(秒)
camera: ‘back’, // 默认后置摄像头
success: (res) => {
console.log(‘视频信息:’, res);
// res 结构示例:
// { tempFilePath: “文件路径”, duration: 10, size: 1024*1024 }
}
}); - 异步处理(使用 async/await)
async getVideo() {
try {
const res = await uni.chooseVideo({
sourceType: [‘camera’],
compressed: true
});
console.log(‘获取成功:’, res);
} catch (err) {
console.error(‘失败:’, err);
}
}
五、常见错误码解析
错误码 原因 解决方案
chooseVideo:fail auth deny 用户拒绝授权 引导用户开启权限
chooseVideo:fail no camera 设备无摄像头 提示设备不支持
chooseVideo:fail system 系统级错误(如内存不足) 重启应用或设备
chooseVideo:fail timeout 操作超时(罕见) 检查设备性能或网络
六、进阶调试
日志输出
console.log(‘当前环境:’, uni.getSystemInfoSync().platform);
console.log(‘权限状态:’, await uni.getSetting());
降级处理
uni.chooseVideo({
sourceType: [‘camera’, ‘album’], // 允许相册选择
success: (res) => {…},
fail: (err) => {
if (err.errMsg.includes(‘cancel’)) {
console.log(‘用户取消操作’);
} else {
// 降级到文件选择
uni.chooseFile({
success: (fileRes) => {…}
});
}
}
});
七、版本兼容性
确保使用最新版 HBuilderX(≥3.8.0)
检查 uni-app 基础库版本(在 manifest.json 中配置)
“app-plus”: {
“usingComponents”: true,
“distribute”: {
“android”: {
“abiFilters”: [“armeabi-v7a”, “arm64-v8a”]
}
}
}
通过以上步骤,90% 的 uni.chooseVideo 问题可被定位解决。如果问题依旧,请提供:
完整的错误日志(含 fail 回调信息)
测试设备型号和系统版本
HBuilderX 版本号
最小化复现代码片段
更多关于uni-app uni.chooseVideo这个怎么一直加载没有的实战教程也可以访问 https://www.itying.com/category-93-b0.html
根据你的描述和代码,uni.chooseVideo一直加载的问题可能有以下几个原因:
-
权限问题:确保应用已获取相机权限,在Android上需要动态申请权限,iOS需要在manifest.json中配置权限声明。
-
平台差异:
- 在H5端,sourceType: [‘camera’]可能不生效
- 在部分Android设备上可能存在兼容性问题
-
代码建议修改为:
uni.chooseVideo({
sourceType: ['camera', 'album'], // 同时允许从相册选择
compressed: false, // 不压缩视频
success: (res) => {
console.log("视频临时路径:", res.tempFilePath);
},
fail: (err) => {
console.error("选择视频失败:", err);
}
});