【问题标题】:getUserMedia() not working in normal chrome but does when launching pwa-chromegetUserMedia() 在普通 chrome 中不起作用,但在启动 pwa-chrome 时起作用
【发布时间】:2020-11-09 19:56:01
【问题描述】:

在有人认为 getUserMedia 必须通过本地或 https 之前,我知道,我的网站是 https,当我通过 localhost 启动时,我使用 VSCode @ 端口 5500 的实时服务器插件启动。

我的问题,我正在使用 getUserMedia() 来获取用户麦克风的实时更新,并将其传递给我的程序来做一些事情。在我的“launch.json”中,我有这个

{
    "name": "Launch Chrome",
    "request": "launch",
    "type": "pwa-chrome",
    "url": "http://127.0.0.1:5500",
    "webRoot": "${workspaceFolder}"
}

这很好用。但是,如果我将“类型”更改为“铬”,即

{
    "name": "Launch Chrome",
    "request": "launch",
    "type": "chrome",
    "url": "http://127.0.0.1:5500",
    "webRoot": "${workspaceFolder}"
}

代码不再有效,并且程序没有拾取我的麦克风,即使 chrome 页面显示“此网站正在使用您的麦克风”。通知。

这意味着当需要将该网站上线到我的实际网站上时,麦克风没有被拾起,软件也无法工作。这是获取usermedia的代码。

function getMicrophoneAccess(){
    let constraints = {audio:true};
    navigator.mediaDevices.getUserMedia(constraints).then(function(stream){
        source = audioContext.createMediaStreamSource(stream);
        let ready = new Event('streamReady');
        dispatchEvent(ready);
    });
}

然后是我实际使用我的流的地方,

function runSoundAnalysis(){
    analyser.getByteFrequencyData(soundDataArray);
    let averageSound = 0;
    for (let i = 0; i < soundDataArray.length; i+=2){
        averageSound += soundDataArray[i];
    }
    averageSound /= soundDataArray.length / 2;
    if (averageSound != 0){
        console.log(averageSound); 
    }
    return averageSound;
}

在“chrome”上运行时,在程序的所有循环中,averageSound 确实 = 0。

感谢您的帮助:)

编辑:要添加,我检查并在 Firefox 上工作,所以我一定是误解了如何使用 chrome 的 getUserMedia() 或其他东西。

【问题讨论】:

    标签: javascript google-chrome getusermedia


    【解决方案1】:

    找到了答案,在普通的 chrome 中,它要求在将状态设置为“live”之前必须调用 audioContext.resume()。我只是在我的初始化函数中调用了它,它现在可以工作了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 1970-01-01
      • 2015-03-31
      • 2015-12-13
      • 2018-07-29
      • 2015-07-29
      • 1970-01-01
      相关资源
      最近更新 更多