gpt4 book ai didi

android - PCM 16bit 记录字节 vs 短

转载 作者:行者123 更新时间:2023-11-30 00:16:32 27 4
gpt4 key购买 nike

我正在尝试在 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;

}

这样做的目的是什么?就我们使用的 PCM 16bit 而言,为什么不直接将 shorts 写入文件。

请从音频的角度解释一下这件事。

谢谢

最佳答案

在 Java 中,您不能“直接编写 shorts”,因为没有采用 short 数组并将其写入文件的 API。您只能将字节数组写入二进制文件。主要问题是字节序(LSB 优先或 MSB 优先):没有标准的字节序。

因此你有两个选择:

  • 使用由 ByteBuffer 支持的小端 ShortBuffer 对短数组进行编码
  • 自己将短裤编码为字节,这就是您发布的代码所做的。

关于android - PCM 16bit 记录字节 vs 短,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47165391/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com