如何解决从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函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。