У меня неясная ситуация.
То, что я хочу, это: воспроизвести аудио и после завершения воспроизведения звука начать запись с микрофона.
Проблема: в FF и Chrome код работает просто отлично. Однако в Safari, когда звук перестает воспроизводиться и запускается функция записи с микрофона, одновременно воспроизводится звук.
Начальный и конечный хуки сделаны с помощью jQuery. Вот оконченная привязка.
var on_audio_stop = function() {
start_microphone_recording();
}
$( 'audio' ).bind( 'ended', on_audio_stop );
Функция start_microphone_recording вызывает функцию, в которой значок изменяется, а затем вызывается init_recording, и больше ничего, поэтому я не включил этот значок.
Запуск функции микрофона:
function init_recording() {
AudioContext = window.AudioContext || window.webkitAudioContext;
context = new AudioContext();
processor = context.createScriptProcessor( buffer_size, 1, 1 );
processor.connect( context.destination );
var handle_success = function ( stream ) {
global_stream = stream;
input = context.createMediaStreamSource( stream );
input.connect( processor );
processor.onaudioprocess = function ( e ) {
microphone_process( e );
};
};
navigator.mediaDevices.getUserMedia( constraints ).then( handle_success );
}
Когда в Safari активирован микрофон, выполняется функция привязки «play». Я попытался с pause () и приглушил, но не работает. Также попытался удалить аудио тег и очистить src из аудио тега.
У кого-нибудь есть идеи относительно того, почему Safari делает это и каким может быть решение?
Пример:
Я установил 5 аудио MP3 в тэге AUDIO в html, я играю одну за другой, я запускаю функции «init_recording», и Safari будет воспроизводить все 5 аудио MP3 одновременно друг над другом, пока микрофон начал записывать .