我使用了从网上下载的HTML和JS代码来记录音频,但是有一个问题,页面加载后立即出现允许麦克风的消息。这是因为源代码record.js中的
因此,我尝试使用这个按钮调用两个函数-
如果可能的话,我希望该系统可以按以下步骤进行操作: 1. 点击按钮后首先运行
window.onload = function init()
。但我希望在点击按钮后再显示该消息。因此,我尝试使用这个按钮调用两个函数-
toggleRecording(button)
和init()
,但是由于"button"元素存在问题,所以它没有起作用,但我认为如果以正确的形式编写,它可能会起作用。你能给我展示如何修改这两个函数init
和toggleRecording
,让它们可以被这个按钮调用吗?我是JS新手,不知道它是如何工作的。
index.html
<button type="submit" onclick="toggleRecording()" data-run="0"></button>
record.js
//starts by click on button
function toggleRecording() {
var run = parseInt(getAttribute('data-run')); //
if(run === 1) {
recorder && recorder.stop();
recorder && recorder.exportWAV(function(blob) {
uploadAudioFromBlob(blob);
});
__log('Recording is stopped.');
button.setAttribute('data-run', 0);
}
else {
recorder && recorder.clear();
recorder && recorder.record();
__log('Speak...');
button.setAttribute('data-run', 1);
}
}
function __log(e, data) {
showInfo("\n" + e + " " + (data || ''));
}
var audio_context;
var recorder;
function startUserMedia(stream) {
var input = audio_context.createMediaStreamSource(stream);
recorder = new Recorder(input);
__log('Systém for recording is available.');
}
function startRecording(button) {
recorder && recorder.clear();
recorder && recorder.record();
button.nextElementSibling.disabled = false;
__log('Talk...');
}
window.onload=function init() {
try {
window.AudioContext = window.AudioContext || window.webkitAudioContext;
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia;
window.URL = window.URL || window.webkitURL;
audio_context = new AudioContext;
} catch (e) {
alert('This browser do not support audio!');
}
navigator.getUserMedia({audio: true}, startUserMedia, function(e) {
__log('No audio was detected: ' + e);
});
};
更新:
现在该系统的运行步骤如下:
1. function init()
在页面加载后立即运行,用户允许使用麦克风之后运行startusermedia
函数
2. 点击按钮后运行toggleRecording(button)
函数,开始录音
3. 第二次点击按钮后,运行toggleRecording
函数,停止录音如果可能的话,我希望该系统可以按以下步骤进行操作: 1. 点击按钮后首先运行
init
,startusermedia
和togglerecording
函数,因此在点击后立即开始录制
2. 第二次点击将调用toggleRecording
函数以停止录音。
onclick="toggleRecording(); init();"
吗?可以随意更改顺序。 - A l w a y s S u n n y