Показать сообщение отдельно
  #14 (permalink)  
Старый 12.12.2019, 08:24
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Опан1,
Я имел в виду, что для decodeAudioData не нужно знать sampleRate и numberOfChannels, чтобы получить AudioBuffer, просто передается ArrayBuffer всего файла и всё, а для createBuffer нужно знать, потому что, если использовать дефолтный sampleRate, то у разных пользователей он может оказаться разным и получится, например, разная продолжительность:
// Известна только длина массива
var length = 44100 * 100;

// Пользователь 1
var ctx1 = new AudioContext({ sampleRate: 44100 });

// Пользователь 2
var ctx2 = new AudioContext({ sampleRate: 48000 });

// Допустим это моно (непонятно откуда это известно):
var buf1 = ctx1.createBuffer(1, length, ctx1.sampleRate);
var buf2 = ctx2.createBuffer(1, length, ctx2.sampleRate);

// Проверим утверждение
console.assert(buf1.duration == buf2.duration, '%s != %s', buf1.duration, buf2.duration);
Ответить с цитированием