如何在特定的位深度渲染?

时间:2017-02-03 15:36:22

标签: web-audio audio-processing web-audio-api audiocontext

OfflineAudioContext.startRendering()如何输出包含我选择的位深度(16位或24位)的AudioBuffer?我知道我可以使用AudioContext.sampleRate轻松设置输出的采样率,但如何设置位深度?

我对音频处理的理解非常有限,所以也许它并不像我想象的那么容易。

编辑#1:

实际上,AudioContext.sampleRate是只读的,所以如果您对如何设置输出的采样率有所了解,那也会很棒。

编辑#2:

我想在编码WAV中的通道数之后插入采样率(在DataView中)

1 个答案:

答案 0 :(得分:3)

您无法直接执行此操作,因为WebAudio仅适用于浮点值。你必须自己做。基本上从离线上下文中获取输出,并将每个样本乘以32768(16位)或8388608(24位)并舍入为整数。这假设上下文的输出位于-1到1的范围内。如果不是,则必须进行额外的缩放。最后,您可能希望将最终结果除以32768(8388608)以获得浮点数。这取决于最终的申请是什么。