在rtsp和sip协议中,生成sdp信息时经常要计算aac config字段。本文主要讲述aac config字段的计算方法。
aac每帧包含1024sample,每帧的时间间隔为1024/samplerate。
static unsigned const samplingFrequencyTable[16] = {
96000, 88200, 64000, 48000,
44100, 32000, 24000, 22050,
16000, 12000, 11025, 8000,
7350, 0, 0, 0
};
unsigned char audioSpecificConfig[2];
u_int8_t const audioObjectType = profile + 1;
audioSpecificConfig[0] = (audioObjectType<<3) | (samplingFrequencyIndex>>1);
audioSpecificConfig[1] = (samplingFrequencyIndex<<7) | (channelConfiguration<<3);
sprintf(fConfigStr, "%02X%02x", audioSpecificConfig[0], audioSpecificConfig[1]);
下面是一些常用的aac config字段:
low profile
8k 单通道 1588 双声道 1590
16k 单通道 1408 双声道 1410
32k 单通道 1288 双通道 1290
24K 单通道 1308 双声道 1310
22.05K 单声道 1388 双声道 1390
44.1k 单声道 1208 双声道 1210
main profile
16k采样率 单通道为 0C08
latm config字段生成:
a=fmtp:96 profile-level-id=1; cpresent=0; config=400027103FC0
config 400027103FC0 前面的4000和后面的3FC0不要变,中间的2710是由前面讲述的aac config*2,
2710对应aac config中的1388,22050Hz,单通道