4

我正在开发一个记录音频的android应用程序。为了获得最佳音频质量,最好short在阅读时使用 s 的缓冲区?

//aRecorder.read(shortBuffer, 0, shortBuffer.length);
aRecorder.read(byteBuffer, 0, byteBuffer.length);

使用short[]与使用和考虑来自 2和)byte[]的样本不同吗?如果我使用,我必须将其转换为将其写入文件。bytes(byteBuf[i]byteBuf[i+1]short[]ByteBuffer

我问这个是因为我想知道如果我切换到shorts 的缓冲区,我的录音会更准确吗?例如,包含与和shortBuffer[0]相同的信息?byteBuffer[0]byteBuffer[1]

录音可以是 16 位 PCM 或 8 位 PCM(用户可以选择采样率、通道数、PCM 16 或 8 等)

我必须提到输出文件将采用 WAV 格式。

4

1 回答 1

5

使用ShortByte缓冲区没有区别,它只是相同基础数据的两种表示。

我能想到的唯一区别是您限制了在记录期间如何访问数据的选项,因为简而言之,您的最小数据表示将是 16 位(短尺寸),但是您可以再次 xAnd 短的任何部分对象以获取其字节之一。

如果您正在进行任何类型的实时音频处理,您最好使用字节来轻松进行数据小型化。

于 2013-05-01T17:49:42.913 回答