/* 获取ACC的ADTS头 * @param profile: 0:Main profile 1:AAC LC 2:SSR 3 reserved * @param freqIdx: 0:96000 HZ 1:88200 HZ 2:64000HZ 3:48000HZ 4:44100HZ 5:32000HZ 6:24000HZ 7:22050HZ 8:16000HZ 9:12000HZ * @param chanCfg: 0:Defined in AOT Specifc Config 1: 1 channel: front-center 2: 2 channels: front-left, front-right * @param aacDataLen aac裸流的长度 * 更多参数可取值参考 https://blog.csdn.net/tantion/article/details/82743942 */ public static ByteBuffer getADTSHeader(int profile, int freqIdx, int chanCfg, int aacDataLen) { WTLog.i(TAG, String.format(Locale.getDefault(), "getADTSHeader profile:%d freqIdx:%d chanCfg:%d aacDataLen:%d", profile, freqIdx, chanCfg, aacDataLen)); int dataLen = aacDataLen + 7; // AAC裸帧的数据长度加上ADTS的头长度 ByteBuffer byteBuffer = ByteBuffer.allocate(7); byte[] buffer = byteBuffer.array(); buffer[0] = (byte) 0xFF; buffer[1] = (byte) 0xF1; buffer[2] = (byte) ((profile << 6) + (freqIdx << 2) + (chanCfg >> 2)); buffer[3] = (byte) (((chanCfg & 3) << 6) + (dataLen >> 11)); buffer[4] = (byte) ((dataLen & 0x7FF) >> 3); buffer[5] = (byte) (((dataLen & 7) << 5) + 0x1F); buffer[6] = (byte) 0xFC; return byteBuffer; }
AAC裸流添加ADTA头- Java版
最新推荐文章于 2024-09-18 00:00:00 发布