AudioContext.decodeAudioData()

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("виберіть файл!"); }