Как получить данные канала напрямую из ArrayBuffer без Web Audio API? - PullRequest
0 голосов
/ 27 сентября 2019

В моем веб-приложении я использую HTML5 Audio для воспроизведения аудио.Но так как мне нужны channelData аудиофайла, мне нужно выполнить следующие шаги при запуске приложения:

  1. Декодировать ArrayBuffer в AudioBuffer с помощью API Web Audio
  2. Вызвать audioBuffer.getChannelData(0)
  3. Обработка channelData и выгрузка audioBuffer
  4. С помощью channelData я могу нарисовать аудиосигнал на холсте

Есть ли способ, позволяющий рассчитатьданные канала из необработанных данных (ArrayBuffer)?Мое приложение поддерживает только WAVE с 16-битным PCM.

Я знаю структуру формата WAVE и как читать значения из необработанных данных через Javascript, но я не понимаю, как getChannelData() вычисляет его значения.Я ничего не нашел в Интернете.

1 Ответ

1 голос
/ 27 сентября 2019

В getChannelData нет ничего волшебного;он просто возвращает данные из AudioBuffer.Если у вас есть 16-битный PCM WAV-файл, вы легко декодируете его в 16-битные значения PCM в Javascript.Чтобы получить то, что произвел бы getChannelData, возьмите это 16-битное значение и разделите на 32768, чтобы получить значение с плавающей запятой в диапазоне от -1 до 1.

...