У меня есть постоянный источник данных формы сигнала, который дает мне секунду одноканального звука с постоянной частотой выборки каждую секунду. В настоящее время я играю их так:WebAudio - бесшовно воспроизводящая последовательность звуковых фрагментов
// data : Float32Array, context: AudioContext
function audioChunkReceived (context, data, sample_rate) {
var audioBuffer = context.createBuffer(2, data.length, sample_rate);
audioBuffer.getChannelData(0).set(data);
var source = context.createBufferSource(); // creates a sound source
source.buffer = audioBuffer;
source.connect(context.destination);
source.start(0);
}
Audio играет хорошо, но с заметными паузами между последовательными кусками воспроизводимого (как и ожидалось). Я бы хотел избавиться от них, и я понимаю, что мне нужно будет ввести какую-то буферизацию.
Вопросы:
- Есть библиотека JS, которая может сделать это для меня? (Я в процессе поиска через них)
- Если нет библиотеки, которая может это сделать, как мне это сделать самому?
- Обнаружение, когда воспроизведение завершено в одном источнике, и есть ли другой, готовый немедленно воспроизвести его? (с использованием обработчика событий AudioBufferSourceNode.onended)
- Создайте один большой буфер и скопируйте мои звуковые фрагменты один за другим и управляйте потоком с помощью функции AudioBufferSourceNode.start AudioBufferSourceNode.stop?
- Что-то другое?
Найдено проекта: https://github.com/scottstensland/websockets-streaming-audio, какие потоки осциллограмм файлы через WebSockets и звучит прилично : http://websockets-streaming-audio.herokuapp.com/ – xmichaelx