AudioContext.decodeAudioData() - декодує аудіо дані в ArrayBuffer.
AudioContext.decodeAudioData(ArrayBuffer, successCallback, errorCallback);
AudioContext - AudioContext.
ArrayBuffer - масив ArrayBuffer який містить звукові дані які потрібно декодувати.
successCallback - функція яка буде виконана коли декодування буде успішно завершено. Перший параметр функції є декодовані дані AudioBuffer.
errorCallback - функція яка буде виконана коли виникне помилка при декодуванні. Перший параметр функції є помилка Error.
decodeAudioData() метод об'єкта AudioContext який декодує медіа дані в ArrayBuffer.
Аудіо дані отримують за допомогою AJAX, FileReader.
Для відтворення декодованих даних використовуйте AudioBufferSourceNode.
var ajax=new XMLHttpRequest();
var audio=new AudioContext();
var source=audio.createBufferSource();
source.connect(audio.destination);
ajax.open('get', '/dani/test.ogg', true);
ajax.responseType='arraybuffer';
ajax.onload=function(){
audio.decodeAudioData(this.response, function(decodedata){
source.buffer=decodedata;
source.start(); //починаємо відтворення
}, function(eror){alert('Виникла помилка при декодуванні: '+eror.message);});
};
ajax.send(null);
<input id="test" type="file" accept=".mp3,.ogg">
document.getElementById("test").onchange=function(){
if( this.files[0]!=undefined){
var f= new FileReader();
f.onload=function(){
var audio=new AudioContext();
var source=audio.createBufferSource();
source.connect(audio.destination);
audio.decodeAudioData(this.result,
function(decodedata){
source.buffer=decodedata;
source.start();
}, function(eror){alert('Виникла помилка при декодуванні: '+eror.message);}
);
};
f.readAsArrayBuffer(this.files[0]);
}
else alert("виберіть файл!");
}