我们可以用AudioRecoder对音频进行采集,采集的音频是pcm编码的原始数据,通过MediaCodec编码成aac音频,这里要注意的是编码出来是aac裸流,是无法播放的,要播放的话必须在每一帧音频前加adts头,adts头包含音频数据的采样率,声道,帧长度等信息,必须有adts头才可以正确解码。还有就是编码时出来的第一帧是一个两个字节的数据,这个数据也是比较特殊的需要用来在解码时配置解码器,才可以正确解码。
/**
* @author zhangsutao
* @file AudioCodec.java
* @brief 音频编解码器基类
* @date 2016/8/7
*/
public interface AudioCodec {
String MIME_TYPE="audio/mp4a-latm";
int KEY_CHANNEL_COUNT=2;
int KEY_SAMPLE_RATE=44100;
int KEY_BIT_RATE=64000;
int KEY_AAC_PROFILE= MediaCodecInfo.CodecProfileLevel.AACObjectLC;
int WAIT_TIME=10000;
int AUDIO_FORMAT = AudioFormat.ENCODING_PCM_16BIT;
int CHANNEL_MODE = AudioFormat.CHANNEL_IN_STEREO;
int BUFFFER_SIZE=2048;
}
/**
* @author