收藏
回答

公众号h5页面使用navigator.mediaDevices.getUserMedia调用摄像头?

iOS17以下微信浏览器调用navigator.mediaDevices.getUserMedia授权之后调取不了摄像头,Safari浏览器可以,Android微信浏览器也可以

部分代码如下

<video ref="video" id="video" objectFit="cover" class="video-image" :controls="false"

:show-center-play-btn="false" :autoplay="true" :loop="true" playsinline :webkit-playsinline="true"></video>

<canvas ref="canvas" :style="canvasStyle" canvas-id="myCanvas" id="myCanvas"></canvas>



init(options) {

let error = ''

try {

this.video = document.querySelector('#video').children[0].children[0]

// console.log("this.vide",this.video);

// 前置摄像头

if ('mediaDevices' in window.navigator && 'getUserMedia' in window.navigator.mediaDevices) {

// 浏览器支持

window.navigator.mediaDevices.getUserMedia({

'video': true

}).then((stream)=> {

this.video.srcObject = stream

// this.myVideo.play()

this.initTracker(options)

    // console.log('getUserMedia completed successfully.');

  })

  .catch((error)=> {

    console.log(error.name + ": " + error.message);

this.ArtificialTracker(error.message)

  });

} else {

error = '手机不支持自动获取人脸'

this.ArtificialTracker(error)


}

} catch (err) {

this.ArtificialTracker(err.message)

}

},

回答关注问题邀请回答
收藏

4 个回答

  • 社区技术运营专员--许涛
    社区技术运营专员--许涛
    2024-01-29

    你好,麻烦提供下机型,微信版本号和复现链接

    2024-01-29
    有用
    回复 12
    • 倩倩
      倩倩
      2024-01-29
      目前测试跟机型没有关系,跟系统版本有关系,经测试主要是iOS17以下的,能复现的是苹果13系统版本iOS16.3.1,微信版本8.0.45,复现链接:https://zzwe.foxconn.com/#/pages/public/goNavigation
      2024-01-29
      回复
    • 倩倩
      倩倩
      2024-01-29
      你好,你们复现了没?
      2024-01-29
      回复
    • 社区技术运营专员--许涛
      社区技术运营专员--许涛
      2024-02-01回复倩倩
      出问题的时候这个track没有回调到。请问能不能提供不混淆的case,混淆下无法确定是tracking.js的问题还是微信的问题
      2024-02-01
      回复
    • 倩倩
      倩倩
      2024-02-20
      现在的问题是摄像头没有调用到,按理说走到这一步的时候,摄像头应该已经调用起来了,目前是摄像头黑屏
      2024-02-20
      回复
    • 倩倩
      倩倩
      2024-02-20
      需要我给你提供一下源码吗?
      2024-02-20
      回复
    查看更多(7)
  • Flowcy🐳
    Flowcy🐳
    2024-09-11
    const handleWechatPlay = () => {
        if (window.WeixinJSBridge) {
            console.log("window.WeixinJSBridge")
            doPlay();
        } else {
            document.addEventListener("WeixinJSBridgeReady", function () {
                console.log("WeixinJSBridgeReady")
                doPlay();
            }, false);
        }
    
        function doPlay() {
            WeixinJSBridge.invoke("getNetworkType", {}, function (e) {
                console.log('getNetworkType')
                document.getElementById("videoCamera").play();
            });
        }
    }需要加这些
    
    2024-09-11
    有用
    回复
  • 南山隐者
    南山隐者
    2024-05-20
    // 需要在 onloadedmetadata 方法里面也添加下 play 方法就好了
    // ugly wechat dev
      async function handleUserMedias() {
        video.srcObject = await navigator.mediaDevices.getUserMedia({
          video: {
            facingMode: 'user',
          },
        });
        video.play();
        await new Promise((resolve) => {
          video.onloadedmetadata = () => {
            resolve(true);
            video.play();
          };
        });
    }
    
    2024-05-20
    有用
    回复
  • ( ̄へ ̄)
    ( ̄へ ̄)
    2024-03-06

    你好,你是怎么调起前置摄像头的。

    2024-03-06
    有用
    回复 1
    • 倩倩
      倩倩
      2024-03-06
      2024-03-06
      回复
登录 后发表内容