Android PCM 16位记录字节vs短路

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

我正在尝试在Android上录制音频。我发现了不同的例子,但有一件事我不明白

有些人写
短片
,有些人写
字节

下面是一个将
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
    支持,对短数组进行编码
  • 您只需自己将这些短代码编码为字节,这就是您发布的代码所做的