uni-app uni.chooseVideo二次调用触发fail回调

uni-app uni.chooseVideo二次调用触发fail回调

操作步骤:

运行hello-uniapp-master项目,接口-媒体-视频,视频来源选择拍摄,调整代码让添加视频按钮一直存在,在第一次拍摄视频是正常的,第二次点击添加视频,uni.chooseVideo就触发fail回调了

预期结果:

多次添加视频都要能正常触发uni.chooseVideo的success回调

实际结果:

多次添加视频会触发uni.chooseVideo的fail回调

bug描述:

运行hello-uniapp-master项目,接口-媒体-视频,视频来源选择拍摄,我调整代码让添加视频按钮一直存在,在第一次拍摄视频是正常的,第二次点击添加视频,uni.chooseVideo就触发fail回调了,没办法正常拍摄。


| 开发环境       | 版本号         | 项目创建方式 |
|----------------|----------------|--------------|
| PC             | Windows        | HBuilderX    |
| PC操作系统版本 | Windows 11     |              |
| 手机           | Android        |              |
| 手机版本       | Android 11     |              |
| 手机厂商       | 华为           |              |
| 手机机型       | nova9          |              |
| 页面类型       | vue            |              |
| vue版本        | vue2           |              |
| 打包方式       | 云端           |              |

更多关于uni-app uni.chooseVideo二次调用触发fail回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

回调的报错是什么?

更多关于uni-app uni.chooseVideo二次调用触发fail回调的实战教程也可以访问 https://www.itying.com/category-93-b0.html


{“errMsg”:“chooseVideo:fail start failed”,“code”:-99}

video标签如果一直存在,第二次录像就有问题了,修改后就正常了

同事帮我发现问题了,video标签如果一直存在,第二次录像就有问题了,底层是为什么不清楚 原本: <template v-if="!src"> <view class=“uni-hello-addfile” @tap=“chooseVideo”>+ 添加视频</view> </template> <template v-else> </template>
改为: <view class=“uni-hello-addfile” @tap=“chooseVideo”>+ 添加视频</view> <template v-if="src"> </template>
chooseVideo: function() {下面增加一行:this.src=’’ 这样就可以多次拍摄也正常了,但是为什么video标签一直存在会有问题就不清楚了

这个问题是uni-app中uni.chooseVideo在Android设备上的一个常见问题,主要是由于相机资源未正确释放导致的。以下是解决方案:

  1. 确保在每次调用uni.chooseVideo前先关闭之前的相机资源:
let camera = uni.requireNativePlugin('camera');
camera && camera.release();
  1. 检查权限设置,确保每次调用前都有相机权限:
uni.authorize({
  scope: 'scope.camera',
  success() {
    // 调用chooseVideo
  }
});
  1. 可以在fail回调中尝试重新调用:
uni.chooseVideo({
  sourceType: ['camera'],
  success() {
    // 成功处理
  },
  fail(err) {
    console.log('第一次失败,尝试重新调用', err);
    setTimeout(() => {
      uni.chooseVideo({
        sourceType: ['camera'],
        success() {
          // 成功处理
        }
      });
    }, 500);
  }
});
  1. 检查manifest.json中是否配置了必要的权限:
"android": {
  "permissions": [
    "android.permission.CAMERA",
    "android.permission.RECORD_AUDIO"
  ]
}
回到顶部