В проекте, над которым я работаю, у нас есть около 30 звуковых дорожек, где мы применяем фильтры и воспроизводим аудио.Первоначально это было сделано на стороне сервера и возвращало строку base64 для каждой дорожки, которую я затем загрузил с помощью new Audio()
.
Это работало хорошо, если у вас была быстрая скорость интернета, но на медленных скоростях возвращение треков с сервера могло занять до часа, поэтому теперь мы применяем фильтры на стороне клиента.
Применение фильтров не проблема, но я стараюсь не переписывать весь мой алгоритм воспроизведения (это гораздо более сложный процесс, чем просто пауза, воспроизведение, остановка) и мне интересно, могу ли я кодировать AudioContext
вBase64.
Я пытался создать новый Audio
и передать AudioContext
, создать новый Audio
и передать AudioBuffer
и что-то на основе в этом примере .Но ничего, если это работает, и я не могу найти никаких примеров того, что я пытаюсь сделать в Интернете.
Если бы кто-то мог взглянуть на мой код и помочь мне, я был бы очень признателен.Заранее спасибо!
var audioCtx = new AudioContext();
var source = audioCtx.createBufferSource();
var request = new XMLHttpRequest();
request.open("GET", "/path/to/audio", true);
request.responseType = "arraybuffer";
request.onload = function () {
audioCtx.decodeAudioData(request.response, function (buffer) {
source.buffer = buffer;
// Apply filters to the audio
// Here I would like to convert the audio to Base64
callback(source);
}, function (error) {
console.error("decodeAudioData error", error);
});
};
request.send();