vue 中获取PC端本地摄像头的解决方案

项目背景:项目是在w7系统的一体机,通过浏览器打开vue页面呈现应用程序。

需求:人脸识别模块

解决方案:通过系统外接摄像头(电脑连接的摄像头)获取本地视频,前端页面每隔一段时间通过canvs生成图片发送给后端校验,识别是否有效人脸。

其中js调用本地摄像头

initVido(){
             let _this=this;
               if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
                   navigator.mediaDevices.getUserMedia({
                       video: true,
                   }).then(function (stream) {
_this.MediaStreamTrack=typeof stream.stop==='function'?stream:stream.getTracks()[1];
                      var video = _this.$refs.videos;
                      video["srcObject"]=stream;
                       video.play();
                   }).catch(function(err){
                       console.log(err);
                   });
               }

    },

html代码

<div id="contentHolder" v-if="active==2>       
    <video id="video" width="320" height="320" autoplay ref="videos"></video>  
</div>

坑点:

1.一开始我没有用$refs去获取dom导致在第一次进入时能够打开摄像头 第二次就无法打开,查原因是无法获取video这个Dom,后来通过$refs获取DOM发现还是不行,后来发现是v-if的问题导致的 $refs

ref不是响应式的,所有的动态加载的模板更新它都无法相应的变化。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值