我很困惑。我需要在Android中录制来自MIC的声音,所以我使用了以下代码:
recorder = new AudioRecord(AudioSource.MIC, 44100,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT, N);
buffer = new byte[N];
//...
recorder.read(buffer, 0, N);
我们知道,一个字节数组可以存储-128到+128之间的值,而16Bit声音需要更多的存储空间(例如short和int)但令人惊讶的是Java和Android有一个record
方法可以保存记录数据到字节数组。
怎么可能?我错过了什么?
答案 0 :(得分:0)
您认为byte是一个镜头整数。它只有8位。你需要存储1000111011100000(16位)?第一个字节是10001110,第二个字节是11100000.您可以将这些位解释为数字与此处无关。更一般地说,byte []通常是处理二进制“原始数据”的方式(让它成为音频流或加密内容或其他任何你喜欢的比特流)。
如果你有16位的n个“字”,那么你将需要2n个字节来存储它。字节0将是字0的较低(或更高)部分,字节1将是字0的其余部分,字节0将是字1的较低(或更高)部分... - SJuan76 11小时前