Помогите с последовательным воспроизведением аудио JavaScript
Есть такой код:
function getAudio() {
if (RequestCount <= 2){
//if ((count - nowItem) < 4)
// {
let Request = new XMLHttpRequest();
Request.responseType = 'blob';
Request.open('GET', 'response.php?audio=true');
Request.onloadstart = function (){
}
Request.onreadystatechange = function () {//Вызывает функцию при смене состояния.
if (Request.readyState === XMLHttpRequest.DONE && Request.status === 200)
{
let reader = new FileReader();
reader.onload = function() {
if (reader.result.length>400){
soundArray[count] = reader.result;
count++;
} else Request.abort();
};
reader.readAsDataURL(Request.response);
RequestCount--;
}
}
Request.send();
RequestCount++;
// }
}
}
Здесь я получают от php скрипта аудио файл из base64. Мне нужно первый раз воспроизвести аудио с 0 секунды, а последующие файлы воспроизводить с 0.8 секунды, причём начинать воспроизведение не когда доиграет первый, а во время начиная с 2.8 секунды.
Идея такова, у меня записывается 2 файла со звуком с микрофона. В первой записи записывается 3 секунды -> начинает запись второго файла-ждём ещё секунду-> заканчиваем первую запись Во втором тоже самое. Записываем 3 секунды->начинаем записывать первый файл->ждём секунду->заканчиваем вторую запись.
Вопрос заключается в том как всё это правильно воспроизводить чтоб компенсировать задержку между записями.
Сделал вот такой код, но работает не правильно..
function canplay(){
if (soundArray[nowItem] !== undefined){
console.log('current audio: '+nowItem);
new Audio(soundArray[nowItem]).addEventListener('loadstart', function () {
console.log(soundArray[nowItem]);
delete soundArray[nowItem];
console.log(soundArray[nowItem]);
this.addEventListener('loadeddata', function (){
if (first){
first = false;
this.currentTime = 0;
} else
{
this.currentTime = 0.8;
}
this.addEventListener('timeupdate', function () {
if (this.currentTime>2.8 && this.currentTime<3){
nowItem++;
//console.log('next audio');
}
});
console.log("playing..");
this.play();
});
});
}
}