音频AAC csd_0 数据详解
原文链接:https://blog.csdn.net/chailongger/article/details/84378721
byte[] data = new byte[]{(byte) 0x14, (byte) 0x08};
ByteBuffer csd_0 = ByteBuffer.wrap(data);
//ADT头的解码信息
mediaFormat.setByteBuffer("csd-0", csd_0);
其中的data就是解码AAC的关键信息,该信息的格式:
AAC Profile 5bits | 采样率 4bits | 声道数 4bits | 其他 3bits |
AAC Main 0x01
AAC LC 0x02
AAC SSR 0x03
采样率的参数为:
0x00 96000
0x01 88200
0x02 64000
0x03 48000
0x04 44100
0x05 32000
0x06 24000
0x07 22050
0x08 16000
0x09 12000
0x0A 11025
0x0B 8000
0x0C reserved
0x0D reserved
0x0E reserved
0x0F escape value
声道数:
0x00 - defined in audioDecderSpecificConfig
0x01 单声道(center front speaker)
0x02 双声道(left, right front speakers)
0x03 三声道(center, left, right front speakers)
0x04 四声道(center, left, right front speakers, rear surround speakers)
0x05 五声道(center, left, right front speakers, left surround, right surround rear speakers)
0x06 5.1声道(center, left, right front speakers, left surround, right surround rear speakers, front low frequency effects speaker)
0x07 7.1声道(center, left, right center front speakers, left, right outside front speakers, left surround, right surround rear speakers, front low frequency effects speaker)
0x08-0x0F - reserved
我的音频数据是 AAC-LC ,16000,单声道 ,参数分别是:0X02 0X08 0X01 0X00 取参数的后面两位,根据信息格式所占bit,换成二进制为:00010 1000 0001 000
将数字输入之后得到1408这个参数,再用两个byte来存放所以是0x14,0x08.
同理,如果是8K的采样率则换成:data = new byte[]{(byte) 0x15, (byte) 0x88};