音频数据字节数组音量调整java

时间:2014-05-02 01:27:18

标签: java

我正在为我的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位

1 个答案:

答案 0 :(得分:2)

  1. 确保将equal.vol声明为浮点类型,例如floatdouble
  2. 确保您的样本数据实际上是小端。
  3. 确保0&lt; = equal.vol&lt; = 1;也就是说,确保你只是衰减而不是放大。如果要放大,则需要将乘法结果钳位到样本范围内,即-32768到+32767。但是,当你以这种方式放大时,你的声音可能会受到削波。