uni-app Uni.chooseVideo 报错问题

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

uni-app Uni.chooseVideo 报错问题

开发环境 版本号 项目创建方式
Mac macOS14 HBuilderX

测试过的手机

  • iphone13 pro ios17
  • 红米k50U

操作步骤:

uni.chooseVideo({
compressed: false,
success(res) {
console.log(res)
uni.compressVideo({
src:res.tempFilePath,
success(e) {
console.log(e)
}
})
}  
})

1 回复

在使用 uni-appUni.chooseVideo 方法时,可能会遇到一些报错问题。以下是一些常见的问题及其解决方法:

1. 权限问题

  • 报错信息: "chooseVideo:fail auth deny""chooseVideo:fail permission denied"

  • 原因: 用户拒绝了相机或相册的访问权限。

  • 解决方法:

    • 确保在 manifest.json 中正确配置了权限。
    • 在调用 Uni.chooseVideo 之前,先检查并请求相关权限。
    uni.authorize({
      scope: 'scope.camera',
      success() {
        uni.chooseVideo({
          success(res) {
            console.log(res.tempFilePath);
          }
        });
      },
      fail() {
        uni.showToast({
          title: '请授权相机权限',
          icon: 'none'
        });
      }
    });

2. 文件大小或时长限制

  • 报错信息: "chooseVideo:fail file size exceed""chooseVideo:fail duration exceed"

  • 原因: 选择的视频文件大小或时长超过了限制。

  • 解决方法:

    • Uni.chooseVideo 中设置 maxDurationsizeType 参数,限制视频的时长和大小。
    uni.chooseVideo({
      sourceType: ['album', 'camera'],
      maxDuration: 60, // 最大时长60秒
      sizeType: ['compressed'], // 压缩视频
      success(res) {
        console.log(res.tempFilePath);
      }
    });

3. 平台差异

  • 报错信息: 不同平台(如微信小程序、H5、App)可能会有不同的报错信息。

  • 原因: Uni.chooseVideo 在不同平台上的实现方式不同。

  • 解决方法:

    • 根据平台特性进行适配。例如,在微信小程序中,可能需要使用 wx.chooseVideo 而不是 Uni.chooseVideo
    • 使用条件编译来处理不同平台的差异。
    // #ifdef MP-WEIXIN
    wx.chooseVideo({
      success(res) {
        console.log(res.tempFilePath);
      }
    });
    // #endif
    
    // #ifndef MP-WEIXIN
    uni.chooseVideo({
      success(res) {
        console.log(res.tempFilePath);
      }
    });
    // #endif

4. H5 平台不支持

  • 报错信息: "chooseVideo:fail not supported"

  • 原因: H5 平台不支持 Uni.chooseVideo 方法。

  • 解决方法:

    • 使用 input 标签的 file 类型来替代。
    <input type="file" accept="video/*" @change="handleVideoChange" />
    methods: {
      handleVideoChange(event) {
        const file = event.target.files[0];
        if (file) {
          const url = URL.createObjectURL(file);
          console.log(url);
        }
      }
    }

5. 其他问题

  • 报错信息: 其他未知错误。

  • 解决方法:

    • 检查 uni-app 的版本,确保使用的是最新版本。
    • 查看官方文档或社区,寻找类似问题的解决方案。
    • uni.chooseVideofail 回调中打印详细的错误信息,帮助定位问题。
    uni.chooseVideo({
      success(res) {
        console.log(res.tempFilePath);
      },
      fail(err) {
        console.error('chooseVideo fail:', err);
      }
    });
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!