我试图从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}, startUserMedia, 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 });
有人能帮上忙吗?
发布于 2020-08-11 12:47:51
多亏了德里克,我找到了答案。
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函数。
https://stackoverflow.com/questions/63349728
复制相似问题