Зацикленное проигрывание звука на JavaScript?

Есть задача сделать проигрывание некоего короткого звука (сэмпла) в бесконечном цикле.

Для этого написан простейший код:

var audio = new Audio();
audio.src = 'sound.ogg';
audio.loop = true;
audio.autoplay = true;


Однако возникает проблема, когда после того как елемент Audio отыграет звук, ему забирает некоторое время, чтоб начать все с начала. В итоге получается «икающее» звучание.
Вот пример того, что получается


Проверил и в хроме и в фаерфоксе, везде одинаковая проблема.


Ктото в курсе как это можно решить?

P.S. С семплом проблем нет, при проигрывании, к примеру, в Winamp'е, все получается отлично.
  • Вопрос задан
  • 5160 просмотров
Решения вопроса 1
Mithgol
@Mithgol
Пригласить эксперта
Ответы на вопрос 2
AloneCoder
@AloneCoder
[object Object]
peredozo
@peredozo
Костылем через requestAnimationFrame - оно отрабатывает значительно чаще чем ontimeupdate, потому дает более приемлемый результат. Ну и соответственно оно чуть больше поджирает проц.

var a = new Audio('pdz.me.ogg');
a.loop = true;
function loopFix() {
	if(a.currentTime >= a.duration - 0.05) {
		a.currentTime = 0;
		a.play();
	}
	requestAnimationFrame(loopFix);
}
loopFix();
// ---
a.play();
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы