У меня есть простая процедура, которая создает узел аудиоконтекста и загружает его в буфер. Постоянное событие, кажется, срабатывает в начале. Я устанавливаю таймер на продолжительность, и завершенное событие срабатывает примерно за это время до того, как звук перестанет воспроизводиться. Кто-нибудь знает, как получить истинное завершенное событие. Я пытался использовать пункт назначения, а также источник, тот же результат
function playSoundFile(buffer) {
'use strict';
audioCtx.close();
audioCtx = new (window.AudioContext || window.webkitAudioContext)();
audioSource = audioCtx.createBufferSource();
audioSource.connect(audioCtx.destination);
audioSource.buffer = buffer;
audioSource.playbackRate.value = 1;
stillPlaying(true);
audio_player = audioCtx.destination;
audioSource.addEventListener('onended', whatsUp());
console.log('start ' + showTime());
filePlayed(buffer.duration);
audioSource.start();
}
временная метка отличается всего на 1 мс между воспроизведением и завершенным событием. filePlayed запускает событие тайм-аута, чтобы показать время в начале и в конце.
whatsUp()
вместо ссылки на функцию для вызова при событии. - person guest271314   schedule 24.09.2017audioSource.addEventListener('onended', whatsUp);
наaudioSource.addEventListener('onended', whatsUp());
- person guest271314   schedule 24.09.2017