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

2 回复

针对 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 回调捕获具体错误信息(如用户取消、权限拒绝等)

二、权限问题处理

  1. 动态权限申请(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(现代浏览器均支持)
用户手动允许摄像头访问

四、代码优化建议

  1. 限制视频参数(避免过大文件) uni.chooseVideo({
    sourceType: [‘camera’],
    compressed: true, // 启用压缩
    maxDuration: 30, // 最大时长(秒)
    camera: ‘back’, // 默认后置摄像头
    success: (res) => {
    console.log(‘视频信息:’, res);
    // res 结构示例:
    // { tempFilePath: “文件路径”, duration: 10, size: 1024*1024 }
    }
    });
  2. 异步处理(使用 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一直加载的问题可能有以下几个原因:

  1. 权限问题:确保应用已获取相机权限,在Android上需要动态申请权限,iOS需要在manifest.json中配置权限声明。

  2. 平台差异:

    • 在H5端,sourceType: [‘camera’]可能不生效
    • 在部分Android设备上可能存在兼容性问题
  3. 代码建议修改为:

uni.chooseVideo({
    sourceType: ['camera', 'album'], // 同时允许从相册选择
    compressed: false, // 不压缩视频
    success: (res) => {
        console.log("视频临时路径:", res.tempFilePath);
    },
    fail: (err) => {
        console.error("选择视频失败:", err);
    }
});
回到顶部