Получить все образцы из AudioData / Web Audio API - PullRequest
1 голос
/ 03 марта 2012

Я пытаюсь создать прокручиваемое отображение формы волны для звуковой дорожки видео, поэтому мне нужно, чтобы все сэмплы для всей аудиодорожки были доступны одновременно, и я действительно предпочел бы не делать AJAXзапросить двоичные мультимедийные данные только для того, чтобы получить их в arrayBuffer, который может использовать JavaScript.Есть ли какой-нибудь способ с помощью Mozilla AudioData или Webkit API для веб-аудио получить все сэмплы для звуковой дорожки сразу после ее загрузки, а не просто получать потоковые фрагменты во время воспроизведения?

1 Ответ

0 голосов
/ 26 сентября 2013

Вы можете использовать buffer.getChannelData(channel number), чтобы получить значения для каждого семпла в буфере в виде массива.

Пример:

var request = new XMLHttpRequest();
request.open('GET', source, true);
request.responseType = "arraybuffer";
request.onload = function () {
    context.decodeAudioData(request.response, function (e) {
        var buffer = e;
        //gets the values for channel 1
        var sampledata = buffer.getChannelData(0);        
    });
};
request.send();
...