我正在使用C#和Microsoft.Xna.Framework.Audio
;
我设法将一些音频录制到byte[]
数组中,然后我可以播放它。
音频以8 bit
无符号数据形式出现,我想将其转换为16 bit
单声道签名音频,以便我可以读取频率不是。
我已经阅读了一些用于声音采样的地方,您执行了Bitwise Operator Or
和shift the bits 8 places
。
我已按如下方式执行了代码;
soundArray[i] = (short)(buffer[i] | (buffer[i + 1] << 8));
我最终得到的是很多负面数据。
根据我的理解,它主要需要处于积极状态,并代表一波数据。
任何建议或帮助都非常感谢,
干杯。
MonkeyGuy。
答案 0 :(得分:1)
这将两个 8位无符号整数组合成一个16位有符号整数:
soundArray[i] = (short)(buffer[i] | (buffer[i + 1] << 8));
我认为您可能想要的是简单地将每个 8位无符号整数扩展为16位有符号整数:
soundArray[i] = (short)((buffer[i] - 128) << 8);
答案 1 :(得分:0)
您是否尝试在转换之前将字节转换为短?