У меня есть приложение, в котором пользователь неоднократно записывает аудиоклипы для распознавания / оценки речи.Во всех других основных браузерах пользователю предлагается один раз получить разрешение на использование микрофона, а затем он может выполнить оставшуюся часть процесса без каких-либо проблем.Однако в Firefox для Android пользователю предлагается ввести разрешение на использование микрофона между сеансами записи.Для контекста, каждая запись длится всего несколько секунд, и их может быть 30-60, так что это может быть довольно разрушительным.
Я использую библиотеку javascript RecordRTC для управления взаимодействием с микрофоном браузера вУгловая 4 среда.Я тестировал веб-приложение на Chrome, Android Chrome, Edge, Firefox и приложении Android Firefox, и эта проблема возникает только на Android Firefox.
Вот соответствующий код службы, которая захватывает микрофон,инициализация объекта recordRTC и фактическая запись данных.
this._elementRef = elementRef;
this.captureMicrophone().then(() => {
this.microphoneDataStreamService.setStream('mic', this.microphone);
this.recordRtcInit(this.microphone);
this._recordRtc.startRecording();
this._recordRtc.microphone = this.microphone;
this._recordedAudio = null;
this._recordedAudio = new Audio();
});
}
private recordRtcInit(microphone: MediaStream): void {
if (!this._recordRtc) {
this._recordRtc = RecordRTC(microphone, {
type: 'audio',
recorderType: RecordRTC.StereoAudioRecorder,
numberOfAudioChannels: 1
});
} else {
this._recordRtc.reset();
}
}
captureMicrophone(){
console.log(navigator.mediaDevices);
navigator.mediaDevices.enumerateDevices().then((data) => {
console.log(data);
});
return navigator.mediaDevices.getUserMedia({audio: true})
.then(microphone => {
this.microphone = microphone;
})
//.then(() => console.log("It worked"))
.catch((error) => {
console.log('Unable to access your microphone.');
alert('Unable to access your microphone.');
console.error(error);
});
}
Я подозреваю, что это строка "this._recordRtc.reset ();", но я не уверен, почему это будет работать нормально во всех браузерахкроме Android Firefox специально.