Android 将原始PCM位保存到压缩音频AAC/AMR文件中
我正在编写一个应用程序,使用Android 将原始PCM位保存到压缩音频AAC/AMR文件中,android,encoding,audiorecord,Android,Encoding,Audiorecord,我正在编写一个应用程序,使用AudioRecord录制用户音频。我正在将原始PCM位保存到short[]数组中(因为我的编码是16位PCM)。录制完成后,我想压缩这些音频数据并将其保存到文件中。我想知道Android SDK中是否有一些高级API可以帮助我实现这一点 目前,我正在尝试使用MediaCodec并将其保存为AAC格式。首先,我使用以下代码使用原始数据创建一个ByteBuffer // allocating the array with length 2 * length of the
AudioRecord
录制用户音频。我正在将原始PCM位保存到short[]
数组中(因为我的编码是16位PCM)。录制完成后,我想压缩这些音频数据并将其保存到文件中。我想知道Android SDK中是否有一些高级API可以帮助我实现这一点
目前,我正在尝试使用MediaCodec
并将其保存为AAC格式。首先,我使用以下代码使用原始数据创建一个ByteBuffer
// allocating the array with length 2 * length of the byte array because we are creating a
// ByteBuffer.
final ByteBuffer byteBuffer = ByteBuffer.allocate(mDataArray.length * 2);
// putting value in the ByteBuffer ..
for(short elem : mDataArray) {
byteBuffer.putShort(elem);
}
因为我想支持API级别16,所以我想我必须使用不推荐使用的函数集(在本文中称为使用缓冲区数组的同步处理(不推荐))。这是正确的前进方向吗
我看到的另一个问题是如何将编码的缓冲区保存到文件中