参考博客:
每个ADTS frame之间通过0xFFF(二进制“111111111111”)分割。

上图为ACC数据:蓝框为需要分析数据
1. 红框为分割符-----0xFFF
2. 紧跟着的50是一个16进制的表示-------0x50,其二进制位1010000,通过下面的计算取得ACC的profile
// 0xC0------11000000
// 假如, aacframe[2]=0x50;
// 取前两位,eg 01010000 & 0xC0 =01000000
unsigned char profile=aacframe[2]&0xC0;
// 右移6位,01000000 >> 6 =01(转换为10进制为1)
profile=profile>>6;
switch(profile){
case 0: sprintf(profile_str,"Main");break;
case 1: sprintf(profile_str,"LC");break;
case 2: sprintf(profile_str,"SSR");break;
default:sprintf(profile_str,"unknown");break;
}
3. 同上面算法,取0x50的中间4

本文详细解析AAC音频码流的结构,通过实例演示如何从ADTS帧中获取音频的profile、采样率及帧长度等关键参数。适用于音视频处理、音频编解码等领域,帮助读者理解AAC音频数据的组织方式。
最低0.47元/天 解锁文章
837

被折叠的 条评论
为什么被折叠?



