我正在为我的wifi扬声器进行音量控制。我需要处理原始PCM数据字节数组来调整音量。但我的代码给了我很多噪音。 以下是我的代码:
for (int i = 0; i < split.length; i+=2) {
short audioSample = (short) (((split[i+1] & 0xff) << 8) | (split[i] & 0xff));
audioSample = (short) (audioSample * 1 * equal.vol);
split[i] = (byte) audioSample;
split[i+1] = (byte) (audioSample >> 8);
}
split是原始数据字节数组
我的音频资料: 采样率为22.05K,每个采样16位
答案 0 :(得分:2)
equal.vol
声明为浮点类型,例如float
或double
。equal.vol
&lt; = 1;也就是说,确保你只是衰减而不是放大。如果要放大,则需要将乘法结果钳位到样本范围内,即-32768到+32767。但是,当你以这种方式放大时,你的声音可能会受到削波。