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,所以我想我必须使用不推荐使用的函数集(在本文中称为使用缓冲区数组的同步处理(不推荐))。这是正确的前进方向吗

我看到的另一个问题是如何将编码的缓冲区保存到文件中