У меня webrtc в веб-приложении, настроенном в основном на демонстрационный код. Он работает с использованием setTimeout, чтобы остановить запись. Я хотел бы добавить событие нажатия кнопки, как альтернативный способ остановить запись. Из демонстрационного кода я разорвал нужный бит как новую функцию saveAudioFile (). Он запускается функцией playSequence, передающей объект рекордера, который создается в функции playSequence. Что я хочу знать, так это как альтернативно вызвать функцию saveAudioFile с помощью щелчка мыши (и остановить тайм-аут). Я создал прослушиватель событий для кнопки и щелчка, но у меня возникла проблема с передачей объекта «устройство записи» (который создается в другой функции и находится вне области видимости), без которого функция не будет работать. Это все о обратных вызовах (я думаю), и я до сих пор не обернул голову вокруг них. Что мне нужно сделать, чтобы иметь возможность использовать объект «устройство записи» в функции playSequence, чтобы альтернативно остановить запись щелчком мыши (при сохранении выдержки времени ожидания)?
nb. Запуск функции playSequence через setTimeout преднамеренный - мне нужно, чтобы он запускался через 3 секунды после загрузки страницы. Просто упомяну на случай, если это было причиной путаницы / вопросов.
function saveAudioFile(recorder)
{
// stop recording
recorder.stopRecording(function() {
//ajax function to upload audio and save as file- working
});
}
function playSequence()
{
navigator.mediaDevices.getUserMedia({ video: false, audio: true }).then(function(camera) {
// recording configuration/hints/parameters
var recordingHints = {
type: 'audio'
};
// initiating the recorder
var recorder = RecordRTC(camera, recordingHints);
// starting recording here
recorder.startRecording();
// auto stop recording after 30 seconds
var milliSeconds = 10 * 1000;
setTimeout(saveAudioFile(recorder) , milliSeconds);
});
});
}
setTimeout(
function(){
playSequence();
},
3000
);
jQuery('#endrecording').click(function() {
saveAudioFile();
});