首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从navigator.mediaDevices.getUserMedia调用函数

从navigator.mediaDevices.getUserMedia调用函数
EN

Stack Overflow用户
提问于 2020-08-11 08:09:51
回答 1查看 385关注 0票数 2

我试图从navigator.mediaDevices.GetUserMedia内部调用一个函数,但它不起作用。

这就是我的东西

代码语言:javascript
复制
navigator.mediaDevices.getUserMedia({audio: true}, startUserMedia, function(e) {
   __log('No live audio input: ' + e);
});

这是我的函数

代码语言:javascript
复制
function startUserMedia(stream) {
    var input = audio_context.createMediaStreamSource(stream);
    __log('Media stream created.' );
    __log("input sample rate " +input.context.sampleRate);
    __log('Input connected to audio context destination.');

    recorder = new Recorder(input, {
                  numChannels: 1
                });
    __log('Recorder initialised.');
  }

我正在尝试更新此调用,因为它之前是:

代码语言:javascript
复制
navigator.getUserMedia({audio: true}, startUserMedia, function(e) {
     __log('No live audio input: ' + e);
});

猜猜发生了什么,这是可行的。但是这个新的"mediaDevices",我不能让它以某种方式工作。上面写着:

代码语言:javascript
复制
Uncaught TypeError: recorder is undefined

它不会调用"startUserMedia“函数。如果我在函数中添加一个"alert("hello")“,它就不会执行。

不过,这是可行的:

代码语言:javascript
复制
 navigator.mediaDevices.getUserMedia(constraints).then(function(stream) {
      startUserMedia();
}).catch(function(err) {});

但它不能识别我的录音机

recorder = new Recorder(input, { numChannels: 1 });

有人能帮上忙吗?

EN

回答 1

Stack Overflow用户

发布于 2020-08-11 12:47:51

多亏了德里克,我找到了答案。

代码语言:javascript
复制
  window.AudioContext = window.AudioContext || window.webkitAudioContext;
  navigator.getUserMedia = (navigator.getUserMedia ||
    navigator.webkitGetUserMedia ||
    navigator.mozGetUserMedia ||
    navigator.msGetUserMedia);
    audio_context = new AudioContext;
    __log('Audio context set up.');

    if (navigator.mediaDevices) { // if navigator.mediaDevices exists, use it
        navigator.mediaDevices.getUserMedia({audio: true}).then(startUserMedia, function(e) {
          __log('No live audio input: ' + e);
        });
    } else {
        navigator.getUserMedia({audio: true}, startUserMedia, function(e) {
          __log('No live audio input: ' + e);
        });
    }

通过这种方式,我可以检查浏览器是否支持getUserMedia。无论哪种方式,它都会触发提示,要求用户提供浏览器的媒体权限。

在这两个实例中都会调用StartUserMedia函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63349728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档