我正在尝试在Android上录制音频。我找到了不同的例子,但有一点我不明白。
有些人写shorts
,其他bytes
。
以下是将short
转换为bytes
的示例。
private byte[] short2byte(short[] sData) {
int shortArrsize = sData.length;
byte[] bytes = new byte[shortArrsize * 2];
for (int i = 0; i < shortArrsize; i++) {
bytes[i * 2] = (byte) (sData[i] & 0x00FF);
bytes[(i * 2) + 1] = (byte) (sData[i] >> 8);
sData[i] = 0;
}
return bytes;
}
这样做的目的是什么?为什么不直接将shorts
写入文件,就我们使用PCM 16bit
而言。
请从音频角度解释此事。
由于
答案 0 :(得分:1)
在Java中,你不能直接写短片&#34;因为没有API采用短数组并将其写入文件。您只能将字节数组写入二进制文件。主要问题是字节序(LSB优先或MSB优先):没有标准的字节序。
因此,您有两种选择:
ShortBuffer
支持的小端ByteBuffer
来编码短数组