@@ -15,8 +15,6 @@ public class PCMEncoder {
1515 private static final int KEY_BIT_RATE = 96000 ;
1616 //读取数据的最大字节数
1717 private static final int KEY_MAX_INPUT_SIZE = 1024 * 1024 ;
18- //声道数
19- private static final int CHANNEL_COUNT = 2 ;
2018 public static final int AAC_FORMAT = 0 ;
2119 public static final int G711_FORMAT = 1 ;
2220 private MediaCodec mediaCodec ;
@@ -26,6 +24,8 @@ public class PCMEncoder {
2624 private EncoderListener encoderListener ;
2725 private int encodeType = 0 ;
2826 private int sampleRate = 0 ;
27+ //声道数
28+ private int channelCount = 0 ;
2929
3030 // 采样频率对照表
3131 private static Map <Integer , Integer > samplingFrequencyIndexMap = new HashMap <>();
@@ -45,10 +45,11 @@ public class PCMEncoder {
4545 samplingFrequencyIndexMap .put (8000 , 11 );
4646 }
4747
48- public PCMEncoder (int sampleRate , EncoderListener encoderListener , int encodeFormat ) {
48+ public PCMEncoder (int sampleRate , int channelCount , EncoderListener encoderListener , int encodeFormat ) {
4949 this .encoderListener = encoderListener ;
5050 this .encodeType = encodeFormat ;
5151 this .sampleRate = sampleRate ;
52+ this .channelCount = channelCount ;
5253 init ();
5354 }
5455
@@ -59,7 +60,7 @@ private void init() {
5960 try {
6061 //参数对应-> mime type、采样率、声道数
6162 MediaFormat encodeFormat = MediaFormat .createAudioFormat (MediaFormat .MIMETYPE_AUDIO_AAC ,
62- sampleRate , CHANNEL_COUNT );
63+ sampleRate , channelCount );
6364 //比特率
6465 encodeFormat .setInteger (MediaFormat .KEY_BIT_RATE , KEY_BIT_RATE );
6566 encodeFormat .setInteger (MediaFormat .KEY_AAC_PROFILE , MediaCodecInfo .CodecProfileLevel .AACObjectLC );
@@ -130,7 +131,7 @@ public void encodeData(byte[] data) {
130131 */
131132 private void addADTStoPacket (byte [] packet , int packetLen ) {
132133 int profile = 2 ; // AAC LC
133- int chanCfg = 2 ; // CPE
134+ int chanCfg = channelCount ;
134135 int freqIdx = samplingFrequencyIndexMap .get (sampleRate );
135136 // filled in ADTS data
136137 packet [0 ] = (byte ) 0xFF ;
0 commit comments