立体声pcm数据结构
Android录音默认录制生成的是pcm文件,假设咱们设置采样率为16K,录音类型为AudioFormat.CHANNEL_IN_STEREO(立体声录音),数据类型为AudioFormat.ENCODING_PCM_16BIT。
则pcm文件的数据结构大体为2byte左声道、2byte右声道、2byte左声道、2byte右声道….数据结构
立体声拆分
如今须要把它拆分红左右声道来进行其余处理,能够经过以下方式来实现:.net
private void splitStereoPcm(byte[] data) {
int monoLength = data.length / 2;
byte[] leftData = new byte[monoLength];
byte[] rightData = new byte[monoLength];
for (int i = 0; i < monoLength; i++) {
if (i % 2 == 0) {
System.arraycopy(data, i * 2, leftData, i, 2);
} else {
System.arraycopy(data, i * 2, rightData, i - 1, 2);
}
}
//TODO 使用leftData、rightData 进行其余处理
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
左右声道反转
假如咱们须要将左、右声道反转,也很简单,具体的代码以下:orm
/**
* 左右声道进行反转
* @param data
* @return
* 反转后的数据
*/
private byte[] getReversedData(byte[] data) {
byte[] reversed = new byte[data.length];
for (int i = 0; i < data.length - 3; i = i + 4) {
reversed[i] = data[i+2];
reversed[i+1] = data[i+3];
reversed[i+2] = data[i];
reversed[i+3] = data[i+1];
}
return reversed;
}
get