Android PCM 16位记录字节vs短路
我正在尝试在Android上录制音频。我发现了不同的例子,但有一件事我不明白 有些人写Android PCM 16位记录字节vs短路,android,audio,signal-processing,pcm,Android,Audio,Signal Processing,Pcm,我正在尝试在Android上录制音频。我发现了不同的例子,但有一件事我不明白 有些人写短片,有些人写字节 下面是一个将short转换为字节的示例 private byte[] short2byte(short[] sData) { int shortArrsize = sData.length; byte[] bytes = new byte[shortArrsize * 2]; for (int i = 0; i < shortArr
短片
,有些人写字节
下面是一个将short
转换为字节的示例
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;
}
private byte[]short2byte(short[]sData){
int shortArrsize=sData.length;
字节[]字节=新字节[shortArrsize*2];
对于(int i=0;i>8);
sData[i]=0;
}
返回字节;
}
这样做的目的是什么?为什么不直接将shorts
写入文件,因为我们使用的是pcm16bit
请从音频的角度解释这件事
谢谢在Java中,您不能“直接编写短数组”,因为没有API可以接受短数组并将其写入文件。只能将字节数组写入二进制文件。主要问题是endian(LSB优先或MSB优先):没有标准的endian
因此,您有两种选择:
- 使用一个小的endian
ShortBuffer
,由ByteBuffer
支持,对短数组进行编码
- 您只需自己将这些短代码编码为字节,这就是您发布的代码所做的