l***@163.com
l***@163.com
  • 发布:2023-11-24 18:22
  • 更新:2023-11-28 14:49
  • 阅读:832

uniapp:项目H5发行后,调用uni.chooseVideo无法唤起摄像头进行拍摄

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: Windows10

HBuilderX类型: 正式

HBuilderX版本号: 3.96

浏览器平台: 手机系统浏览器

浏览器版本: 荣耀V20

项目创建方式: HBuilderX

操作步骤:

将项目发行为手机H5,调用uni.chooseVideo进行视频录制,无法唤起摄像头

预期结果:

将项目发行为手机H5,调用uni.chooseVideo可以唤起摄像头进行视频录制

实际结果:

将项目发行为手机H5,调用uni.chooseVideo无法唤起摄像头进行视频录制

bug描述:

uniapp项目H5发行,调用uni.chooseVideo无法唤起摄像头拍摄视频,出现的是“image chooser”,只能拍照或选择相册,相册里面也只能选照片,选不了视频。

2023-11-24 18:22 负责人:无 分享
已邀请:

最佳回复

DCloud_UNI_OttoJi

DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信

这取决于宿主浏览器是否支持。

阅读 uni.chooseVideo 文档,在注意部分的第一条提到了 “sourceType 值在 H5 平台根据浏览器的不同而表现不同,一般不可限制仅使用相册,部分浏览器也无法限制是否使用相机。”

我创建新的项目,打包 h5 之后,在安卓微信中可以正常唤起摄像头录制功能,测试其他浏览器不支持,只允许使用相册选择视频。

你可能需要选择合适的使用环境。

喜欢技术的前端

喜欢技术的前端 - QQ---445849201

刚试了,可以的,你试试这段代码

<template>  
    <view>  
        <text>hello</text>  
        <button @tap="test">click me</button>  
        <video :src="src"></video>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                src: ''  
            }  
        },  
        methods: {  
            test: function() {  
                var self = this;  
                uni.chooseVideo({  
                    sourceType: ['camera', 'album'],  
                    success: function(res) {  
                        self.src = res.tempFilePath;  
                    }  
                });  
            }  
        }  
    }  
</script>  

<style>  

</style>
  • DCloud_UNI_OttoJi

    实际运行效果取决于使用什么浏览器运行,我测试安卓微信可以调用,你测试的哪些平台可以使用,可以做个补充吗?

    2023-11-27 18:15

BoredApe

BoredApe - 有问题就会有答案。

uni-app中的uni.chooseImage分发为h5后。实际上是使用<input type="file" accept="image/*" capture="environment" />方式来模拟打开相册的。这种方式依赖运行的宿主环境。不同浏览器的支持情况也是不一样的。

 const fileDom = document.createElement('input');    
        fileDom.type = 'file';    
        fileDom.accept = 'image/*';    
        fileDom.capture = 'environment';    

        fileDom.value = '';    
        fileDom.style.height = '0';    
        fileDom.style.width = '0';    
        fileDom.style.position = 'absolute';    
        fileDom.style.opacity = 0;    
        (document.querySelector('uni-app') || document.body).appendChild(fileDom);    
        fileDom.click();
d***@qq.com

d***@qq.com - 111

目前我也遇到这种情况,有解决方案吗

  • DCloud_UNI_OttoJi

    看我评论。约束用户的使用环境,微信打开功能更完整,其他浏览器打开要考虑不能使用摄像头的情况。无论是做文案提示,还是做入口根据浏览器展示不同形式。

    2023-11-28 17:48

  • d***@qq.com

    回复 DCloud_UNI_OttoJi: 我这边做的测试是安卓的企业微信内打开的宿主环境,安卓基本都不支持,如果我想要做兼容,有相关解决方案吗

    2023-11-29 14:28

  • DCloud_UNI_OttoJi

    回复 d***@qq.com: 这块不属于 uni-app 的范围了。如果是企业微信,我记得企业微信是可以使用 js-sdk 的,可以参考 https://developer.work.weixin.qq.com/document/path/90495 ,后续复制粘贴也需要 js-sdk 的能力才能用

    2023-11-29 15:04

  • d***@qq.com

    回复 DCloud_UNI_OttoJi: 这样的吗?确定吗?因为我再企业微信相当于只是套用了我使用uniapp编写的一个h5应用而已,需要嵌套进入jssdk?

    2023-11-29 17:21

  • DCloud_UNI_OttoJi

    回复 d***@qq.com: 这是系统限制问题,你我只是给出其中一个解决方案,是否满足你的场景,你需要自己来判断

    2023-11-29 17:26

要回复问题请先登录注册