eds*_*999 2 javascript html5 microphone html5-audio web-audio-api
我一直在玩HTML5,但我无法完成以下任务.javascript必须要求获得访问麦克风的权限,然后必须将麦克风输入流式传输到计算机扬声器.这是我的javascript:
navigator.getUserMedia = ( navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||navigator.msGetUserMedia);
var aCtx;
var analyser;
var microphone;
if (navigator.getUserMedia) {
navigator.getUserMedia({audio: true}, function(stream) {
aCtx = new webkitAudioContext();
analyser = aCtx.createAnalyser();
microphone = aCtx.createMediaStreamSource(stream);
microphone.connect(analyser);
analyser.connect(aCtx.destination);
});
};
Run Code Online (Sandbox Code Playgroud)
但Chrome(和Opera)说
Uncaught TypeError: Failed to execute 'webkitGetUserMedia' on 'Navigator': 3 arguments required, but only 2 present.
Run Code Online (Sandbox Code Playgroud)
为什么需要更多的论点?任何人都可以帮我解决这个问题吗?
谢谢.
getUserMedia的API需要3个参数.
让约束成为方法的第一个参数.
让successCallback成为方法第二个参数指示的回调.
让errorCallback成为方法第三个参数指示的回调.
所以你需要做的就是添加一个第三个参数,这是一个错误回调.像这样的东西会起作用.
navigator.getUserMedia = ( navigator.getUserMedia || navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||navigator.msGetUserMedia);
var aCtx;
var analyser;
var microphone;
if (navigator.getUserMedia) {
navigator.getUserMedia({audio: true}, function(stream) {
aCtx = new webkitAudioContext();
analyser = aCtx.createAnalyser();
microphone = aCtx.createMediaStreamSource(stream);
microphone.connect(analyser);
analyser.connect(aCtx.destination);
}, function (){console.warn("Error getting audio stream from getUserMedia")});
};
Run Code Online (Sandbox Code Playgroud)
您可以查看这段代码,它们做了类似的事情以供参考.
归档时间: |
|
查看次数: |
4765 次 |
最近记录: |