我正在尝试将HTML5音频文本的PCM输出(例如buffer.getChannelData(0)
,...)转换为" FLAC__stream_encoder_process_interleaved"
奇怪的是FLAC需要数据作为int32缓冲区(const FLAC__int32 buffer[]
)但是audiocontext的输出是规范化的float32数组。我不确定如何将音频上下文的规范化缓冲区转换为FLAC所需的格式。
有人可以解释为什么FLAC需要int32中的缓冲区而不是常见的float32数组吗?
答案 0 :(得分:0)
好。我前段时间写过一个C#FLAC解码器,因为文档没有涵盖eveything,我不得不阅读libFlac代码的一些部分。 Int32经常在内部使用。除了表现改进之外,我不知道一个很好的理由。 int32比使用浮点数快。但是如果你有ieeefloat样本,你可以简单地将它们乘以[(2 ^ BitsPerSample)/ 2]来得到你的整数。为什么输出是float32。我不知道。总而言之,该库的代码非常奇怪,并且通常很难解释开发人员的概念。