2017-02-03 8 views
2

Как может OfflineAudioContext.startRendering() вывести AudioBuffer, который содержит битовую глубину моего выбора (16 бит или 24 бит)? Я знаю, что я могу легко установить частоту дискретизации с AudioContext.sampleRate, но как установить глубину бит?Как визуализировать в определенной битовой глубине?

Мое понимание обработки звука довольно ограничено, поэтому, возможно, это не так просто, как я думаю.

Edit # 1:

На самом деле, AudioContext.sampleRate это только для чтения, так что если у вас есть идея о том, как установить частоту дискретизации на выходе, это было бы слишком большим.

Edit # 2:

Я предполагаю, что частота дискретизации вставляется после числа каналов в кодированном формате WAV (в DataView)

ответ

1

Вы не можете сделать это непосредственно, потому что WebAudio работает только с плавающей запятой. Вы должны сделать это сами. В основном выведите выходные данные из автономного контекста и умножьте каждый образец на 32768 (16 бит) или 8388608 (24 бит) и округлите до целого. Это предполагает, что вывод из контекста находится в диапазоне от -1 до 1. Если нет, вам придется делать дополнительное масштабирование. И, наконец, вы можете разделить окончательный результат на 32768 (8388608), чтобы получить числа с плавающей запятой. Это зависит от конечного приложения.

+0

Хорошо, спасибо. Поэтому я умножаю каждое значение 'audioBuffer.getChannelData (0 | 1)' на 32768 или 8388608, и это все, мой последний .wav-файл будет иметь соответствующую битовую глубину? И я не уверен, что получаю, почему мне нужно разделить окончательный результат с 32768 или 8388608 ... Я не собираюсь возвращать исходные значения? – maximedupre

+0

Во-первых, при создании автономного аудиоконтекста вам необходимо указать частоту дискретизации. –

+0

В настоящее время в WebAudio нет поддержки для создания WAV-файла из AudioBuffer. Вам нужно будет найти библиотеку, чтобы сделать это для вас. (Или научитесь делать это самостоятельно. Файлы WAV довольно просты.) –

 Смежные вопросы

  • Нет связанных вопросов^_^