这是我的第一篇文章,所以我希望有人可以帮助!
我正在使用 AudioFileReadPackets 函数读取音频数据(在 CoreAudio 中),此代码工作正常并将 16 位 PCM 值加载到缓冲区中。
第一个样本值是:'65491'(此音频开头无声)。我知道这是一个无符号整数,所以我的问题是,如何将此值转换为 -1 到 1 的范围。
目前我将样本值除以 32768.0 成一个浮点变量,就像这样......
for (UInt32 i = 0; i < packetCount; i++){
sample = *(audioData + i);
//turn it into the range -1.0 - 1.0
monoFloatDataLeft[i] = (float)sample / 32768.0;
}
但是,对于上面给出的示例(作为示例),这会导致输出“1.998626709”不为零(因为它应该是静音)?
话虽如此,当我稍后在文件中查看样本时,我知道它的值在“0.3”标记附近,算法的结果出现在“0.311584473”,我认为这是正确的?
那么为什么第一个样本没有被读取为零,正如我所知道的那样?