从navigator.mediaDevices.getUserMedia调用一个函数

问题描述

我正在尝试从navigator.mediaDevices.GetUserMedia内部调用一个函数,但该函数不起作用。

这就是我所拥有的

navigator.mediaDevices.getUserMedia({audio: true},startUserMedia,function(e) {
   __log('No live audio input: ' + e);
});

这是我的职责

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.');
  }

由于此呼叫之前,我正尝试更新此呼叫:

navigator.getUserMedia({audio: true},function(e) {
     __log('No live audio input: ' + e);
});

,然后猜猜那行得通。但是这个新的“ mediaDevices”,我不能以某种方式使它工作。它说:

Uncaught TypeError: recorder is undefined

它没有调用“ startUserMedia”功能。如果在函数内添加“ alert(“ hello”)“,则该代码不会执行。

这可以:

 navigator.mediaDevices.getUserMedia(constraints).then(function(stream) {
      startUserMedia();
}).catch(function(err) {});

但是它无法识别我的录音机

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

任何人都可以伸出援手吗?

解决方法

感谢德里克(Derek)在这里找到了答案。

  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:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...